Repository: glowbom/glowby Branch: main Commit: 84215fc03b8b Files: 339 Total size: 7.4 MB Directory structure: gitextract_gwqak2n4/ ├── .claude/ │ └── settings.json ├── .github/ │ └── workflows/ │ └── glowby-release.yml ├── .gitignore ├── AGENTS.md ├── CLI.md ├── LICENSE ├── README.md ├── backend/ │ ├── backend_info_page.go │ ├── claude_anthropic.go │ ├── codex_chatgpt.go │ ├── elevenlabs_audio.go │ ├── fireworks_fireworks.go │ ├── gemini_google.go │ ├── gemini_image.go │ ├── gemini_text_with_attachment.go │ ├── gemini_veo.go │ ├── gemini_video.go │ ├── go.mod │ ├── go.sum │ ├── gpt5_openai.go │ ├── gpt5_responses_api.go │ ├── grok_image.go │ ├── grok_video.go │ ├── grok_xai.go │ ├── handlers.go │ ├── main.go │ ├── model_helpers.go │ ├── o3_openai.go │ ├── openai_image.go │ ├── opencode_driver.go │ ├── opencode_folder_picker.go │ ├── opencode_media_postpass.go │ ├── opencode_project_history.go │ ├── opencode_project_open.go │ ├── opencode_zen.go │ ├── openrouter_openrouter.go │ ├── prompts.go │ ├── r1_groq.go │ ├── r1_ollama.go │ ├── search.go │ ├── security.go │ ├── stack_specs.go │ └── types.go ├── cli/ │ ├── code.go │ ├── doctor.go │ ├── go.mod │ ├── main.go │ └── version.go ├── docs/ │ ├── .dockerignore │ ├── .gitignore │ ├── Dockerfile │ ├── README.md │ ├── app/ │ │ ├── app.css │ │ ├── components/ │ │ │ ├── brand-title.tsx │ │ │ ├── docs-route-view.tsx │ │ │ ├── docs-search.tsx │ │ │ └── nav-actions.tsx │ │ ├── lib/ │ │ │ ├── docs.ts │ │ │ ├── meta.ts │ │ │ ├── site.ts │ │ │ ├── source.browser.tsx │ │ │ └── source.server.ts │ │ ├── root.tsx │ │ ├── routes/ │ │ │ ├── docs-page.tsx │ │ │ └── home.tsx │ │ └── routes.ts │ ├── content/ │ │ └── docs/ │ │ ├── desktop.mdx │ │ ├── glowbom.mdx │ │ ├── glowby-oss.mdx │ │ ├── index.mdx │ │ ├── meta.json │ │ └── quickstart.mdx │ ├── package.json │ ├── react-router.config.ts │ ├── server.log │ ├── source.config.ts │ ├── test-browser.js │ ├── test-search.js │ ├── test.ts │ ├── tsconfig.json │ └── vite.config.ts ├── legacy/ │ ├── GlowbyGenius.md │ ├── README.md │ ├── app/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── .vscode/ │ │ │ └── launch.json │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── android/ │ │ │ ├── .gitignore │ │ │ ├── app/ │ │ │ │ ├── build.gradle │ │ │ │ └── src/ │ │ │ │ ├── debug/ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── main/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ ├── kotlin/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── example/ │ │ │ │ │ │ └── pwa/ │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ │ └── res/ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ └── values/ │ │ │ │ │ └── styles.xml │ │ │ │ └── profile/ │ │ │ │ └── AndroidManifest.xml │ │ │ ├── build.gradle │ │ │ ├── gradle/ │ │ │ │ └── wrapper/ │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradle.properties │ │ │ └── settings.gradle │ │ ├── assets/ │ │ │ ├── talk.glowbom │ │ │ ├── test.html │ │ │ └── website.html │ │ ├── ios/ │ │ │ ├── .gitignore │ │ │ ├── Flutter/ │ │ │ │ ├── .last_build_id │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ ├── Debug.xcconfig │ │ │ │ └── Release.xcconfig │ │ │ ├── Podfile │ │ │ ├── Runner/ │ │ │ │ ├── AppDelegate.swift │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── LaunchImage.imageset/ │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── README.md │ │ │ │ ├── Base.lproj/ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ └── Main.storyboard │ │ │ │ ├── Glowby.swift │ │ │ │ ├── Info.plist │ │ │ │ └── Runner-Bridging-Header.h │ │ │ ├── Runner.xcodeproj/ │ │ │ │ ├── project.pbxproj │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ └── xcshareddata/ │ │ │ │ └── xcschemes/ │ │ │ │ └── Runner.xcscheme │ │ │ └── Runner.xcworkspace/ │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata/ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ │ ├── lib/ │ │ │ ├── main.dart │ │ │ ├── models/ │ │ │ │ └── ai.dart │ │ │ ├── services/ │ │ │ │ ├── hugging_face_api.dart │ │ │ │ ├── openai_api.dart │ │ │ │ └── pulze_ai_api.dart │ │ │ ├── utils/ │ │ │ │ ├── color_utils.dart │ │ │ │ ├── text_to_speech.dart │ │ │ │ ├── timestamp.dart │ │ │ │ ├── utils.dart │ │ │ │ ├── utils_desktop.dart │ │ │ │ ├── utils_stub.dart │ │ │ │ └── utils_web.dart │ │ │ └── views/ │ │ │ ├── dialogs/ │ │ │ │ ├── ai_error_dialog.dart │ │ │ │ ├── ai_settings_dialog.dart │ │ │ │ └── api_key_dialog.dart │ │ │ ├── html/ │ │ │ │ ├── html_view_screen.dart │ │ │ │ ├── html_view_screen_desktop.dart │ │ │ │ ├── html_view_screen_interface.dart │ │ │ │ ├── html_view_screen_mobile.dart │ │ │ │ ├── html_view_screen_stub.dart │ │ │ │ └── html_view_screen_web.dart │ │ │ ├── screens/ │ │ │ │ ├── chat_screen.dart │ │ │ │ ├── global_settings.dart │ │ │ │ ├── magical_loading_view.dart │ │ │ │ └── talk_screen.dart │ │ │ └── widgets/ │ │ │ ├── message.dart │ │ │ ├── message_bubble.dart │ │ │ ├── messages.dart │ │ │ ├── new_message.dart │ │ │ ├── paint_window.dart │ │ │ └── tasks_view.dart │ │ ├── linux/ │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── flutter/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── generated_plugin_registrant.cc │ │ │ │ ├── generated_plugin_registrant.h │ │ │ │ └── generated_plugins.cmake │ │ │ ├── main.cc │ │ │ ├── my_application.cc │ │ │ └── my_application.h │ │ ├── macos/ │ │ │ ├── .gitignore │ │ │ ├── Flutter/ │ │ │ │ ├── Flutter-Debug.xcconfig │ │ │ │ ├── Flutter-Release.xcconfig │ │ │ │ └── GeneratedPluginRegistrant.swift │ │ │ ├── Podfile │ │ │ ├── Runner/ │ │ │ │ ├── AppDelegate.swift │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── Base.lproj/ │ │ │ │ │ └── MainMenu.xib │ │ │ │ ├── Configs/ │ │ │ │ │ ├── AppInfo.xcconfig │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ ├── Release.xcconfig │ │ │ │ │ └── Warnings.xcconfig │ │ │ │ ├── DebugProfile.entitlements │ │ │ │ ├── Info.plist │ │ │ │ ├── MainFlutterWindow.swift │ │ │ │ └── Release.entitlements │ │ │ ├── Runner.xcodeproj/ │ │ │ │ ├── project.pbxproj │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ └── xcshareddata/ │ │ │ │ └── xcschemes/ │ │ │ │ └── Runner.xcscheme │ │ │ ├── Runner.xcworkspace/ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata/ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── RunnerTests/ │ │ │ └── RunnerTests.swift │ │ ├── pubspec.yaml │ │ ├── web/ │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── tv.js │ │ └── windows/ │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── flutter/ │ │ │ ├── CMakeLists.txt │ │ │ ├── generated_plugin_registrant.cc │ │ │ ├── generated_plugin_registrant.h │ │ │ └── generated_plugins.cmake │ │ └── runner/ │ │ ├── CMakeLists.txt │ │ ├── Runner.rc │ │ ├── flutter_window.cpp │ │ ├── flutter_window.h │ │ ├── main.cpp │ │ ├── resource.h │ │ ├── runner.exe.manifest │ │ ├── utils.cpp │ │ ├── utils.h │ │ ├── win32_window.cpp │ │ └── win32_window.h │ ├── backend/ │ │ └── aws/ │ │ └── fetchImageAsBase64/ │ │ └── index.mjs │ ├── dist/ │ │ ├── assets/ │ │ │ ├── AssetManifest.bin.json │ │ │ ├── AssetManifest.json │ │ │ ├── FontManifest.json │ │ │ ├── NOTICES │ │ │ ├── assets/ │ │ │ │ └── talk.glowbom │ │ │ ├── fonts/ │ │ │ │ └── MaterialIcons-Regular.otf │ │ │ └── shaders/ │ │ │ └── ink_sparkle.frag │ │ ├── canvaskit/ │ │ │ ├── canvaskit.js │ │ │ ├── canvaskit.js.symbols │ │ │ ├── canvaskit.wasm │ │ │ ├── chromium/ │ │ │ │ ├── canvaskit.js │ │ │ │ ├── canvaskit.js.symbols │ │ │ │ └── canvaskit.wasm │ │ │ ├── skwasm.js │ │ │ ├── skwasm.js.symbols │ │ │ ├── skwasm.wasm │ │ │ └── skwasm.worker.js │ │ ├── flutter.js │ │ ├── flutter_bootstrap.js │ │ ├── flutter_service_worker.js │ │ ├── index.html │ │ ├── manifest.json │ │ ├── tv.js │ │ └── version.json │ └── docs/ │ └── README.md ├── project/ │ ├── AGENTS.md │ ├── android/ │ │ ├── .gitignore │ │ ├── .idea/ │ │ │ ├── .gitignore │ │ │ ├── .name │ │ │ ├── compiler.xml │ │ │ ├── deploymentTargetDropDown.xml │ │ │ ├── gradle.xml │ │ │ ├── inspectionProfiles/ │ │ │ │ └── Project_Default.xml │ │ │ ├── kotlinc.xml │ │ │ ├── migrations.xml │ │ │ ├── misc.xml │ │ │ └── vcs.xml │ │ ├── README.md │ │ ├── app/ │ │ │ ├── .gitignore │ │ │ ├── build.gradle.kts │ │ │ ├── proguard-rules.pro │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── assets/ │ │ │ │ └── custom.glowbom │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── glowbom/ │ │ │ │ └── custom/ │ │ │ │ ├── AiExtensions.kt │ │ │ │ ├── MainActivity.kt │ │ │ │ └── ui/ │ │ │ │ └── theme/ │ │ │ │ ├── Color.kt │ │ │ │ ├── Theme.kt │ │ │ │ └── Type.kt │ │ │ └── res/ │ │ │ ├── drawable/ │ │ │ │ └── ic_launcher_background.xml │ │ │ ├── drawable-v24/ │ │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── mipmap-anydpi-v26/ │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ ├── values/ │ │ │ │ ├── colors.xml │ │ │ │ ├── strings.xml │ │ │ │ └── themes.xml │ │ │ └── xml/ │ │ │ ├── backup_rules.xml │ │ │ └── data_extraction_rules.xml │ │ ├── build.gradle.kts │ │ ├── gradle/ │ │ │ └── wrapper/ │ │ │ └── gradle-wrapper.properties │ │ ├── gradle.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ └── settings.gradle.kts │ ├── apple/ │ │ ├── Custom/ │ │ │ ├── AiExtensions.swift │ │ │ ├── Assets.xcassets/ │ │ │ │ ├── AccentColor.colorset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ ├── ContentView.swift │ │ │ ├── Custom.entitlements │ │ │ ├── CustomApp.swift │ │ │ ├── Preview Content/ │ │ │ │ └── Preview Assets.xcassets/ │ │ │ │ └── Contents.json │ │ │ └── custom.glowbom │ │ ├── Custom.xcodeproj/ │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace/ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ ├── xcshareddata/ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ └── xcuserdata/ │ │ │ │ └── jacobilin.xcuserdatad/ │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ └── xcuserdata/ │ │ │ └── jacobilin.xcuserdatad/ │ │ │ └── xcschemes/ │ │ │ └── xcschememanagement.plist │ │ └── README.md │ ├── glowbom.json │ ├── prototype/ │ │ ├── assets.json │ │ └── index.html │ └── web/ │ ├── .gitignore │ ├── README.md │ ├── components.json │ ├── eslint.config.mjs │ ├── next.config.mjs │ ├── package.json │ ├── postcss.config.js │ ├── public/ │ │ └── custom.glowbom │ ├── src/ │ │ ├── app/ │ │ │ ├── components/ │ │ │ │ ├── AiExtensions.tsx │ │ │ │ └── Custom.tsx │ │ │ ├── globals.css │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── components/ │ │ │ └── ui/ │ │ │ ├── button.tsx │ │ │ ├── card.tsx │ │ │ ├── dialog.tsx │ │ │ ├── dropdown-menu.tsx │ │ │ ├── form.tsx │ │ │ ├── input.tsx │ │ │ ├── label.tsx │ │ │ ├── pagination.tsx │ │ │ ├── progress.tsx │ │ │ ├── tabs.tsx │ │ │ ├── toast.tsx │ │ │ ├── toaster.tsx │ │ │ ├── toggle.tsx │ │ │ ├── tooltip.tsx │ │ │ └── use-toast.ts │ │ ├── lib/ │ │ │ └── utils.ts │ │ └── models/ │ │ └── types.ts │ ├── tailwind.config.ts │ └── tsconfig.json ├── scripts/ │ └── install.sh └── web/ ├── LICENSE ├── index.html ├── package.json ├── src/ │ ├── App.tsx │ ├── hooks/ │ │ └── useRefineRun.ts │ ├── lib/ │ │ ├── api.ts │ │ ├── console-render.ts │ │ ├── model-catalog.ts │ │ ├── server-auth.ts │ │ └── sse.ts │ ├── main.tsx │ ├── styles.css │ └── types/ │ └── opencode.ts ├── tsconfig.json └── vite.config.ts ================================================ FILE CONTENTS ================================================ ================================================ FILE: .claude/settings.json ================================================ { "permissions": { "allow": [ "Bash(go build:*)" ] } } ================================================ FILE: .github/workflows/glowby-release.yml ================================================ name: Release glowby on: push: tags: - 'v*' permissions: contents: write jobs: build: runs-on: ubuntu-latest strategy: matrix: goos: [darwin, linux, windows] goarch: [amd64, arm64] steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: '1.24' - name: Build binary env: GOOS: ${{ matrix.goos }} GOARCH: ${{ matrix.goarch }} CGO_ENABLED: '0' run: | if [ -d oss/cli ]; then CLI_DIR="oss/cli" else CLI_DIR="cli" fi TAG="${GITHUB_REF#refs/tags/}" SHA="$(git rev-parse --short HEAD)" DATE="$(date -u +%Y-%m-%dT%H:%M:%SZ)" EXT="" if [ "${{ matrix.goos }}" = "windows" ]; then EXT=".exe"; fi cd "${CLI_DIR}" go build \ -ldflags "-s -w -X main.version=${TAG} -X main.commit=${SHA} -X main.date=${DATE}" \ -o "glowby-${{ matrix.goos }}-${{ matrix.goarch }}${EXT}" \ . - name: Create archive run: | if [ -d oss/cli ]; then CLI_DIR="oss/cli" else CLI_DIR="cli" fi cd "${CLI_DIR}" BIN="glowby-${{ matrix.goos }}-${{ matrix.goarch }}" if [ "${{ matrix.goos }}" = "windows" ]; then mv "${BIN}.exe" glowby.exe zip "${BIN}.zip" glowby.exe else mv "${BIN}" glowby tar czf "${BIN}.tar.gz" glowby fi - name: Upload artifact uses: actions/upload-artifact@v4 with: name: glowby-${{ matrix.goos }}-${{ matrix.goarch }} path: | oss/cli/glowby-*.tar.gz oss/cli/glowby-*.zip cli/glowby-*.tar.gz cli/glowby-*.zip release: needs: build runs-on: ubuntu-latest steps: - uses: actions/download-artifact@v4 with: path: artifacts merge-multiple: true - name: Create release uses: softprops/action-gh-release@v2 with: generate_release_notes: true files: artifacts/* ================================================ FILE: .gitignore ================================================ # See https://www.dartlang.org/guides/libraries/private-files # Files and directories created by pub .dart_tool/ .packages build/ # If you're building an application, you may want to check-in your pubspec.lock pubspec.lock # Directory created by dartdoc # If you don't generate documentation locally you can remove this line. doc/api/ # Avoid committing generated Javascript files: *.dart.js *.info.json # Produced by the --dump-info flag. *.js # When generated by dart2js. Don't specify *.js if your # project includes source files written in JavaScript. *.js_ *.js.deps *.js.map chat/.DS_Store .DS_Store /presets/compose/.idea presets/swiftui/Custom.xcodeproj/xcuserdata/jacobilin.xcuserdatad/xcschemes/xcschememanagement.plist presets/swiftui/Custom.xcodeproj/project.xcworkspace/xcuserdata/jacobilin.xcuserdatad/UserInterfaceState.xcuserstate /docs/.react-router/ /docs/.source/ /docs/build/ /docs/node_modules/ .obsidian/workspace.json .obsidian/core-plugins.json .obsidian/appearance.json .obsidian/app.json project.zip /web/node_modules Untitled.md /web/dist backend/glowbom-backend backend/assets/flux-comfyui-workflow.json backend/assets/128.json backend/assets/128-api.json backend/assets/104.json backend/node/local.ts backend/package.json /backend/saved_audio /backend/saved_images backend/veo-bridge.js backend/veo-cli.js cli/glowby backend/server ================================================ FILE: AGENTS.md ================================================ # Workspace Instructions ## Commit Messages - After making code changes, always suggest a one-line conventional commit message. - Prefer the format `type: summary`. ================================================ FILE: CLI.md ================================================ # glowby CLI Terminal-first CLI for Glowby OSS. Starts the Go backend and web UI, opens the browser, and manages the full local dev workflow from one command. ## Install ### From GitHub Releases ```sh curl -fsSL https://raw.githubusercontent.com/glowbom/glowby/main/scripts/install.sh | sh ``` Or set a custom install directory: ```sh GLOWBY_INSTALL_DIR=~/.local/bin curl -fsSL ... | sh ``` ### Build from source ```sh cd cli go build -o glowby . ``` ## Commands ### `glowby code` Start the backend, web UI, and open the browser from a local Glowby checkout. ```sh glowby code # Start Glowby from the current checkout glowby code /path/to/project # Start Glowby and print a project path hint ``` What it does: 1. Starts the Go backend (`go run .` in `backend/`) 2. Runs `bun install` in `web/` if `node_modules/` is missing 3. Reclaims ports `4569` and `4572` if they are already occupied by a previous Glowby run 4. Starts the web dev server (`bun run dev` in `web/`) 5. Waits for the web server to be ready, then opens the browser 6. If a project path is given, prints the path so you can load it in the UI Press Ctrl+C to stop both servers. **Argument parsing:** - If a positional arg is given and it is an existing directory, it is treated as the project path - If it is not an existing directory, the command exits with an error **Finding the Glowby root:** The CLI looks for sibling `backend/` and `web/` directories relative to the binary location or the current working directory and its parent directories. ### `glowby doctor` Check that required tools are installed. ```sh glowby doctor ``` Checks for: `go` (required), `bun` (required), `opencode` (required), and a local Glowby checkout with sibling `backend/` and `web/` directories. Returns exit code 1 if required dependencies are missing. ### `glowby version` ```sh glowby version ``` Prints version, commit hash, and build date. These are injected at build time via ldflags. ## Local Development ```sh cd cli # Build go build -o glowby . # Build with version info go build -ldflags "-s -w \ -X main.version=v0.1.0 \ -X main.commit=$(git rev-parse --short HEAD) \ -X main.date=$(date -u +%Y-%m-%dT%H:%M:%SZ)" \ -o glowby . # Run ./glowby version ./glowby doctor ./glowby code # Vet go vet ./... ``` ## Releases Releases are built automatically by GitHub Actions when a tag matching `v*` is pushed. ```sh git tag v0.1.0 git push origin v0.1.0 ``` The workflow builds binaries for: - macOS (amd64, arm64) - Linux (amd64, arm64) - Windows (amd64, arm64) Archives are uploaded to the GitHub Release page. ## Exit Codes | Code | Meaning | |------|---------| | 0 | Success | | 1 | Command or dependency failure | | 2 | Usage error (unknown command, bad args) | ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2023 Glowbom, Inc. 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: README.md ================================================ # Glowby OSS > We just launched Glowby OSS! [See the announcement](https://x.com/jacobilin/status/2035059308463833292) **Build anything locally.** Glowby helps you build production-ready software with coding agents. It is an open source coding agent workflow for real projects. It is built primarily for Glowbom projects, but the workflow can also work with other project structures. ## What It Does - Make software projects and prototypes production-ready with coding agents - Run on local projects with ChatGPT login, API keys, or OpenCode config ## Vision We believe that you should own your code and data. Every line of code Glowby generates lives on your machine, in standard project files you can open with any editor. No vendor lock-in. ## Install Install the Glowby CLI: ```bash curl -fsSL https://raw.githubusercontent.com/glowbom/glowby/main/scripts/install.sh | sudo sh ``` For Windows, we recommend using WSL and running the install command inside Ubuntu. Then clone the repo and enter it: ```bash git clone https://github.com/glowbom/glowby.git cd glowby ``` ## Quickstart Glowby needs these tools available on your `PATH`: - [Go](https://go.dev/) - [Bun](https://bun.sh/) - [OpenCode](https://opencode.ai/) Run the built-in environment check and launch Glowby: ```bash glowby doctor glowby code ``` Run those commands from the Glowby repo root, where `backend/` and `web/` live side by side. ## Security Defaults `glowby code` now hardens the local stack by default: - Glowby services bind to loopback (`127.0.0.1`) instead of all interfaces - the backend API requires a per-run bearer token - the OpenCode bridge runs with `OPENCODE_SERVER_PASSWORD` To view the generated credentials for the current session, start Glowby with `glowby code --show-local-auth`. If you launch the stack manually, set equivalent env vars yourself: ```bash export GLOWBY_BIND_HOST=127.0.0.1 export GLOWBY_SERVER_TOKEN="$(openssl rand -hex 32)" export OPENCODE_SERVER_PASSWORD="$(openssl rand -hex 32)" ``` Then run the backend with those env vars, and start the web app with: ```bash export VITE_GLOWBY_SERVER_TOKEN="$GLOWBY_SERVER_TOKEN" ``` ## Start Using Glowby OSS 1. Open `http://localhost:4572` 2. Load a local project 3. Choose how you want to run the agent: - ChatGPT login - API keys - OpenCode config 4. Start a refine run ## Cost You can build with Glowby for free. Run local AI models on your own computer or connect to free cloud models. If you want access to premium models, you can connect a paid account or your own API keys, but you do not need to. ## Requirements And Setup If `glowby doctor` reports missing tools, install them first and confirm they are available on your `PATH`: ```bash go version bun --version opencode --version ``` If any command is not found, restart your terminal first. If it still does not work, add the tool's install location to your `PATH` or reinstall it using the tool's recommended installer. On macOS, a common fix is to add the tool's bin directory to your shell profile (usually `~/.zshrc`) and then reload it: ```bash # Common PATH fixes on macOS echo 'export PATH="/usr/local/go/bin:$PATH"' >> ~/.zshrc echo 'export BUN_INSTALL="$HOME/.bun"' >> ~/.zshrc echo 'export PATH="$BUN_INSTALL/bin:$PATH"' >> ~/.zshrc # Add the directory that contains the opencode binary echo 'export PATH="/path/to/opencode/bin:$PATH"' >> ~/.zshrc source ~/.zshrc ``` If you use Bash instead of zsh, update `~/.bash_profile` or `~/.bashrc` instead. ### Manual fallback If you prefer to launch the stack without the CLI, run the backend and web app separately: #### Backend ```bash cd backend go run . ``` The backend runs on `http://localhost:4569`. #### Web app ```bash cd web bun install bun run dev ``` The web app runs on `http://localhost:4572`. ## Using the Bundled Default Project This repo includes a ready-to-use Glowbom default project in `project/`. You can use `project/` as your main starting template without logging in to Glowbom.com or downloading a project export first. Just copy the folder, rename it if you want, and start customizing it locally. The bundled project includes: - `project/prototype/` - reference design and assets - `project/apple/` - Apple app project - `project/android/` - Android app project - `project/web/` - web app project - `project/glowbom.json` - project manifest If you only need some targets, remove the platform folders you do not want: - Delete `project/apple/` if you do not need Apple platforms - Delete `project/android/` if you do not need Android - Delete `project/web/` if you do not need web - Keep all of them if you want to build every platform in sync from one Glowbom project ## Project Structure - `backend/` - Go backend - `project/` - bundled default Glowbom project template - `web/` - React + Vite web app - `legacy/` - older Glowby code kept for reference ================================================ FILE: backend/backend_info_page.go ================================================ package main import ( "encoding/json" "fmt" "html" "net/http" "os" "path/filepath" "strings" ) const ( glowbyRepositoryURL = "https://github.com/glowbom/glowby" glowbomWebsiteURL = "https://glowbom.com" codexAppServerURL = "https://developers.openai.com/codex/app-server/" glowbomDesktopPDFPath = "docs/2026/Glowbom_Desktop_A_Sketch_to_Software_System.pdf" ) type backendInfo struct { Name string `json:"name"` Summary string `json:"summary"` HowItWorks string `json:"howItWorks"` RuntimeURL string `json:"runtimeURL"` Links []backendInfoLink `json:"links"` Drivers []backendDriver `json:"drivers"` ProjectDescriptionURL string `json:"projectDescriptionURL,omitempty"` ProjectDescriptionPath string `json:"projectDescriptionPath,omitempty"` } type backendInfoLink struct { Label string `json:"label"` URL string `json:"url"` } type backendDriver struct { ID string `json:"id"` Label string `json:"label"` Status string `json:"status"` // available | planned Description string `json:"description"` } func resolveGlowbomDesktopPDFPath() (string, bool) { candidates := []string{ filepath.FromSlash(filepath.Join("..", glowbomDesktopPDFPath)), filepath.FromSlash(glowbomDesktopPDFPath), } for _, candidate := range candidates { abs, err := filepath.Abs(candidate) if err != nil { continue } info, err := os.Stat(abs) if err != nil || info.IsDir() { continue } return abs, true } return "", false } func resolveGlowbyPublicAssetPath(fileName string) (string, bool) { safeName := strings.TrimSpace(fileName) if safeName == "" || strings.Contains(safeName, "/") || strings.Contains(safeName, "\\") { return "", false } candidates := []string{ filepath.FromSlash(filepath.Join("..", "website", "glowby-oss", "public", safeName)), filepath.FromSlash(filepath.Join("website", "glowby-oss", "public", safeName)), } for _, candidate := range candidates { abs, err := filepath.Abs(candidate) if err != nil { continue } info, err := os.Stat(abs) if err != nil || info.IsDir() { continue } return abs, true } return "", false } func serveGlowbyPublicAsset(w http.ResponseWriter, r *http.Request, fileName string) { if r.Method != http.MethodGet && r.Method != http.MethodHead { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } assetPath, ok := resolveGlowbyPublicAssetPath(fileName) if !ok { http.NotFound(w, r) return } w.Header().Set("Cache-Control", "no-store") http.ServeFile(w, r, assetPath) } func glowbyFaviconHandler(w http.ResponseWriter, r *http.Request) { serveGlowbyPublicAsset(w, r, "favicon.png") } func glowbyLogoSVGHandler(w http.ResponseWriter, r *http.Request) { serveGlowbyPublicAsset(w, r, "logo-svg.svg") } func glowbyBackendInfoPayload() backendInfo { info := backendInfo{ Name: "Glowby", Summary: "Choose a project folder and let Glowby finish the engineering work locally.", HowItWorks: "Glowby manages agent drivers for you, keeps context in one place, and streams every step while code is being improved.", RuntimeURL: "http://127.0.0.1:" + getAgentPort(), Links: []backendInfoLink{ {Label: "Glowby OSS repository", URL: glowbyRepositoryURL}, {Label: "Glowbom website", URL: glowbomWebsiteURL}, {Label: "Codex App Server", URL: codexAppServerURL}, {Label: "Backend metadata (JSON)", URL: "/opencode/about"}, {Label: "Backend health", URL: "/opencode/health"}, {Label: "Auth status", URL: "/opencode/auth/status"}, }, Drivers: []backendDriver{ { ID: "opencode", Label: "OpenCode", Status: "available", Description: "Default driver today. Great for local refine runs and broad model/provider flexibility.", }, { ID: "codex-app-server", Label: "Codex App Server", Status: "planned", Description: "Next planned driver. You will be able to switch drivers without changing your project workflow.", }, }, } if pdfPath, ok := resolveGlowbomDesktopPDFPath(); ok { info.ProjectDescriptionURL = "/opencode/about/project-description" info.ProjectDescriptionPath = pdfPath info.Links = append(info.Links, backendInfoLink{ Label: "Glowbom Desktop system paper (PDF)", URL: info.ProjectDescriptionURL, }) } return info } func normalizedLinkHref(raw string) string { href := strings.TrimSpace(raw) if href == "" { return "#" } return href } func glowbyBackendHomeHandler(w http.ResponseWriter, r *http.Request) { if r.URL.Path != "/" { http.NotFound(w, r) return } info := glowbyBackendInfoPayload() if strings.Contains(strings.ToLower(r.Header.Get("Accept")), "application/json") { w.Header().Set("Content-Type", "application/json") _ = json.NewEncoder(w).Encode(info) return } w.Header().Set("Content-Type", "text/html; charset=utf-8") w.Header().Set("Cache-Control", "no-store") var linksHTML strings.Builder for _, link := range info.Links { label := html.EscapeString(strings.TrimSpace(link.Label)) href := html.EscapeString(normalizedLinkHref(link.URL)) if label == "" || href == "" { continue } linksHTML.WriteString(fmt.Sprintf(`
  • %s
  • `, href, label)) } var driversHTML strings.Builder for _, driver := range info.Drivers { label := html.EscapeString(strings.TrimSpace(driver.Label)) status := "Planned" if strings.EqualFold(strings.TrimSpace(driver.Status), "available") { status = "Available" } description := html.EscapeString(strings.TrimSpace(driver.Description)) driversHTML.WriteString(fmt.Sprintf( `
  • %s %s
    %s
  • `, label, html.EscapeString(status), description, )) } projectPathLine := `

    Project description PDF: not found locally.

    ` if strings.TrimSpace(info.ProjectDescriptionPath) != "" { projectPathLine = fmt.Sprintf( `

    Local PDF path: %s

    `, html.EscapeString(info.ProjectDescriptionPath), ) } page := fmt.Sprintf(` %s
    Get Started for Free

    %s

    %s

    %s

    OpenCode runtime: %s

    How It Works

    1. Open the Glowby web UI at http://127.0.0.1:4572.
    2. Choose a local Glowbom project folder.
    3. Pick an agent driver and run /opencode/refine.
    4. Watch live logs, answer prompts, and open outputs in your IDE.

    Agent Drivers

    Links

    %s
    `, html.EscapeString(info.Name), html.EscapeString(info.Name), html.EscapeString(info.Summary), html.EscapeString(info.HowItWorks), html.EscapeString(info.RuntimeURL), driversHTML.String(), linksHTML.String(), projectPathLine, ) _, _ = w.Write([]byte(page)) } func openCodeAboutHandler(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodGet { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } w.Header().Set("Content-Type", "application/json") _ = json.NewEncoder(w).Encode(glowbyBackendInfoPayload()) } func openCodeProjectDescriptionHandler(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodGet { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } pdfPath, ok := resolveGlowbomDesktopPDFPath() if !ok { http.Error(w, "Project description PDF not found", http.StatusNotFound) return } w.Header().Set("Cache-Control", "no-store") http.ServeFile(w, r, pdfPath) } ================================================ FILE: backend/claude_anthropic.go ================================================ package main import ( "bufio" "bytes" "encoding/json" "fmt" "io" "math" "net/http" "strings" "time" ) const claudeSonnetDefaultModel = "claude-sonnet-4-6" const claudeOpusDefaultModel = "claude-opus-4-6" func isClaudeOpusModel(modelID string) bool { return strings.HasPrefix(strings.ToLower(strings.TrimSpace(modelID)), "claude-opus-") } func claudeModelTokenRates(modelID string) (inputCostPer1M float64, outputCostPer1M float64) { if isClaudeOpusModel(modelID) { return 5.0, 25.0 } return 3.0, 15.0 } // callClaudeDrawToCodeApiFull handles draw-to-code using Claude API with native vision func callClaudeDrawToCodeApiFull(imageBase64, userPrompt, template, imageSource, apiKey string) (*R1Response, error) { return callClaudeDrawToCodeApiFullWithModel(imageBase64, userPrompt, template, imageSource, apiKey, claudeSonnetDefaultModel) } // callClaudeDrawToCodeApiFullWithModel handles draw-to-code with specific Claude model func callClaudeDrawToCodeApiFullWithModel(imageBase64, userPrompt, template, imageSource, apiKey, modelID string) (*R1Response, error) { if apiKey == "" { return &R1Response{ AIResponse: "No Claude API key provided. Please add your key in Settings.", TokenUsage: map[string]int{"inputTokens": 0, "outputTokens": 0, "totalTokens": 0}, Cost: 0, }, nil } // 1) Build system prompt systemPrompt := getSystemPrompt(template, imageSource) systemPrompt += " Replace @tailwind placeholders with the Tailwind CSS CDN link to load the real framework." // 2) Build detailed task detailedTask := buildDetailedTaskDescription(template, imageSource, userPrompt) // 3) Construct multimodal message with image + text for Claude's native vision // Claude expects content array with image and text blocks userContent := []interface{}{ map[string]interface{}{ "type": "image", "source": map[string]interface{}{ "type": "base64", "media_type": "image/jpeg", "data": imageBase64, }, }, map[string]interface{}{ "type": "text", "text": strings.Join([]string{ fmt.Sprintf("Detailed Task Description: %s", detailedTask), fmt.Sprintf("Human: %s", userPrompt), }, "\n"), }, } // 4) Call Claude API with vision support messages := []map[string]interface{}{ {"role": "user", "content": userContent}, } // Use max tokens for draw-to-code (Claude Sonnet 4.6 supports up to 64k output tokens) // Use 32768 tokens (32K) with 4096 thinking budget for comprehensive HTML generation aiResp, inputTokens, outputTokens, err := callClaudeAPIWithThinkingBudgetAndModel(messages, systemPrompt, apiKey, modelID, 32768, 4096) if err != nil { return nil, err } // 5) Calculate cost based on model // Sonnet 4.6: Input $3/1M, Output $15/1M // Opus 4.6: Input $5/1M, Output $25/1M inputCostPer1M, outputCostPer1M := claudeModelTokenRates(modelID) cost := (float64(inputTokens) / 1_000_000.0 * inputCostPer1M) + (float64(outputTokens) / 1_000_000.0 * outputCostPer1M) return &R1Response{ AIResponse: aiResp, TokenUsage: map[string]int{ "inputTokens": inputTokens, "outputTokens": outputTokens, "totalTokens": inputTokens + outputTokens, }, Cost: cost, }, nil } // callClaudeDrawToCodeStreaming handles draw-to-code with streaming for specified Claude model func callClaudeDrawToCodeStreaming(w http.ResponseWriter, imageBase64, userPrompt, template, imageSource, apiKey, modelID string) error { if apiKey == "" { return fmt.Errorf("no Claude API key provided") } // Build system prompt (reuse existing logic) systemPrompt := getSystemPrompt(template, imageSource) systemPrompt += " Replace @tailwind placeholders with the Tailwind CSS CDN link to load the real framework." // Build detailed task detailedTask := buildDetailedTaskDescription(template, imageSource, userPrompt) // Construct multimodal message with image + text for Claude's native vision userContent := []interface{}{ map[string]interface{}{ "type": "image", "source": map[string]interface{}{ "type": "base64", "media_type": "image/jpeg", "data": imageBase64, }, }, map[string]interface{}{ "type": "text", "text": strings.Join([]string{ fmt.Sprintf("Detailed Task Description: %s", detailedTask), fmt.Sprintf("Human: %s", userPrompt), }, "\n"), }, } messages := []map[string]interface{}{ {"role": "user", "content": userContent}, } // Call existing streaming function with 32K tokens and 4K thinking budget return callClaudeAPIStreamingWithModel(w, messages, systemPrompt, apiKey, modelID, 32768) } // callClaudeApiGo handles normal chat using Claude API func callClaudeApiGo(prevMsgs []ChatMessage, newMsg, apiKey string) (*R1Response, error) { return callClaudeApiGoWithModel(prevMsgs, newMsg, apiKey, claudeSonnetDefaultModel) } // callClaudeApiGoWithModel handles normal chat using a specific Claude model func callClaudeApiGoWithModel(prevMsgs []ChatMessage, newMsg, apiKey, modelID string) (*R1Response, error) { if apiKey == "" { return &R1Response{ AIResponse: "No Claude API key provided. Please add your key in Settings.", TokenUsage: map[string]int{}, Cost: 0, }, nil } // Gather system message systemMsg := defaultSystemPrompt var messages []map[string]interface{} for _, m := range prevMsgs { if m.Role == "system" { systemMsg = m.Content } else if m.Role == "user" || m.Role == "assistant" { messages = append(messages, map[string]interface{}{ "role": m.Role, "content": m.Content, }) } } // Add new user message messages = append(messages, map[string]interface{}{ "role": "user", "content": newMsg, }) // Call Claude API with increased output limit for comprehensive responses. aiResp, inputTokens, outputTokens, err := callClaudeAPIWithThinkingBudgetAndModel(messages, systemMsg, apiKey, modelID, 8192, 2048) if err != nil { return nil, err } // Calculate cost based on selected model. inputCostPer1M, outputCostPer1M := claudeModelTokenRates(modelID) cost := (float64(inputTokens) / 1_000_000.0 * inputCostPer1M) + (float64(outputTokens) / 1_000_000.0 * outputCostPer1M) return &R1Response{ AIResponse: aiResp, TokenUsage: map[string]int{ "inputTokens": inputTokens, "outputTokens": outputTokens, "totalTokens": inputTokens + outputTokens, }, Cost: cost, }, nil } // callClaudeAPI makes the actual HTTP request to Anthropic API func callClaudeAPI(messages []map[string]interface{}, systemPrompt, apiKey string, maxTokens int) (string, int, int, error) { return callClaudeAPIWithThinkingBudget(messages, systemPrompt, apiKey, maxTokens, 2048) } // callClaudeAPIWithThinkingBudget makes the actual HTTP request with custom thinking budget func callClaudeAPIWithThinkingBudget(messages []map[string]interface{}, systemPrompt, apiKey string, maxTokens int, thinkingBudget int) (string, int, int, error) { return callClaudeAPIWithThinkingBudgetAndModel(messages, systemPrompt, apiKey, claudeSonnetDefaultModel, maxTokens, thinkingBudget) } // callClaudeAPIWithThinkingBudgetAndModel makes the actual HTTP request with custom thinking budget and model func callClaudeAPIWithThinkingBudgetAndModel(messages []map[string]interface{}, systemPrompt, apiKey, modelID string, maxTokens int, thinkingBudget int) (string, int, int, error) { // Thinking budget must be less than max_tokens if maxTokens <= thinkingBudget { thinkingBudget = maxTokens / 4 // Use quarter for thinking if max_tokens is small } reqBody := map[string]interface{}{ "model": modelID, "max_tokens": maxTokens, "messages": messages, "system": systemPrompt, "thinking": map[string]interface{}{ "type": "enabled", "budget_tokens": thinkingBudget, }, } jsonBytes, _ := json.Marshal(reqBody) fmt.Printf("[DEBUG] Claude request body: %s\n", string(jsonBytes)) req, err := http.NewRequest("POST", "https://api.anthropic.com/v1/messages", bytes.NewReader(jsonBytes)) if err != nil { fmt.Printf("[ERROR] Failed to create request: %v\n", err) return "", 0, 0, err } req.Header.Set("Content-Type", "application/json") req.Header.Set("x-api-key", apiKey) req.Header.Set("anthropic-version", "2023-06-01") fmt.Println("[DEBUG] Calling Claude API...") resp, err := http.DefaultClient.Do(req) fmt.Printf("[DEBUG] Claude API responded with status: %v, error: %v\n", resp, err) if err != nil { return "", 0, 0, err } defer resp.Body.Close() if resp.StatusCode != 200 { b, _ := io.ReadAll(resp.Body) errMsg := fmt.Sprintf("Claude API error (%d): %s", resp.StatusCode, string(b)) fmt.Println("[ERROR]", errMsg) return "", 0, 0, fmt.Errorf("%s", errMsg) } // Parse response bodyBytes, _ := io.ReadAll(resp.Body) var claudeResp struct { Content []struct { Type string `json:"type"` Text string `json:"text"` Thinking string `json:"thinking"` // For extended thinking blocks } `json:"content"` Usage struct { InputTokens int `json:"input_tokens"` OutputTokens int `json:"output_tokens"` } `json:"usage"` } if err := json.Unmarshal(bodyBytes, &claudeResp); err != nil { return "", 0, 0, fmt.Errorf("failed to parse Claude response: %v", err) } // Extract text from content blocks, including thinking blocks var responseText strings.Builder var thinkingText strings.Builder for _, block := range claudeResp.Content { if block.Type == "thinking" && block.Thinking != "" { thinkingText.WriteString(block.Thinking) } else if block.Text != "" { responseText.WriteString(block.Text) } } // Prepend thinking in tags if present var fullResponse strings.Builder if thinkingText.Len() > 0 { fullResponse.WriteString("") fullResponse.WriteString(thinkingText.String()) fullResponse.WriteString("") } fullResponse.WriteString(responseText.String()) fmt.Printf("[DEBUG] Claude response: %d input tokens, %d output tokens\n", claudeResp.Usage.InputTokens, claudeResp.Usage.OutputTokens) return fullResponse.String(), claudeResp.Usage.InputTokens, claudeResp.Usage.OutputTokens, nil } // getMagicEditTool returns the tool definition for magic_edit func getMagicEditTool() map[string]interface{} { return map[string]interface{}{ "name": "magic_edit", "description": "Trigger a visual code edit on the currently loaded project. Use this when the user asks you to make visual or code changes to their project (like changing colors, adding elements, modifying layouts, etc.).", "input_schema": map[string]interface{}{ "type": "object", "properties": map[string]interface{}{ "edit_description": map[string]interface{}{ "type": "string", "description": "A clear, specific description of what changes to make to the code/design. Be detailed about colors, positions, sizes, etc.", }, }, "required": []string{"edit_description"}, }, } } // callClaudeChatStreaming streams Claude response via SSE to the writer (for chat) func callClaudeChatStreaming(w http.ResponseWriter, prevMsgs []ChatMessage, newMsg, apiKey string) error { return callClaudeChatStreamingWithModel(w, prevMsgs, newMsg, apiKey, claudeSonnetDefaultModel) } // callClaudeChatStreamingWithModel streams Claude response with specific model func callClaudeChatStreamingWithModel(w http.ResponseWriter, prevMsgs []ChatMessage, newMsg, apiKey, modelID string) error { return callClaudeChatStreamingWithModelAndTools(w, prevMsgs, newMsg, apiKey, modelID, nil) } // callClaudeChatStreamingWithModelAndTools streams Claude response with specific model and optional tools func callClaudeChatStreamingWithModelAndTools(w http.ResponseWriter, prevMsgs []ChatMessage, newMsg, apiKey, modelID string, tools []map[string]interface{}) error { if apiKey == "" { return fmt.Errorf("no Claude API key provided") } // Gather system message systemMsg := defaultSystemPrompt var messages []map[string]interface{} for _, m := range prevMsgs { if m.Role == "system" { systemMsg = m.Content } else if m.Role == "user" || m.Role == "assistant" { messages = append(messages, map[string]interface{}{ "role": m.Role, "content": m.Content, }) } } // Add new user message messages = append(messages, map[string]interface{}{ "role": "user", "content": newMsg, }) // Call streaming Claude API with increased output limit return callClaudeAPIStreamingWithModelAndTools(w, messages, systemMsg, apiKey, modelID, 8192, tools) } // callClaudeAPIStreaming streams Claude responses via SSE directly to the HTTP response writer func callClaudeAPIStreaming(w http.ResponseWriter, messages []map[string]interface{}, systemPrompt, apiKey string, maxTokens int) error { return callClaudeAPIStreamingWithModel(w, messages, systemPrompt, apiKey, claudeSonnetDefaultModel, maxTokens) } // callClaudeAPIStreamingWithModel streams Claude responses with specific model func callClaudeAPIStreamingWithModel(w http.ResponseWriter, messages []map[string]interface{}, systemPrompt, apiKey, modelID string, maxTokens int) error { return callClaudeAPIStreamingWithModelAndTools(w, messages, systemPrompt, apiKey, modelID, maxTokens, nil) } // callClaudeAPIStreamingWithModelAndTools streams Claude responses with tools support func callClaudeAPIStreamingWithModelAndTools(w http.ResponseWriter, messages []map[string]interface{}, systemPrompt, apiKey, modelID string, maxTokens int, tools []map[string]interface{}) error { // Thinking budget must be less than max_tokens thinkingBudget := 2048 if maxTokens <= thinkingBudget { thinkingBudget = maxTokens / 2 // Use half for thinking if max_tokens is small } reqBody := map[string]interface{}{ "model": modelID, "max_tokens": maxTokens, "messages": messages, "system": systemPrompt, "stream": true, "thinking": map[string]interface{}{ "type": "enabled", "budget_tokens": thinkingBudget, }, } // Add tools if provided if len(tools) > 0 { reqBody["tools"] = tools } jsonBytes, _ := json.Marshal(reqBody) req, err := http.NewRequest("POST", "https://api.anthropic.com/v1/messages", bytes.NewReader(jsonBytes)) if err != nil { return err } req.Header.Set("Content-Type", "application/json") req.Header.Set("x-api-key", apiKey) req.Header.Set("anthropic-version", "2023-06-01") fmt.Println("[DEBUG] Calling Claude API with streaming...") resp, err := http.DefaultClient.Do(req) if err != nil { return err } defer resp.Body.Close() if resp.StatusCode != 200 { b, _ := io.ReadAll(resp.Body) errMsg := fmt.Sprintf("Claude API error (%d): %s", resp.StatusCode, string(b)) fmt.Println("[ERROR]", errMsg) return fmt.Errorf("%s", errMsg) } fmt.Println("[DEBUG] Claude API responded with status 200, starting to read stream...") // Stream response chunks to client var responseBuilder strings.Builder var thinkingBuilder strings.Builder var thinkingSent bool var thinkingStart time.Time var thinkingDurationSent bool var inputTokens, outputTokens int var currentThinkingStep strings.Builder var currentStepTitleSent bool var currentBlockType string // Tool use tracking var currentToolId string var currentToolName string var currentToolInput strings.Builder reader := bufio.NewReader(resp.Body) for { line, err := reader.ReadString('\n') if len(line) > 0 { line = strings.TrimSpace(line) if strings.HasPrefix(line, "data:") { dataStr := strings.TrimSpace(line[6:]) var event struct { Type string `json:"type"` Index int `json:"index"` Delta struct { Type string `json:"type"` Text string `json:"text"` Thinking string `json:"thinking"` // For extended thinking deltas PartialJson string `json:"partial_json"` // For tool use JSON deltas } `json:"delta"` ContentBlock struct { Type string `json:"type"` Text string `json:"text"` Thinking string `json:"thinking"` Id string `json:"id"` // Tool use ID Name string `json:"name"` // Tool use name } `json:"content_block"` Message struct { Usage struct { InputTokens int `json:"input_tokens"` OutputTokens int `json:"output_tokens"` } `json:"usage"` } `json:"message"` Usage struct { OutputTokens int `json:"output_tokens"` } `json:"usage"` Error struct { Type string `json:"type"` Message string `json:"message"` } `json:"error"` } if e := json.Unmarshal([]byte(dataStr), &event); e == nil { // Check for error events if event.Type == "error" || event.Error.Type != "" { errMsg := fmt.Sprintf("Claude streaming error: %s - %s", event.Error.Type, event.Error.Message) fmt.Println("[ERROR]", errMsg) return fmt.Errorf("%s", errMsg) } // Debug: log event types if event.Type != "" { fmt.Printf("[Claude DEBUG] Event type: %s, block type: %s, index: %d\n", event.Type, event.ContentBlock.Type, event.Index) } // Handle content_block_start - track what type of block we're in if event.Type == "content_block_start" { currentBlockType = event.ContentBlock.Type if currentBlockType == "thinking" { fmt.Printf("[Claude DEBUG] Starting thinking block (index %d)\n", event.Index) if thinkingStart.IsZero() { thinkingStart = time.Now() } currentThinkingStep.Reset() currentStepTitleSent = false } else if currentBlockType == "tool_use" { // Tool use block starting currentToolId = event.ContentBlock.Id currentToolName = event.ContentBlock.Name currentToolInput.Reset() fmt.Printf("[Claude DEBUG] Starting tool_use block: %s (id: %s)\n", currentToolName, currentToolId) } } // Handle content_block_stop - send tool_use event when tool block ends if event.Type == "content_block_stop" && currentBlockType == "tool_use" { // Parse the accumulated JSON input inputJSON := currentToolInput.String() fmt.Printf("[Claude] Tool use complete: %s, input: %s\n", currentToolName, inputJSON) // Send tool_use event to client toolUseData := map[string]interface{}{ "tool_use": map[string]interface{}{ "id": currentToolId, "name": currentToolName, "input": inputJSON, }, } toolUseBytes, _ := json.Marshal(toolUseData) fmt.Fprintf(w, "data: %s\n\n", toolUseBytes) if f, ok := w.(http.Flusher); ok { f.Flush() } // Reset tool tracking currentToolId = "" currentToolName = "" currentToolInput.Reset() } // Handle content_block_delta - process content based on current block type if event.Type == "content_block_delta" { // Handle tool_use input JSON deltas if currentBlockType == "tool_use" && event.Delta.PartialJson != "" { currentToolInput.WriteString(event.Delta.PartialJson) } else if currentBlockType == "thinking" && event.Delta.Thinking != "" { // Thinking content - use Delta.Thinking field, not Delta.Text! thinkingBuilder.WriteString(event.Delta.Thinking) currentThinkingStep.WriteString(event.Delta.Thinking) // Try to extract and send the title once we have a complete title if !currentStepTitleSent { text := currentThinkingStep.String() hasCompleteMarkdown := strings.HasPrefix(text, "**") && strings.Count(text, "**") >= 2 hasNewlineSeparation := strings.Count(text, "\n") >= 2 if hasCompleteMarkdown || hasNewlineSeparation { stepTitle := extractThinkingStepTitle(text) if stepTitle != "" { thinkingStepData := map[string]string{"thinkingStep": stepTitle} thinkingStepBytes, _ := json.Marshal(thinkingStepData) fmt.Fprintf(w, "data: %s\n\n", thinkingStepBytes) fmt.Printf("[Claude] Sending thinking step: %s\n", stepTitle) if f, ok := w.(http.Flusher); ok { f.Flush() } currentStepTitleSent = true } } } } else if currentBlockType == "text" && event.Delta.Text != "" { // Text content (actual response) // Send complete thinking before first content chunk if !thinkingSent && thinkingBuilder.Len() > 0 { // Send the last thinking step if we haven't sent its title yet if !currentStepTitleSent && currentThinkingStep.Len() > 0 { stepTitle := extractThinkingStepTitle(currentThinkingStep.String()) if stepTitle != "" { thinkingStepData := map[string]string{"thinkingStep": stepTitle} thinkingStepBytes, _ := json.Marshal(thinkingStepData) fmt.Fprintf(w, "data: %s\n\n", thinkingStepBytes) fmt.Printf("[Claude] Sending final thinking step: %s\n", stepTitle) if f, ok := w.(http.Flusher); ok { f.Flush() } currentStepTitleSent = true } } thinkingText := "" + thinkingBuilder.String() + "" chunkData := map[string]string{"chunk": thinkingText} chunkBytes, _ := json.Marshal(chunkData) fmt.Fprintf(w, "data: %s\n\n", chunkBytes) fmt.Println("[Claude] Sent complete thinking to client") if f, ok := w.(http.Flusher); ok { f.Flush() } thinkingSent = true // Send thinking duration if !thinkingDurationSent && !thinkingStart.IsZero() { duration := time.Since(thinkingStart).Seconds() duration = math.Round(duration*10) / 10 metaData := map[string]any{ "meta": map[string]any{ "thinkingSeconds": duration, }, } metaBytes, _ := json.Marshal(metaData) fmt.Fprintf(w, "data: %s\n\n", metaBytes) fmt.Printf("[Claude] Sent thinking duration: %.1fs\n", duration) if f, ok := w.(http.Flusher); ok { f.Flush() } thinkingDurationSent = true } } responseBuilder.WriteString(event.Delta.Text) // Send content chunk to client chunkData := map[string]string{"chunk": event.Delta.Text} chunkBytes, _ := json.Marshal(chunkData) fmt.Fprintf(w, "data: %s\n\n", chunkBytes) if f, ok := w.(http.Flusher); ok { f.Flush() } } } // Extract usage from message_start if event.Type == "message_start" { inputTokens = event.Message.Usage.InputTokens } // Extract usage from message_delta if event.Type == "message_delta" { outputTokens = event.Usage.OutputTokens // Calculate cost based on model // Sonnet 4.6: Input $3/1M, Output $15/1M // Opus 4.6: Input $5/1M, Output $25/1M inputCostPer1M, outputCostPer1M := claudeModelTokenRates(modelID) cost := (float64(inputTokens) / 1_000_000.0 * inputCostPer1M) + (float64(outputTokens) / 1_000_000.0 * outputCostPer1M) // Send done event with usage doneData := map[string]interface{}{ "done": true, "tokenUsage": map[string]int{ "inputTokens": inputTokens, "outputTokens": outputTokens, "totalTokens": inputTokens + outputTokens, }, "cost": cost, } doneBytes, _ := json.Marshal(doneData) fmt.Fprintf(w, "data: %s\n\n", doneBytes) if f, ok := w.(http.Flusher); ok { f.Flush() } } } } } if err != nil { if err == io.EOF { break } return err } } fmt.Printf("[Claude] Stream complete: %d input tokens, %d output tokens\n", inputTokens, outputTokens) return nil } ================================================ FILE: backend/codex_chatgpt.go ================================================ package main import ( "bufio" "bytes" "encoding/json" "fmt" "io" "math" "net/http" "runtime" "strings" "time" ) // buildCodexInput converts ChatMessage history + new user message into the // structured input array expected by chatgpt.com/backend-api/codex/responses. // User messages use {"type":"input_text"}, assistant messages use {"type":"output_text"}. func buildCodexInput(prevMsgs []ChatMessage, newMsg string) []interface{} { var input []interface{} for _, m := range prevMsgs { switch m.Role { case "user": input = append(input, map[string]interface{}{ "role": "user", "content": []map[string]interface{}{ {"type": "input_text", "text": m.Content}, }, }) case "assistant": input = append(input, map[string]interface{}{ "type": "message", "role": "assistant", "content": []map[string]interface{}{ {"type": "output_text", "text": m.Content, "annotations": []string{}}, }, "status": "completed", }) } } input = append(input, map[string]interface{}{ "role": "user", "content": []map[string]interface{}{ {"type": "input_text", "text": newMsg}, }, }) return input } // buildCodexRequestBody builds the standard request body for the Codex Responses API. func buildCodexRequestBody(instructions string, input []interface{}, reasoningEffort string, stream bool, modelID string) map[string]interface{} { resolvedModel := normalizeOpenAIModelID(modelID) return map[string]interface{}{ "model": resolvedModel, "store": false, "stream": stream, "instructions": instructions, "input": input, "reasoning": map[string]interface{}{ "effort": reasoningEffort, "summary": "auto", }, "text": map[string]interface{}{ "verbosity": "medium", }, "include": []string{"reasoning.encrypted_content"}, "tool_choice": "auto", "parallel_tool_calls": true, } } // callChatGPTCodexStreaming proxies a chat request through the ChatGPT backend // Codex Responses API, using the JWT access_token and chatgpt_account_id. func callChatGPTCodexStreaming(w http.ResponseWriter, prevMsgs []ChatMessage, newMsg, accessToken, accountID, modelID string) error { if accessToken == "" { return fmt.Errorf("no ChatGPT access token provided") } if accountID == "" { return fmt.Errorf("no ChatGPT account ID provided") } systemMsg := defaultSystemPrompt for _, m := range prevMsgs { if m.Role == "system" { systemMsg = m.Content break } } input := buildCodexInput(prevMsgs, newMsg) reqBody := buildCodexRequestBody(systemMsg, input, "medium", true, modelID) return doChatGPTCodexRequest(w, reqBody, accessToken, accountID) } // callChatGPTCodexDrawToCodeStreaming handles draw-to-code via the ChatGPT backend // Codex Responses API. func callChatGPTCodexDrawToCodeStreaming(w http.ResponseWriter, imageBase64, userPrompt, template, imageSource, accessToken, accountID, modelID string) error { if accessToken == "" { return fmt.Errorf("no ChatGPT access token provided") } if accountID == "" { return fmt.Errorf("no ChatGPT account ID provided") } systemPrompt := getSystemPrompt(template, imageSource) systemPrompt += " Replace @tailwind placeholders with the Tailwind CSS CDN link to load the real framework." detailedTask := buildDetailedTaskDescription(template, imageSource, userPrompt) userMessage := detailedTask + "\n\n[An image/screenshot was provided for reference. Generate the code based on the description above.]" input := []interface{}{ map[string]interface{}{ "role": "user", "content": []map[string]interface{}{ {"type": "input_text", "text": userMessage}, }, }, } reqBody := buildCodexRequestBody(systemPrompt, input, "low", true, modelID) return doChatGPTCodexRequest(w, reqBody, accessToken, accountID) } // callChatGPTCodexNonStreaming makes a non-streaming call through the ChatGPT backend API. func callChatGPTCodexNonStreaming(prevMsgs []ChatMessage, newMsg, accessToken, accountID, modelID string) (*R1Response, error) { if accessToken == "" { return &R1Response{ AIResponse: "No ChatGPT access token provided. Please re-login in AI Settings.", TokenUsage: map[string]int{}, Cost: 0, }, nil } systemMsg := defaultSystemPrompt for _, m := range prevMsgs { if m.Role == "system" { systemMsg = m.Content break } } input := buildCodexInput(prevMsgs, newMsg) reqBody := buildCodexRequestBody(systemMsg, input, "medium", false, modelID) jsonBytes, _ := json.Marshal(reqBody) req, err := http.NewRequest("POST", "https://chatgpt.com/backend-api/codex/responses", bytes.NewReader(jsonBytes)) if err != nil { return nil, err } setChatGPTCodexHeaders(req, accessToken, accountID) fmt.Println("[CODEX] Calling ChatGPT Codex API (non-streaming)...") resp, err := http.DefaultClient.Do(req) if err != nil { return nil, err } defer resp.Body.Close() if resp.StatusCode != 200 { b, _ := io.ReadAll(resp.Body) return nil, fmt.Errorf("ChatGPT Codex API error (%d): %s", resp.StatusCode, string(b)) } b, err := io.ReadAll(resp.Body) if err != nil { return nil, err } // Parse Responses API format var result struct { Output []struct { Content []struct { Text string `json:"text"` } `json:"content"` } `json:"output"` Usage struct { InputTokens int `json:"input_tokens"` OutputTokens int `json:"output_tokens"` } `json:"usage"` } if err := json.Unmarshal(b, &result); err != nil { return nil, fmt.Errorf("failed to parse Codex response: %v", err) } var text strings.Builder for _, out := range result.Output { for _, c := range out.Content { text.WriteString(c.Text) } } cost := estimateOpenAITextCost(modelID, result.Usage.InputTokens, result.Usage.OutputTokens) return &R1Response{ AIResponse: text.String(), TokenUsage: map[string]int{ "inputTokens": result.Usage.InputTokens, "outputTokens": result.Usage.OutputTokens, "totalTokens": result.Usage.InputTokens + result.Usage.OutputTokens, }, Cost: cost, }, nil } // doChatGPTCodexRequest sends a streaming request to the ChatGPT backend Codex API // and proxies SSE events back to the client in the same format as gpt5_responses_api.go. func doChatGPTCodexRequest(w http.ResponseWriter, reqBody map[string]interface{}, accessToken, accountID string) error { jsonBytes, _ := json.Marshal(reqBody) req, err := http.NewRequest("POST", "https://chatgpt.com/backend-api/codex/responses", bytes.NewReader(jsonBytes)) if err != nil { return err } setChatGPTCodexHeaders(req, accessToken, accountID) fmt.Println("[CODEX] Calling ChatGPT Codex API with streaming...") resp, err := http.DefaultClient.Do(req) if err != nil { return err } defer resp.Body.Close() if resp.StatusCode != 200 { b, _ := io.ReadAll(resp.Body) bodyText := string(b) return fmt.Errorf("ChatGPT Codex API error (%d): %s", resp.StatusCode, bodyText) } // Parse and proxy SSE — same event format as Responses API var responseBuilder strings.Builder var reasoningBuilder strings.Builder var reasoningSent bool var reasoningStart time.Time var reasoningDurationSent bool var inputTokens, outputTokens, reasoningTokens int var lastSummaryIndex int = -1 var currentThinkingStep strings.Builder var currentStepTitleSent bool reader := bufio.NewReader(resp.Body) for { line, err := reader.ReadString('\n') if len(line) > 0 { line = strings.TrimSpace(line) if strings.HasPrefix(line, "data:") { dataStr := strings.TrimSpace(line[5:]) if dataStr == "[DONE]" { break } var chunk struct { Type string `json:"type"` SequenceNumber int `json:"sequence_number"` SummaryIndex int `json:"summary_index"` Delta string `json:"delta"` Text string `json:"text"` Response struct { Usage struct { InputTokens int `json:"input_tokens"` OutputTokens int `json:"output_tokens"` OutputTokensDetails struct { ReasoningTokens int `json:"reasoning_tokens"` } `json:"output_tokens_details"` } `json:"usage"` } `json:"response"` } if e := json.Unmarshal([]byte(dataStr), &chunk); e == nil { // Handle reasoning delta events if chunk.Type == "response.reasoning_summary_text.delta" { if reasoningStart.IsZero() { reasoningStart = time.Now() } if chunk.Delta != "" { if chunk.SummaryIndex != lastSummaryIndex { if lastSummaryIndex != -1 { reasoningBuilder.WriteString("\n\n") } currentThinkingStep.Reset() currentStepTitleSent = false lastSummaryIndex = chunk.SummaryIndex } reasoningBuilder.WriteString(chunk.Delta) currentThinkingStep.WriteString(chunk.Delta) if !currentStepTitleSent { text := currentThinkingStep.String() hasCompleteMarkdown := strings.HasPrefix(text, "**") && strings.Count(text, "**") >= 2 hasNewlineSeparation := strings.Count(text, "\n") >= 2 if hasCompleteMarkdown || hasNewlineSeparation { stepTitle := extractThinkingStepTitle(text) if stepTitle != "" { thinkingStepData := map[string]string{"thinkingStep": stepTitle} thinkingStepBytes, _ := json.Marshal(thinkingStepData) fmt.Fprintf(w, "data: %s\n\n", thinkingStepBytes) fmt.Printf("[CODEX] Sending thinking step: %s\n", stepTitle) if f, ok := w.(http.Flusher); ok { f.Flush() } currentStepTitleSent = true } } } } } // Handle output text delta events if chunk.Type == "response.output_text.delta" { if chunk.Delta != "" { // Send complete reasoning before first content chunk if !reasoningSent && reasoningBuilder.Len() > 0 { if !currentStepTitleSent && currentThinkingStep.Len() > 0 { stepTitle := extractThinkingStepTitle(currentThinkingStep.String()) if stepTitle != "" { thinkingStepData := map[string]string{"thinkingStep": stepTitle} thinkingStepBytes, _ := json.Marshal(thinkingStepData) fmt.Fprintf(w, "data: %s\n\n", thinkingStepBytes) if f, ok := w.(http.Flusher); ok { f.Flush() } } } thinkingText := "" + reasoningBuilder.String() + "" chunkData := map[string]string{"chunk": thinkingText} chunkBytes, _ := json.Marshal(chunkData) fmt.Fprintf(w, "data: %s\n\n", chunkBytes) fmt.Println("[CODEX] Sent complete reasoning chain to client") if f, ok := w.(http.Flusher); ok { f.Flush() } reasoningSent = true duration := time.Since(reasoningStart).Seconds() duration = math.Round(duration*10) / 10 metaData := map[string]any{ "meta": map[string]any{ "thinkingSeconds": duration, }, } metaBytes, _ := json.Marshal(metaData) fmt.Fprintf(w, "data: %s\n\n", metaBytes) if f, ok := w.(http.Flusher); ok { f.Flush() } reasoningDurationSent = true } responseBuilder.WriteString(chunk.Delta) chunkData := map[string]string{"chunk": chunk.Delta} chunkBytes, _ := json.Marshal(chunkData) fmt.Fprintf(w, "data: %s\n\n", chunkBytes) if f, ok := w.(http.Flusher); ok { f.Flush() } } } // Extract usage from final completed event if chunk.Type == "response.completed" { inputTokens = chunk.Response.Usage.InputTokens outputTokens = chunk.Response.Usage.OutputTokens reasoningTokens = chunk.Response.Usage.OutputTokensDetails.ReasoningTokens if !reasoningDurationSent && !reasoningStart.IsZero() { duration := time.Since(reasoningStart).Seconds() duration = math.Round(duration*10) / 10 metaData := map[string]any{ "meta": map[string]any{ "thinkingSeconds": duration, }, } metaBytes, _ := json.Marshal(metaData) fmt.Fprintf(w, "data: %s\n\n", metaBytes) if f, ok := w.(http.Flusher); ok { f.Flush() } reasoningDurationSent = true } modelID, _ := reqBody["model"].(string) cost := estimateOpenAITextCost(modelID, inputTokens, outputTokens) doneData := map[string]interface{}{ "done": true, "tokenUsage": map[string]int{ "inputTokens": inputTokens, "outputTokens": outputTokens, "reasoningTokens": reasoningTokens, "totalTokens": inputTokens + outputTokens, }, "cost": cost, } doneBytes, _ := json.Marshal(doneData) fmt.Fprintf(w, "data: %s\n\n", doneBytes) if f, ok := w.(http.Flusher); ok { f.Flush() } } } } } if err != nil { if err == io.EOF { break } return err } } fmt.Printf("[CODEX] Stream complete: %d input tokens, %d output tokens (%d reasoning)\n", inputTokens, outputTokens, reasoningTokens) return nil } // setChatGPTCodexHeaders sets the required headers for ChatGPT backend API calls. func setChatGPTCodexHeaders(req *http.Request, accessToken, accountID string) { req.Header.Set("Content-Type", "application/json") req.Header.Set("Authorization", "Bearer "+accessToken) req.Header.Set("chatgpt-account-id", accountID) req.Header.Set("accept", "text/event-stream") req.Header.Set("User-Agent", fmt.Sprintf("Glowbom (%s %s)", runtime.GOOS, runtime.GOARCH)) } ================================================ FILE: backend/elevenlabs_audio.go ================================================ package main import ( "bytes" "encoding/base64" "encoding/json" "fmt" "io" "log" "net/http" neturl "net/url" "os" "path/filepath" "sort" "strings" "time" ) const ( elevenLabsBaseURL = "https://api.elevenlabs.io" defaultElevenVoiceID = "JBFqnCBsd6RMkjVDRZzb" defaultElevenVoiceModel = "eleven_multilingual_v2" defaultElevenOutputFormat = "mp3_44100_128" ) type ElevenLabsAudioRequest struct { Prompt string `json:"prompt"` AudioType string `json:"audioType"` // "voice" | "sound" | "music" ElevenLabsKey string `json:"elevenLabsKey,omitempty"` VoiceID string `json:"voiceId,omitempty"` VoiceModel string `json:"voiceModel,omitempty"` SoundModel string `json:"soundModel,omitempty"` MusicModel string `json:"musicModel,omitempty"` OutputFormat string `json:"outputFormat,omitempty"` DurationSeconds float64 `json:"durationSeconds,omitempty"` PromptInfluence *float64 `json:"promptInfluence,omitempty"` Loop bool `json:"loop,omitempty"` ForceInstrumental bool `json:"forceInstrumental,omitempty"` } type ElevenLabsAudioResponse struct { Prompt string `json:"prompt"` AudioType string `json:"audioType"` Filename string `json:"filename"` SavedPath string `json:"saved_path"` Audio string `json:"audio"` MimeType string `json:"mimeType"` } type ElevenLabsVoicesRequest struct { ElevenLabsKey string `json:"elevenLabsKey"` } type ElevenLabsVoiceOption struct { VoiceID string `json:"voiceId"` Name string `json:"name"` Category string `json:"category,omitempty"` Description string `json:"description,omitempty"` PreviewURL string `json:"previewUrl,omitempty"` Labels map[string]string `json:"labels,omitempty"` } type ElevenLabsVoicesResponse struct { Voices []ElevenLabsVoiceOption `json:"voices"` } func listElevenLabsVoicesHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } var req ElevenLabsVoicesRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { http.Error(w, "Invalid JSON body", http.StatusBadRequest) return } apiKey := strings.TrimSpace(req.ElevenLabsKey) if apiKey == "" { http.Error(w, "elevenLabsKey is required", http.StatusBadRequest) return } voices, err := fetchElevenLabsVoices(apiKey) if err != nil { msg := fmt.Sprintf("[ERROR] ElevenLabs voices fetch failed: %v", err) fmt.Println(msg) http.Error(w, msg, http.StatusInternalServerError) return } json.NewEncoder(w).Encode(ElevenLabsVoicesResponse{Voices: voices}) } func generateAudioHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } var req ElevenLabsAudioRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { http.Error(w, "Invalid JSON body", http.StatusBadRequest) return } req.Prompt = strings.TrimSpace(req.Prompt) audioType := normalizeAudioType(req.AudioType) apiKey := strings.TrimSpace(req.ElevenLabsKey) log.Printf("[ELEVENLABS] generation request type=%s prompt=%q", audioType, req.Prompt) if req.Prompt == "" { http.Error(w, "prompt is required", http.StatusBadRequest) return } if apiKey == "" { http.Error(w, "elevenLabsKey is required", http.StatusBadRequest) return } var ( audioBytes []byte mimeType string err error ) switch audioType { case "voice": audioBytes, mimeType, err = callElevenLabsVoice(req, apiKey) case "sound": audioBytes, mimeType, err = callElevenLabsSound(req, apiKey) case "music": audioBytes, mimeType, err = callElevenLabsMusic(req, apiKey) default: http.Error(w, "audioType must be one of: voice, sound, music", http.StatusBadRequest) return } if err != nil { msg := fmt.Sprintf("[ERROR] ElevenLabs %s generation failed: %v", audioType, err) fmt.Println(msg) log.Printf("[ELEVENLABS] generation failed type=%s err=%s", audioType, sanitizeElevenLabsError(err)) http.Error(w, msg, http.StatusInternalServerError) return } audioOutputDir := filepath.Join("saved_images", "audio") if err := os.MkdirAll(audioOutputDir, 0755); err != nil { fmt.Printf("[WARN] Failed creating %s folder: %v\n", audioOutputDir, err) } ext := extensionForAudioMimeType(mimeType) filename := fmt.Sprintf("%s_%d.%s", audioType, time.Now().UnixNano(), ext) savedPath := filepath.Join(audioOutputDir, filename) if err := os.WriteFile(savedPath, audioBytes, 0644); err != nil { msg := fmt.Sprintf("[ERROR] writing audio file: %v", err) fmt.Println(msg) http.Error(w, msg, http.StatusInternalServerError) return } resp := ElevenLabsAudioResponse{ Prompt: req.Prompt, AudioType: audioType, Filename: filename, SavedPath: savedPath, Audio: fmt.Sprintf("data:%s;base64,%s", mimeType, base64.StdEncoding.EncodeToString(audioBytes)), MimeType: mimeType, } log.Printf("[ELEVENLABS] generation success type=%s bytes=%d mime=%s file=%s", audioType, len(audioBytes), mimeType, filename) json.NewEncoder(w).Encode(resp) } func callElevenLabsVoice(req ElevenLabsAudioRequest, apiKey string) ([]byte, string, error) { voiceID := strings.TrimSpace(req.VoiceID) if voiceID == "" { voiceID = defaultElevenVoiceID } modelID := normalizeElevenLabsVoiceModel(req.VoiceModel) if modelID == "" { modelID = defaultElevenVoiceModel } params := neturl.Values{} outputFormat := strings.TrimSpace(req.OutputFormat) if outputFormat == "" { outputFormat = defaultElevenOutputFormat } params.Set("output_format", outputFormat) body := map[string]interface{}{ "text": req.Prompt, "model_id": modelID, } endpoint := fmt.Sprintf("%s/v1/text-to-speech/%s", elevenLabsBaseURL, neturl.PathEscape(voiceID)) audioBytes, mimeType, err := callElevenLabsBinaryAPI(endpoint, params, body, apiKey) if err != nil && modelID != defaultElevenVoiceModel && isElevenLabsModelNotFound(err) { log.Printf("[ELEVENLABS][VOICE] model=%s not found, retrying with %s", modelID, defaultElevenVoiceModel) body["model_id"] = defaultElevenVoiceModel return callElevenLabsBinaryAPI(endpoint, params, body, apiKey) } return audioBytes, mimeType, err } func callElevenLabsSound(req ElevenLabsAudioRequest, apiKey string) ([]byte, string, error) { params := neturl.Values{} outputFormat := strings.TrimSpace(req.OutputFormat) if outputFormat == "" { outputFormat = defaultElevenOutputFormat } params.Set("output_format", outputFormat) body := map[string]interface{}{ "text": req.Prompt, } if modelID := strings.TrimSpace(req.SoundModel); modelID != "" { body["model_id"] = modelID } if req.DurationSeconds > 0 { body["duration_seconds"] = req.DurationSeconds } if req.PromptInfluence != nil { body["prompt_influence"] = *req.PromptInfluence } if req.Loop { body["loop"] = true } return callElevenLabsBinaryAPI(elevenLabsBaseURL+"/v1/sound-generation", params, body, apiKey) } func callElevenLabsMusic(req ElevenLabsAudioRequest, apiKey string) ([]byte, string, error) { params := neturl.Values{} outputFormat := strings.TrimSpace(req.OutputFormat) if outputFormat == "" { outputFormat = defaultElevenOutputFormat } params.Set("output_format", outputFormat) body := map[string]interface{}{ "prompt": req.Prompt, } if modelID := strings.TrimSpace(req.MusicModel); modelID != "" { body["model_id"] = modelID } if req.DurationSeconds > 0 { body["music_length_ms"] = int(req.DurationSeconds * 1000.0) } if req.ForceInstrumental { body["is_instrumental"] = true } return callElevenLabsBinaryAPI(elevenLabsBaseURL+"/v1/music", params, body, apiKey) } func callElevenLabsBinaryAPI(endpoint string, query neturl.Values, body map[string]interface{}, apiKey string) ([]byte, string, error) { url := endpoint if len(query) > 0 { url += "?" + query.Encode() } reqBody, err := json.Marshal(body) if err != nil { return nil, "", fmt.Errorf("failed to marshal request: %w", err) } request, err := http.NewRequest("POST", url, bytes.NewReader(reqBody)) if err != nil { return nil, "", fmt.Errorf("failed to create request: %w", err) } request.Header.Set("Content-Type", "application/json") request.Header.Set("xi-api-key", apiKey) modelID, _ := body["model_id"].(string) promptText := "" if text, ok := body["text"].(string); ok { promptText = text } else if prompt, ok := body["prompt"].(string); ok { promptText = prompt } log.Printf("[ELEVENLABS] request endpoint=%s model=%s prompt=%q", endpoint, strings.TrimSpace(modelID), promptText) response, err := http.DefaultClient.Do(request) if err != nil { return nil, "", fmt.Errorf("failed to call ElevenLabs API: %w", err) } defer response.Body.Close() data, err := io.ReadAll(response.Body) if err != nil { return nil, "", fmt.Errorf("failed to read ElevenLabs response: %w", err) } if response.StatusCode < 200 || response.StatusCode >= 300 { log.Printf("[ELEVENLABS] error endpoint=%s status=%d body=%s", endpoint, response.StatusCode, truncateElevenLabsLog(string(data), 320)) return nil, "", fmt.Errorf("ElevenLabs API error (status %d): %s", response.StatusCode, string(data)) } mimeType := inferAudioMimeType(response.Header.Get("Content-Type"), data) log.Printf("[ELEVENLABS] success endpoint=%s status=%d bytes=%d mime=%s", endpoint, response.StatusCode, len(data), mimeType) return data, mimeType, nil } func fetchElevenLabsVoices(apiKey string) ([]ElevenLabsVoiceOption, error) { request, err := http.NewRequest("GET", elevenLabsBaseURL+"/v1/voices", nil) if err != nil { return nil, fmt.Errorf("failed to create request: %w", err) } request.Header.Set("xi-api-key", apiKey) response, err := http.DefaultClient.Do(request) if err != nil { return nil, fmt.Errorf("failed to call ElevenLabs API: %w", err) } defer response.Body.Close() data, err := io.ReadAll(response.Body) if err != nil { return nil, fmt.Errorf("failed to read ElevenLabs response: %w", err) } if response.StatusCode < 200 || response.StatusCode >= 300 { return nil, fmt.Errorf("ElevenLabs API error (status %d): %s", response.StatusCode, string(data)) } var decoded struct { Voices []struct { VoiceID string `json:"voice_id"` Name string `json:"name"` Category string `json:"category"` Description string `json:"description"` PreviewURL string `json:"preview_url"` Labels map[string]string `json:"labels"` } `json:"voices"` } if err := json.Unmarshal(data, &decoded); err != nil { return nil, fmt.Errorf("failed to parse ElevenLabs response: %w", err) } voices := make([]ElevenLabsVoiceOption, 0, len(decoded.Voices)) for _, v := range decoded.Voices { if strings.TrimSpace(v.VoiceID) == "" { continue } voices = append(voices, ElevenLabsVoiceOption{ VoiceID: v.VoiceID, Name: v.Name, Category: v.Category, Description: v.Description, PreviewURL: v.PreviewURL, Labels: v.Labels, }) } sort.SliceStable(voices, func(i, j int) bool { left := strings.ToLower(strings.TrimSpace(voices[i].Name)) right := strings.ToLower(strings.TrimSpace(voices[j].Name)) if left == right { return voices[i].VoiceID < voices[j].VoiceID } return left < right }) return voices, nil } func normalizeAudioType(value string) string { switch strings.ToLower(strings.TrimSpace(value)) { case "", "voice", "speech", "tts": return "voice" case "sound", "sfx", "sound_effect": return "sound" case "music", "song": return "music" default: return strings.ToLower(strings.TrimSpace(value)) } } func normalizeElevenLabsVoiceModel(value string) string { normalized := strings.ToLower(strings.TrimSpace(value)) if normalized == "" { return "" } switch normalized { case "default", "standard", "base", "multilingual", "multilingual_v2": return defaultElevenVoiceModel default: return strings.TrimSpace(value) } } func isElevenLabsModelNotFound(err error) bool { if err == nil { return false } lower := strings.ToLower(err.Error()) return strings.Contains(lower, "model_not_found") || (strings.Contains(lower, "model id") && strings.Contains(lower, "does not exist")) } func sanitizeElevenLabsError(err error) string { if err == nil { return "" } return truncateElevenLabsLog(strings.ReplaceAll(strings.TrimSpace(err.Error()), "\n", " "), 320) } func truncateElevenLabsLog(value string, max int) string { trimmed := strings.TrimSpace(value) if len(trimmed) <= max { return trimmed } if max < 4 { return trimmed[:max] } return trimmed[:max-3] + "..." } func inferAudioMimeType(contentType string, data []byte) string { trimmed := strings.TrimSpace(strings.ToLower(contentType)) if trimmed != "" { if semi := strings.Index(trimmed, ";"); semi >= 0 { trimmed = strings.TrimSpace(trimmed[:semi]) } if trimmed != "" && trimmed != "application/octet-stream" { return trimmed } } if len(data) >= 3 { if string(data[:3]) == "ID3" { return "audio/mpeg" } // MPEG frame sync. if data[0] == 0xFF && (data[1]&0xE0) == 0xE0 { return "audio/mpeg" } } if len(data) >= 12 { if string(data[:4]) == "RIFF" && string(data[8:12]) == "WAVE" { return "audio/wav" } } if len(data) >= 4 { if string(data[:4]) == "OggS" { return "audio/ogg" } if string(data[:4]) == "fLaC" { return "audio/flac" } } if len(data) >= 12 && string(data[4:8]) == "ftyp" { return "audio/mp4" } return "audio/mpeg" } func extensionForAudioMimeType(mimeType string) string { switch strings.ToLower(strings.TrimSpace(mimeType)) { case "audio/wav", "audio/wave", "audio/x-wav": return "wav" case "audio/ogg": return "ogg" case "audio/flac": return "flac" case "audio/mp4", "audio/x-m4a": return "m4a" default: return "mp3" } } ================================================ FILE: backend/fireworks_fireworks.go ================================================ package main import ( "bufio" "bytes" "encoding/json" "fmt" "io" "net/http" "regexp" "strings" "time" ) const fireworksChatCompletionsURL = "https://api.fireworks.ai/inference/v1/chat/completions" const ( fireworksChatMaxTokens = 4096 fireworksDrawToCodeMaxTokens = 16384 fireworksDefaultTemperature = 0.6 // Hold back a small tail so normalization can safely fix near-boundary chunks. fireworksStreamNormalizeHoldback = 256 ) var ( compactCommentCodeRegex = regexp.MustCompile(`(?m)(//[^\n]*?)\s+((?:const|let|var|function|document\.|window\.|if\s*\(|for\s*\(|[A-Za-z_$][A-Za-z0-9_$]*\.|[A-Za-z_$][A-Za-z0-9_$]*\())`) hexColorPercentCompactRegex = regexp.MustCompile(`(#[0-9A-Fa-f]{3,8})(\d{1,3}%)`) transitionAllCompactRegex = regexp.MustCompile(`transition:\s*all([0-9]+(?:\.[0-9]+)?s)`) animationDurationCompactRegex = regexp.MustCompile(`animation:\s*([a-zA-Z_-][a-zA-Z0-9_-]*)([0-9]+(?:\.[0-9]+)?s)`) boxShadowDoubleZeroCompact = regexp.MustCompile(`box-shadow:\s*00([0-9]+px)`) boxShadowCompactTwoOffsetRegex = regexp.MustCompile(`box-shadow:\s*0([0-9]+px)([0-9]+px)`) fireworksGenericDataURIRegex = regexp.MustCompile(`(?is)data:[^"'\s>]+;base64,[A-Za-z0-9+/=\s]{128,}`) fireworksImgSrcBase64Regex = regexp.MustCompile(`(?is)]*\bsrc\s*=\s*["'][A-Za-z0-9+/=\s]{256,}["']`) fireworksImageSigBase64Regex = regexp.MustCompile(`(?is)["'](?:iVBORw0KGgo|/9j/|R0lGOD|UklGR|Qk0)[A-Za-z0-9+/=\s]{256,}["']`) fireworksFunctionalityConstRE = regexp.MustCompile(`(?i)\bfunctionality\s+const\b`) fireworksThinkTagRegex = regexp.MustCompile(`(?is)`) // Go's regexp (RE2) rejects counted repeats above 1000. fireworksLongBase64RunRegex = regexp.MustCompile(`[A-Za-z0-9+/]{1000,}={0,2}`) ) func callFireworksDrawToCodeApiFull(imageBase64, userPrompt, template, imageSource, apiKey, fireworksModel string) (*R1Response, error) { if strings.TrimSpace(apiKey) == "" { return &R1Response{ AIResponse: "No Fireworks API key provided. Please add your key in Settings.", TokenUsage: map[string]int{"inputTokens": 0, "outputTokens": 0, "totalTokens": 0}, Cost: 0, }, nil } messages := buildFireworksDrawToCodeMessages(imageBase64, userPrompt, template, imageSource, fireworksModel, apiKey) aiResp, inputTokens, outputTokens, err := callFireworksChatCompletions(messages, apiKey, fireworksDrawToCodeMaxTokens, fireworksDefaultTemperature, fireworksModel, true) if err != nil { return nil, err } return &R1Response{ AIResponse: aiResp, TokenUsage: map[string]int{ "inputTokens": inputTokens, "outputTokens": outputTokens, "totalTokens": inputTokens + outputTokens, }, Cost: 0, }, nil } func callFireworksDrawToCodeStreaming(w http.ResponseWriter, imageBase64, userPrompt, template, imageSource, apiKey, fireworksModel string) error { if strings.TrimSpace(apiKey) == "" { return fmt.Errorf("no Fireworks API key provided") } messages := buildFireworksDrawToCodeMessages(imageBase64, userPrompt, template, imageSource, fireworksModel, apiKey) return callFireworksChatCompletionsStreaming(w, messages, apiKey, fireworksDrawToCodeMaxTokens, fireworksDefaultTemperature, fireworksModel, true) } func callFireworksApiGo(prevMsgs []ChatMessage, newMsg, apiKey, fireworksModel, attachmentBase64, attachmentMime string) (*R1Response, error) { if strings.TrimSpace(apiKey) == "" { return &R1Response{ AIResponse: "No Fireworks API key provided. Please add your key in Settings.", TokenUsage: map[string]int{"inputTokens": 0, "outputTokens": 0, "totalTokens": 0}, Cost: 0, }, nil } messages := buildFireworksChatMessages(prevMsgs, newMsg, fireworksModel, attachmentBase64, attachmentMime) aiResp, inputTokens, outputTokens, err := callFireworksChatCompletions(messages, apiKey, fireworksChatMaxTokens, fireworksDefaultTemperature, fireworksModel, false) if err != nil { return nil, err } return &R1Response{ AIResponse: aiResp, TokenUsage: map[string]int{ "inputTokens": inputTokens, "outputTokens": outputTokens, "totalTokens": inputTokens + outputTokens, }, Cost: 0, }, nil } func callFireworksChatStreaming(w http.ResponseWriter, prevMsgs []ChatMessage, newMsg, apiKey, fireworksModel, attachmentBase64, attachmentMime string) error { if strings.TrimSpace(apiKey) == "" { return fmt.Errorf("no Fireworks API key provided") } messages := buildFireworksChatMessages(prevMsgs, newMsg, fireworksModel, attachmentBase64, attachmentMime) return callFireworksChatCompletionsStreaming(w, messages, apiKey, fireworksChatMaxTokens, fireworksDefaultTemperature, fireworksModel, false) } func buildFireworksChatMessages(prevMsgs []ChatMessage, newMsg, fireworksModel, attachmentBase64, attachmentMime string) []map[string]interface{} { systemMsg := defaultSystemPrompt for _, m := range prevMsgs { if m.Role == "system" { systemMsg = m.Content } } messages := []map[string]interface{}{ { "role": "system", "content": systemMsg, }, } for _, m := range prevMsgs { if m.Role == "user" || m.Role == "assistant" { messages = append(messages, map[string]interface{}{ "role": m.Role, "content": m.Content, }) } } userContent := interface{}(newMsg) trimmedAttachment := strings.TrimSpace(attachmentBase64) trimmedMime := strings.TrimSpace(attachmentMime) if trimmedAttachment != "" && trimmedMime != "" { resolvedModel := normalizeFireworksModelID(fireworksModel) if fireworksModelSupportsImageInput(resolvedModel) { if strings.HasPrefix(strings.ToLower(trimmedMime), "image/") { userContent = []interface{}{ map[string]interface{}{ "type": "text", "text": newMsg, }, map[string]interface{}{ "type": "image_url", "image_url": map[string]interface{}{ "url": fireworksAttachmentDataURI(trimmedAttachment, trimmedMime), }, }, } fmt.Printf("[Fireworks DEBUG] inline image attachment enabled model=%s mime=%s\n", resolvedModel, trimmedMime) } else { fmt.Printf("[Fireworks DEBUG] attachment ignored for model=%s (non-image mime=%q)\n", resolvedModel, trimmedMime) } } else { fmt.Printf("[Fireworks DEBUG] attachment ignored for model=%s (image input unsupported)\n", resolvedModel) } } messages = append(messages, map[string]interface{}{ "role": "user", "content": userContent, }) return messages } func callFireworksChatCompletions(messages []map[string]interface{}, apiKey string, maxTokens int, temperature float64, fireworksModel string, enforceNoEmbeddedImageData bool) (string, int, int, error) { resolvedModel := normalizeFireworksModelID(fireworksModel) hasImage := fireworksMessagesContainImage(messages) logFireworksRequestSummary(resolvedModel, false, hasImage, maxTokens, messages) reqBody := map[string]interface{}{ "model": resolvedModel, "max_tokens": maxTokens, "top_p": 1, "top_k": 40, "presence_penalty": 0, "frequency_penalty": 0, "temperature": temperature, "messages": messages, } if prettyBody, err := json.MarshalIndent(reqBody, "", " "); err == nil { fmt.Printf("[Fireworks DEBUG] request body stream=false >>>\n%s\n<<< END Fireworks request body\n", string(prettyBody)) } jsonBytes, _ := json.Marshal(reqBody) req, err := http.NewRequest("POST", fireworksChatCompletionsURL, bytes.NewReader(jsonBytes)) if err != nil { return "", 0, 0, err } req.Header.Set("Accept", "application/json") req.Header.Set("Content-Type", "application/json") req.Header.Set("Authorization", "Bearer "+apiKey) resp, err := http.DefaultClient.Do(req) if err != nil { return "", 0, 0, err } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { body, _ := io.ReadAll(resp.Body) bodyText := strings.TrimSpace(string(body)) fmt.Printf("[Fireworks ERROR] model=%s stream=false status=%d hasImage=%v body=%s\n", resolvedModel, resp.StatusCode, hasImage, truncateForLog(bodyText)) return "", 0, 0, fmt.Errorf("Fireworks API error (%d): %s", resp.StatusCode, bodyText) } var completion struct { Choices []struct { Message struct { Content interface{} `json:"content"` ReasoningContent interface{} `json:"reasoning_content"` } `json:"message"` ReasoningContent interface{} `json:"reasoning_content"` FinishReason interface{} `json:"finish_reason"` } `json:"choices"` Usage struct { PromptTokens int `json:"prompt_tokens"` CompletionTokens int `json:"completion_tokens"` TotalTokens int `json:"total_tokens"` } `json:"usage"` } if err := json.NewDecoder(resp.Body).Decode(&completion); err != nil { return "", 0, 0, fmt.Errorf("failed to parse Fireworks response: %w", err) } if len(completion.Choices) == 0 { return "", 0, 0, fmt.Errorf("no choices in Fireworks response") } content := fireworkContentToText(completion.Choices[0].Message.Content) reasoning := fireworkContentToText(completion.Choices[0].Message.ReasoningContent) if strings.TrimSpace(reasoning) == "" { reasoning = fireworkContentToText(completion.Choices[0].ReasoningContent) } if !enforceNoEmbeddedImageData && strings.TrimSpace(reasoning) != "" { content = "" + strings.TrimSpace(reasoning) + "" + content } if enforceNoEmbeddedImageData { content = normalizeFireworksDrawToCodeOutput(content) } if enforceNoEmbeddedImageData { if reason, blocked := detectFireworksEmbeddedImagePayload(content); blocked { return "", 0, 0, embeddedImagePayloadError(reason) } } finishReason := normalizeFinishReason(completion.Choices[0].FinishReason) if finishReason != "" { fmt.Printf("[Fireworks] completion finish_reason=%s model=%s stream=false\n", finishReason, resolvedModel) } if strings.EqualFold(finishReason, "length") { fmt.Printf("[Fireworks WARN] completion reached max_tokens=%d model=%s stream=false\n", maxTokens, resolvedModel) if enforceNoEmbeddedImageData { return "", 0, 0, fmt.Errorf("Fireworks draw-to-code output was truncated at max_tokens=%d. Please regenerate with a shorter prompt.", maxTokens) } } inputTokens := completion.Usage.PromptTokens outputTokens := completion.Usage.CompletionTokens if inputTokens == 0 && outputTokens == 0 { inputTokens = estimateTokenCountForMessages(messages) outputTokens = estimateTokenCount(content) } return content, inputTokens, outputTokens, nil } func callFireworksChatCompletionsStreaming(w http.ResponseWriter, messages []map[string]interface{}, apiKey string, maxTokens int, temperature float64, fireworksModel string, enforceNoEmbeddedImageData bool) error { resolvedModel := normalizeFireworksModelID(fireworksModel) hasImage := fireworksMessagesContainImage(messages) logFireworksRequestSummary(resolvedModel, true, hasImage, maxTokens, messages) reqBody := map[string]interface{}{ "model": resolvedModel, "max_tokens": maxTokens, "top_p": 1, "top_k": 40, "presence_penalty": 0, "frequency_penalty": 0, "temperature": temperature, "messages": messages, "stream": true, } if prettyBody, err := json.MarshalIndent(reqBody, "", " "); err == nil { fmt.Printf("[Fireworks DEBUG] request body stream=true >>>\n%s\n<<< END Fireworks request body\n", string(prettyBody)) } jsonBytes, _ := json.Marshal(reqBody) req, err := http.NewRequest("POST", fireworksChatCompletionsURL, bytes.NewReader(jsonBytes)) if err != nil { return err } req.Header.Set("Accept", "text/event-stream, application/json") req.Header.Set("Content-Type", "application/json") req.Header.Set("Authorization", "Bearer "+apiKey) resp, err := http.DefaultClient.Do(req) if err != nil { return err } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { body, _ := io.ReadAll(resp.Body) bodyText := strings.TrimSpace(string(body)) fmt.Printf("[Fireworks ERROR] model=%s stream=true status=%d hasImage=%v body=%s\n", resolvedModel, resp.StatusCode, hasImage, truncateForLog(bodyText)) return fmt.Errorf("Fireworks API error (%d): %s", resp.StatusCode, bodyText) } contentType := strings.ToLower(strings.TrimSpace(resp.Header.Get("Content-Type"))) fmt.Printf("[Fireworks] stream response model=%s hasImage=%v contentType=%q\n", resolvedModel, hasImage, contentType) // Some models/multimodal paths may ignore stream=true and return a regular JSON completion. // Handle that gracefully instead of silently returning an empty streamed result. if !strings.Contains(contentType, "text/event-stream") { body, _ := io.ReadAll(resp.Body) bodyText := strings.TrimSpace(string(body)) fmt.Printf("[Fireworks] stream fallback model=%s hasImage=%v contentType=%q body=%s\n", resolvedModel, hasImage, contentType, truncateForLog(bodyText)) var completion struct { Choices []struct { Message struct { Content interface{} `json:"content"` ReasoningContent interface{} `json:"reasoning_content"` } `json:"message"` ReasoningContent interface{} `json:"reasoning_content"` } `json:"choices"` Usage struct { PromptTokens int `json:"prompt_tokens"` CompletionTokens int `json:"completion_tokens"` } `json:"usage"` } if err := json.Unmarshal(body, &completion); err != nil { return fmt.Errorf("Fireworks stream fallback parse error: %w", err) } if len(completion.Choices) == 0 { return fmt.Errorf("Fireworks stream fallback returned no choices") } content := fireworkContentToText(completion.Choices[0].Message.Content) reasoning := fireworkContentToText(completion.Choices[0].Message.ReasoningContent) if strings.TrimSpace(reasoning) == "" { reasoning = fireworkContentToText(completion.Choices[0].ReasoningContent) } if !enforceNoEmbeddedImageData && strings.TrimSpace(reasoning) != "" { content = "" + strings.TrimSpace(reasoning) + "" + content } if enforceNoEmbeddedImageData { content = normalizeFireworksDrawToCodeOutput(content) } if enforceNoEmbeddedImageData { if reason, blocked := detectFireworksEmbeddedImagePayload(content); blocked { return embeddedImagePayloadError(reason) } } if strings.TrimSpace(content) == "" { return fmt.Errorf("Fireworks stream fallback returned empty content") } if err := emitFireworksStreamChunk(w, content); err != nil { return err } promptTokens := completion.Usage.PromptTokens completionTokens := completion.Usage.CompletionTokens if promptTokens == 0 && completionTokens == 0 { promptTokens = estimateTokenCountForMessages(messages) completionTokens = estimateTokenCount(content) } return emitFireworksStreamDone(w, promptTokens, completionTokens) } reader := bufio.NewReader(resp.Body) var responseBuilder strings.Builder // Keep real-time streaming for draw-to-code UX. bufferDrawOutput := false promptTokens := 0 completionTokens := 0 dataEvents := 0 parseErrors := 0 finishReasonLength := false seenFinishReason := "" rollingTail := "" normalizedEmitted := 0 var reasoningBuilder strings.Builder var reasoningSent bool var reasoningStartTimeSet bool var reasoningStartTimestamp int64 var reasoningDurationSent bool lastThinkingStep := "" for { line, err := reader.ReadString('\n') if len(line) > 0 { trimmedLine := strings.TrimSpace(line) if strings.HasPrefix(trimmedLine, "data:") { dataEvents++ dataStr := strings.TrimSpace(trimmedLine[5:]) if dataStr == "" { continue } if dataStr == "[DONE]" { break } var chunk struct { Choices []struct { Delta struct { Content interface{} `json:"content"` ReasoningContent interface{} `json:"reasoning_content"` } `json:"delta"` Message struct { Content interface{} `json:"content"` ReasoningContent interface{} `json:"reasoning_content"` } `json:"message"` ReasoningContent interface{} `json:"reasoning_content"` FinishReason interface{} `json:"finish_reason"` } `json:"choices"` Usage struct { PromptTokens int `json:"prompt_tokens"` CompletionTokens int `json:"completion_tokens"` } `json:"usage"` } if unmarshalErr := json.Unmarshal([]byte(dataStr), &chunk); unmarshalErr != nil { parseErrors++ if parseErrors <= 3 { fmt.Printf("[Fireworks WARN] stream chunk parse failed model=%s hasImage=%v err=%v raw=%s\n", resolvedModel, hasImage, unmarshalErr, truncateForLog(dataStr)) } continue } if chunk.Usage.PromptTokens > 0 { promptTokens = chunk.Usage.PromptTokens completionTokens = chunk.Usage.CompletionTokens } if len(chunk.Choices) > 0 { reasoningChunk := fireworkContentToText(chunk.Choices[0].Delta.ReasoningContent) if strings.TrimSpace(reasoningChunk) == "" { reasoningChunk = fireworkContentToText(chunk.Choices[0].Message.ReasoningContent) } if strings.TrimSpace(reasoningChunk) == "" { reasoningChunk = fireworkContentToText(chunk.Choices[0].ReasoningContent) } if !enforceNoEmbeddedImageData && strings.TrimSpace(reasoningChunk) != "" { if !reasoningStartTimeSet { reasoningStartTimeSet = true reasoningStartTimestamp = time.Now().UnixMilli() placeholderStep := "Thinking..." thinkingStepData := map[string]string{"thinkingStep": placeholderStep} thinkingStepBytes, _ := json.Marshal(thinkingStepData) fmt.Fprintf(w, "data: %s\n\n", thinkingStepBytes) if f, ok := w.(http.Flusher); ok { f.Flush() } lastThinkingStep = placeholderStep } reasoningBuilder.WriteString(reasoningChunk) // Emit better step titles as soon as enough reasoning text arrives. stepTitle := extractFireworksThinkingStepTitle(reasoningBuilder.String()) if isMeaningfulThinkingStepTitle(stepTitle) && stepTitle != lastThinkingStep { thinkingStepData := map[string]string{"thinkingStep": stepTitle} thinkingStepBytes, _ := json.Marshal(thinkingStepData) fmt.Fprintf(w, "data: %s\n\n", thinkingStepBytes) if f, ok := w.(http.Flusher); ok { f.Flush() } lastThinkingStep = stepTitle } } reason := normalizeFinishReason(chunk.Choices[0].FinishReason) if reason != "" { seenFinishReason = reason if strings.EqualFold(reason, "length") { finishReasonLength = true } } content := fireworkContentToText(chunk.Choices[0].Delta.Content) if strings.TrimSpace(content) == "" { content = fireworkContentToText(chunk.Choices[0].Message.Content) } if strings.TrimSpace(content) == "" { continue } if !enforceNoEmbeddedImageData && !reasoningSent && reasoningBuilder.Len() > 0 { thinkingText := "" + strings.TrimSpace(reasoningBuilder.String()) + "" if err := emitFireworksStreamChunk(w, thinkingText); err != nil { return err } reasoningSent = true } if enforceNoEmbeddedImageData { candidate := rollingTail + content if reason, blocked := detectFireworksEmbeddedImagePayload(candidate); blocked { return embeddedImagePayloadError(reason) } if len(candidate) > 4096 { rollingTail = candidate[len(candidate)-4096:] } else { rollingTail = candidate } } responseBuilder.WriteString(content) if !bufferDrawOutput { chunkToEmit := content if enforceNoEmbeddedImageData { normalizedCurrent := normalizeFireworksDrawToCodeOutput(responseBuilder.String()) safeLen := len(normalizedCurrent) - fireworksStreamNormalizeHoldback if safeLen < 0 { safeLen = 0 } if safeLen > normalizedEmitted { chunkToEmit = normalizedCurrent[normalizedEmitted:safeLen] normalizedEmitted = safeLen } else { chunkToEmit = "" } } if chunkToEmit != "" { if err := emitFireworksStreamChunk(w, chunkToEmit); err != nil { return err } } } if !enforceNoEmbeddedImageData && !reasoningDurationSent && reasoningStartTimeSet { durationSeconds := float64(time.Now().UnixMilli()-reasoningStartTimestamp) / 1000.0 metaData := map[string]interface{}{ "meta": map[string]float64{ "thinkingSeconds": durationSeconds, }, } metaBytes, _ := json.Marshal(metaData) fmt.Fprintf(w, "data: %s\n\n", metaBytes) if f, ok := w.(http.Flusher); ok { f.Flush() } reasoningDurationSent = true } } } } if err != nil { if err == io.EOF { break } return err } } finalText := responseBuilder.String() if enforceNoEmbeddedImageData { finalText = normalizeFireworksDrawToCodeOutput(finalText) } if !bufferDrawOutput && enforceNoEmbeddedImageData { if normalizedEmitted < len(finalText) { if err := emitFireworksStreamChunk(w, finalText[normalizedEmitted:]); err != nil { return err } normalizedEmitted = len(finalText) } responseBuilder.Reset() responseBuilder.WriteString(finalText) } if bufferDrawOutput { if enforceNoEmbeddedImageData { finalText = normalizeFireworksDrawToCodeOutput(finalText) } responseBuilder.Reset() responseBuilder.WriteString(finalText) if strings.TrimSpace(finalText) != "" { if err := emitFireworksStreamChunk(w, finalText); err != nil { return err } } } if promptTokens == 0 && completionTokens == 0 { promptTokens = estimateTokenCountForMessages(messages) completionTokens = estimateTokenCount(responseBuilder.String()) } if strings.TrimSpace(responseBuilder.String()) == "" { return fmt.Errorf("Fireworks stream ended without content (model=%s, hasImage=%v, events=%d)", resolvedModel, hasImage, dataEvents) } if !enforceNoEmbeddedImageData && !reasoningDurationSent && reasoningStartTimeSet { durationSeconds := float64(time.Now().UnixMilli()-reasoningStartTimestamp) / 1000.0 metaData := map[string]interface{}{ "meta": map[string]float64{ "thinkingSeconds": durationSeconds, }, } metaBytes, _ := json.Marshal(metaData) fmt.Fprintf(w, "data: %s\n\n", metaBytes) if f, ok := w.(http.Flusher); ok { f.Flush() } reasoningDurationSent = true } if enforceNoEmbeddedImageData { if reason, blocked := detectFireworksEmbeddedImagePayload(responseBuilder.String()); blocked { return embeddedImagePayloadError(reason) } } if seenFinishReason != "" { fmt.Printf("[Fireworks] stream finish_reason=%s model=%s\n", seenFinishReason, resolvedModel) } if finishReasonLength { fmt.Printf("[Fireworks WARN] stream reached max_tokens=%d model=%s\n", maxTokens, resolvedModel) if enforceNoEmbeddedImageData { return fmt.Errorf("Fireworks draw-to-code output was truncated at max_tokens=%d. Please regenerate with a shorter prompt.", maxTokens) } } fmt.Printf("[Fireworks] stream complete model=%s hasImage=%v events=%d parseErrors=%d chars=%d\n", resolvedModel, hasImage, dataEvents, parseErrors, responseBuilder.Len()) return emitFireworksStreamDone(w, promptTokens, completionTokens) } func fireworkContentToText(content interface{}) string { switch v := content.(type) { case string: return v case map[string]interface{}: if text, ok := v["text"].(string); ok { return text } if nested, ok := v["content"]; ok { return fireworkContentToText(nested) } return "" case []interface{}: var builder strings.Builder for _, part := range v { partMap, ok := part.(map[string]interface{}) if !ok { continue } partType, _ := partMap["type"].(string) if (partType == "text" || partType == "output_text") && partMap["text"] != nil { if text, ok := partMap["text"].(string); ok { builder.WriteString(text) continue } } if text, ok := partMap["text"].(string); ok { builder.WriteString(text) continue } if nested, ok := partMap["content"]; ok { builder.WriteString(fireworkContentToText(nested)) } } return builder.String() default: return "" } } func estimateTokenCountForMessages(messages []map[string]interface{}) int { totalChars := 0 for _, msg := range messages { if content, ok := msg["content"]; ok { totalChars += len(fireworkContentToText(content)) } } return estimateTokenCount(strings.Repeat("x", totalChars)) } func estimateTokenCount(text string) int { trimmed := strings.TrimSpace(text) if trimmed == "" { return 0 } return (len(trimmed) + 3) / 4 } func fireworksMessagesContainImage(messages []map[string]interface{}) bool { for _, msg := range messages { content, ok := msg["content"] if !ok { continue } parts, ok := content.([]interface{}) if !ok { continue } for _, part := range parts { partMap, ok := part.(map[string]interface{}) if !ok { continue } if partType, _ := partMap["type"].(string); strings.EqualFold(partType, "image_url") { return true } } } return false } func fireworksModelSupportsImageInput(modelID string) bool { resolved := strings.ToLower(strings.TrimSpace(normalizeFireworksModelID(modelID))) switch resolved { case "accounts/fireworks/models/kimi-k2p5": return true default: return false } } func fireworksAttachmentDataURI(attachmentBase64, attachmentMime string) string { trimmed := strings.TrimSpace(attachmentBase64) if strings.HasPrefix(strings.ToLower(trimmed), "data:") { return trimmed } mime := strings.TrimSpace(attachmentMime) if mime == "" { mime = "image/jpeg" } return fmt.Sprintf("data:%s;base64,%s", mime, trimmed) } func buildFireworksDrawToCodeMessages(imageBase64, userPrompt, template, imageSource, fireworksModel, apiKey string) []map[string]interface{} { effectiveImageSource := imageSource if !strings.EqualFold(strings.TrimSpace(effectiveImageSource), "Glowby Images") { effectiveImageSource = "Glowby Images" fmt.Printf("[Fireworks DEBUG] forcing imageSource to Glowby Images for safe placeholder output (was=%q)\n", imageSource) } resolvedModel := normalizeFireworksModelID(fireworksModel) systemPrompt := getSystemPrompt(template, effectiveImageSource) systemPrompt += " Replace @tailwind placeholders with the Tailwind CSS CDN link to load the real framework." systemPrompt += " Glowby Images mode is strict: NEVER embed image bytes in output. NEVER output data: URIs, base64 blobs, blob: URLs, object URLs, or inline binary arrays." systemPrompt += " Use glowbyimage: placeholders ONLY. Every must start with src='about:blank', then JavaScript assigns .src from a glowbyimage variable." systemPrompt += " If you are uncertain about an image, create another descriptive glowbyimage: placeholder instead of embedding bytes." systemPrompt += " Return a COMPLETE, valid HTML document from through . Never truncate output." systemPrompt += " Do NOT minify. Format output for humans with consistent indentation and spacing in CSS/JS (example: transition: all 0.3s ease; and color stops like #1a1a2e 0%)." systemPrompt += " Never put JavaScript code on the same line as // comments. If comments are used, they must be standalone lines." systemPrompt += " Glowby image wiring contract: in one plain `, escapedTitle, statusClass, escapedTitle, escapedMessage) _, _ = io.WriteString(w, page) } func exchangeOpenAIOAuthCodeForCredential(code, codeVerifier, redirectURI string) (openCodeOpenAIOAuthCredential, error) { form := neturl.Values{} form.Set("grant_type", "authorization_code") form.Set("code", strings.TrimSpace(code)) form.Set("redirect_uri", strings.TrimSpace(redirectURI)) form.Set("client_id", openAIOAuthClientID()) form.Set("code_verifier", strings.TrimSpace(codeVerifier)) req, err := http.NewRequest(http.MethodPost, openAIOAuthIssuer+"/oauth/token", strings.NewReader(form.Encode())) if err != nil { return openCodeOpenAIOAuthCredential{}, err } req.Header.Set("Content-Type", "application/x-www-form-urlencoded") client := &http.Client{Timeout: 45 * time.Second} resp, err := client.Do(req) if err != nil { return openCodeOpenAIOAuthCredential{}, err } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) if resp.StatusCode < 200 || resp.StatusCode >= 300 { message := strings.TrimSpace(string(body)) if len(message) > 500 { message = message[:500] } return openCodeOpenAIOAuthCredential{}, fmt.Errorf("oauth token exchange failed (%d): %s", resp.StatusCode, message) } var decoded struct { AccessToken string `json:"access_token"` RefreshToken string `json:"refresh_token"` ExpiresIn int `json:"expires_in"` } if err := json.Unmarshal(body, &decoded); err != nil { return openCodeOpenAIOAuthCredential{}, fmt.Errorf("oauth token decode failed: %w", err) } access := strings.TrimSpace(decoded.AccessToken) if access == "" { return openCodeOpenAIOAuthCredential{}, fmt.Errorf("oauth token exchange returned empty access token") } expiresAtReference := 0.0 if decoded.ExpiresIn > 0 { expiresAtReference = float64(time.Now().Add(time.Duration(decoded.ExpiresIn)*time.Second).Unix()) - 978307200 } return openCodeOpenAIOAuthCredential{ AccessToken: access, RefreshToken: strings.TrimSpace(decoded.RefreshToken), ExpiresAtReferenceSeconds: expiresAtReference, Source: "oauth_callback", }, nil } // isServerRunning checks if OpenCode server is accessible func isServerRunning(serverURL string) bool { ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) defer cancel() client := &http.Client{} req, err := http.NewRequestWithContext(ctx, "GET", serverURL+"/health", nil) if err != nil { return false } applyOpenCodeServerAuthorization(req) resp, err := client.Do(req) if err != nil { return false } defer resp.Body.Close() return resp.StatusCode == http.StatusOK } // startOpenCodeServer attempts to start the OpenCode server with provided API keys. // When openAIAuthMode is "codex-jwt", the OpenAI key is a JWT token and should NOT be // passed as OPENAI_API_KEY; instead, auth will be synced via PUT /auth/openai after startup. func startOpenCodeServer(openAIKey, anthropicKey, geminiKey, fireworksKey, openRouterKey, openCodeZenKey, xaiKey, model, openAIAuthMode string) error { openAIAuthMode = normalizeOpenAIAuthMode(openAIAuthMode) useOpenCodeConfigRuntime := openAIAuthMode == "opencode-config" // Check if opencode CLI is available if _, err := exec.LookPath("opencode"); err != nil { return fmt.Errorf("opencode CLI not found in PATH: %w", err) } var runtimePaths openCodeRuntimePaths if !useOpenCodeConfigRuntime { var err error runtimePaths, err = glowbomOpenCodeRuntimePaths() if err != nil { return err } if err := ensureOpenCodeRuntimeDirs(runtimePaths); err != nil { return err } } // Set environment variables for model and API keys env := os.Environ() if !useOpenCodeConfigRuntime { env = setEnvValue(env, "XDG_DATA_HOME", runtimePaths.DataHome) env = setEnvValue(env, "XDG_STATE_HOME", runtimePaths.StateHome) } // Only pass OPENAI_API_KEY for standard API key mode. // In codex-jwt mode, auth is synced via the OpenCode REST API after startup. if openAIKey != "" && openAIAuthMode != "codex-jwt" { env = append(env, "OPENAI_API_KEY="+openAIKey) } if anthropicKey != "" { env = append(env, "ANTHROPIC_API_KEY="+anthropicKey) } if geminiKey != "" { env = append(env, "GOOGLE_GENERATIVE_AI_API_KEY="+geminiKey) env = append(env, "GOOGLE_API_KEY="+geminiKey) } if fireworksKey != "" { env = append(env, "FIREWORKS_API_KEY="+fireworksKey) } if openRouterKey != "" { env = append(env, "OPENROUTER_API_KEY="+openRouterKey) } if openCodeZenKey != "" { env = append(env, "OPENCODE_API_KEY="+openCodeZenKey) } if xaiKey != "" { env = append(env, "XAI_API_KEY="+xaiKey) } // Set model modelToUse := model if modelToUse != "" { env = append(env, "OPENCODE_MODEL="+modelToUse) } else { if useOpenCodeConfigRuntime { // Keep OpenCode's configured default model unchanged. modelToUse = "(opencode configured default)" } else { // Default model based on available keys if anthropicKey != "" { modelToUse = "anthropic/claude-sonnet-4-6" } else if openAIKey != "" { modelToUse = "openai/gpt-5.4" } else if xaiKey != "" { modelToUse = "xai/grok-4-1-fast-non-reasoning" } else if openCodeZenKey != "" { modelToUse = "opencode/kimi-k2.5-free" } else { modelToUse = "anthropic/claude-sonnet-4-6" } env = append(env, "OPENCODE_MODEL="+modelToUse) } } log.Printf("[OPENCODE] Starting server with model: %s (authMode: %s)", modelToUse, openAIAuthMode) if useOpenCodeConfigRuntime { log.Printf("[OPENCODE] Runtime paths - using existing OpenCode runtime/config from environment") } else { log.Printf("[OPENCODE] Runtime paths - dataHome=%s stateHome=%s configHome=%s", runtimePaths.DataHome, runtimePaths.StateHome, runtimePaths.ConfigHome) } log.Printf("[OPENCODE] API keys provided - Anthropic: %t, OpenAI: %t, Gemini: %t, Fireworks: %t, OpenRouter: %t, OpenCodeZen: %t, xAI: %t", anthropicKey != "", openAIKey != "", geminiKey != "", fireworksKey != "", openRouterKey != "", openCodeZenKey != "", xaiKey != "") // Start server in background with manageable logging by default. // Override via GLOWBOM_OPENCODE_LOG_LEVEL (e.g. DEBUG) when deeper diagnostics are needed. openCodeLogLevel := strings.ToUpper(strings.TrimSpace(os.Getenv("GLOWBOM_OPENCODE_LOG_LEVEL"))) if openCodeLogLevel == "" { openCodeLogLevel = "WARN" } cmd := exec.Command( "opencode", "serve", "--port", getAgentPort(), "--hostname", openCodeServerHostname(), "--print-logs", "--log-level", openCodeLogLevel, ) cmd.Env = env // Create pipes to capture stdout and stderr stdoutPipe, err := cmd.StdoutPipe() if err != nil { return fmt.Errorf("failed to create stdout pipe: %w", err) } stderrPipe, err := cmd.StderrPipe() if err != nil { return fmt.Errorf("failed to create stderr pipe: %w", err) } if err := cmd.Start(); err != nil { return fmt.Errorf("failed to start opencode serve: %w", err) } setOpenCodeOpenAIAuthState(openAIAuthMode, openAIKey) // Log stdout in background go func() { scanner := bufio.NewScanner(stdoutPipe) for scanner.Scan() { line := scanner.Text() recordUsageLimitHintFromText(line) if shouldSuppressOpenCodeServerLogLine(line) { continue } log.Printf("[OPENCODE-SERVER] %s", line) } if err := scanner.Err(); err != nil { log.Printf("[OPENCODE-SERVER] stdout scanner error: %v", err) } }() // Log stderr in background go func() { scanner := bufio.NewScanner(stderrPipe) for scanner.Scan() { line := scanner.Text() recordUsageLimitHintFromText(line) if shouldSuppressOpenCodeServerLogLine(line) || shouldSuppressOpenCodeServerStderrInfoLine(line) { continue } log.Printf("[OPENCODE-SERVER-ERR] %s", line) } if err := scanner.Err(); err != nil { log.Printf("[OPENCODE-SERVER-ERR] stderr scanner error: %v", err) } }() // Wait for command completion in background go func() { if err := cmd.Wait(); err != nil { log.Printf("[OPENCODE] Server process exited: %v", err) } }() return nil } // syncOpenAIAuth syncs ChatGPT OAuth credentials to the running OpenCode server // via PUT /auth/openai so OpenCode routes calls to chatgpt.com/backend-api/codex/responses // instead of api.openai.com/v1/responses. func syncOpenAIAuth(serverURL, accessToken, refreshToken string, expiresAt float64) error { if accessToken == "" { return fmt.Errorf("no access token to sync") } // Convert expiresAt from NSDate reference (2001-01-01) to Unix milliseconds // NSDate reference date is 978307200 seconds after Unix epoch var expiresMs int64 if expiresAt > 0 { expiresUnix := expiresAt + 978307200 expiresMs = int64(expiresUnix * 1000) } else { // Default: 1 hour from now expiresMs = time.Now().Add(time.Hour).UnixMilli() } // If no refresh token, use a placeholder (OpenCode requires it) if refreshToken == "" { refreshToken = "none" } payload := map[string]interface{}{ "type": "oauth", "access": accessToken, "refresh": refreshToken, "expires": expiresMs, } body, err := json.Marshal(payload) if err != nil { return fmt.Errorf("failed to marshal auth payload: %w", err) } req, err := http.NewRequest(http.MethodPut, serverURL+"/auth/openai", bytes.NewReader(body)) if err != nil { return fmt.Errorf("failed to create auth sync request: %w", err) } req.Header.Set("Content-Type", "application/json") applyOpenCodeServerAuthorization(req) client := &http.Client{Timeout: 10 * time.Second} resp, err := client.Do(req) if err != nil { return fmt.Errorf("auth sync request failed: %w", err) } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { respBody, _ := io.ReadAll(resp.Body) return fmt.Errorf("auth sync returned %d: %s", resp.StatusCode, string(respBody)) } log.Printf("[OPENCODE] Successfully synced OpenAI OAuth credentials to OpenCode server") return nil } func clearOpenAIAuth(serverURL string) error { req, err := http.NewRequest(http.MethodDelete, serverURL+"/auth/openai", nil) if err != nil { return fmt.Errorf("failed creating OpenAI auth clear request: %w", err) } applyOpenCodeServerAuthorization(req) client := &http.Client{Timeout: 10 * time.Second} resp, err := client.Do(req) if err != nil { return fmt.Errorf("OpenAI auth clear request failed: %w", err) } defer resp.Body.Close() // Treat not found as already cleared. if resp.StatusCode == http.StatusNotFound { return nil } if resp.StatusCode >= 200 && resp.StatusCode < 300 { return nil } respBody, _ := io.ReadAll(resp.Body) return fmt.Errorf("OpenAI auth clear returned %d: %s", resp.StatusCode, strings.TrimSpace(string(respBody))) } func applyOpenAIAuthModeToRunningServer(serverURL, openAIAuthMode, openAIKey, openAIRefreshToken string, openAIExpiresAt float64) error { openAIAuthMode = normalizeOpenAIAuthMode(openAIAuthMode) if openAIAuthMode == "opencode-config" { setOpenCodeOpenAIAuthState(openAIAuthMode, "") return nil } if openAIAuthMode == "codex-jwt" { if strings.TrimSpace(openAIKey) != "" { if err := syncOpenAIAuth(serverURL, openAIKey, openAIRefreshToken, openAIExpiresAt); err != nil { return fmt.Errorf("failed to sync OpenAI oauth auth: %w", err) } } setOpenCodeOpenAIAuthState(openAIAuthMode, openAIKey) return nil } if openAIAuthMode == "api-key" { if err := clearOpenAIAuth(serverURL); err != nil { return fmt.Errorf("failed clearing OpenAI oauth auth: %w", err) } setOpenCodeOpenAIAuthState(openAIAuthMode, openAIKey) } return nil } func waitForOpenCodeServerReady(serverURL string, timeout time.Duration) error { deadline := time.Now().Add(timeout) for { if isServerRunning(serverURL) { return nil } if time.Now().After(deadline) { return fmt.Errorf("OpenCode server did not become healthy within %s", timeout) } time.Sleep(200 * time.Millisecond) } } func stopOpenCodeServerOnPort(port string) error { out, err := exec.Command("lsof", "-nP", "-iTCP:"+port, "-sTCP:LISTEN", "-t").CombinedOutput() if err != nil { // lsof exits with status 1 when no process is listening on the port. if exitErr, ok := err.(*exec.ExitError); ok && exitErr.ExitCode() == 1 { return nil } return fmt.Errorf("failed to discover process on port %s: %w", port, err) } pidStrings := strings.Fields(string(out)) if len(pidStrings) == 0 { return nil } var stopErrs []string for _, pidStr := range pidStrings { pid, convErr := strconv.Atoi(strings.TrimSpace(pidStr)) if convErr != nil { stopErrs = append(stopErrs, fmt.Sprintf("invalid pid %q", pidStr)) continue } proc, findErr := os.FindProcess(pid) if findErr != nil { stopErrs = append(stopErrs, fmt.Sprintf("pid %d lookup failed: %v", pid, findErr)) continue } if killErr := proc.Kill(); killErr != nil { stopErrs = append(stopErrs, fmt.Sprintf("pid %d kill failed: %v", pid, killErr)) continue } log.Printf("[OPENCODE] Stopped existing server process on port %s (pid=%d)", port, pid) } if len(stopErrs) > 0 { return fmt.Errorf("%s", strings.Join(stopErrs, "; ")) } return nil } func restartOpenCodeServer(openAIKey, anthropicKey, geminiKey, fireworksKey, openRouterKey, openCodeZenKey, xaiKey, model, openAIAuthMode string) error { port := getAgentPort() serverURL := "http://" + openCodeServerHostname() + ":" + port if err := stopOpenCodeServerOnPort(port); err != nil { return fmt.Errorf("failed to stop existing OpenCode server: %w", err) } time.Sleep(250 * time.Millisecond) if err := startOpenCodeServer(openAIKey, anthropicKey, geminiKey, fireworksKey, openRouterKey, openCodeZenKey, xaiKey, model, openAIAuthMode); err != nil { return fmt.Errorf("failed to restart OpenCode server: %w", err) } if err := waitForOpenCodeServerReady(serverURL, 12*time.Second); err != nil { return err } return nil } func shouldAttemptOpenCodeRestartForProvider(providerID, openAIKey, anthropicKey, geminiKey, fireworksKey, openRouterKey, openCodeZenKey, xaiKey string) bool { switch providerID { case "openai": return strings.TrimSpace(openAIKey) != "" case "anthropic": return strings.TrimSpace(anthropicKey) != "" case "google": return strings.TrimSpace(geminiKey) != "" case "fireworks", "fireworks-ai": return strings.TrimSpace(fireworksKey) != "" case "openrouter": return strings.TrimSpace(openRouterKey) != "" case "opencode": return strings.TrimSpace(openCodeZenKey) != "" case "xai": return strings.TrimSpace(xaiKey) != "" default: return false } } func normalizeOpenCodeProviderID(providerID string) string { switch strings.ToLower(strings.TrimSpace(providerID)) { case "fireworks": return "fireworks-ai" default: return providerID } } func isStrictModelPreflightProvider(providerID string) bool { switch strings.ToLower(strings.TrimSpace(providerID)) { case "openai": return true default: return false } } func ensureOpenCodeModelAvailable(projectPath, providerID, modelID string) error { if strings.TrimSpace(providerID) == "" || strings.TrimSpace(modelID) == "" { return nil } providerID = normalizeOpenCodeProviderID(providerID) driver := GetOpenCodeDriver() ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() params := opencode.AppProvidersParams{} if dir := strings.TrimSpace(projectPath); dir != "" { params.Directory = opencode.F(dir) } providersResp, err := driver.client.App.Providers(ctx, params) if err != nil { return fmt.Errorf("failed to fetch OpenCode providers: %w", err) } var selectedProvider *opencode.Provider for i := range providersResp.Providers { p := &providersResp.Providers[i] if strings.EqualFold(p.ID, providerID) { selectedProvider = p break } } if selectedProvider == nil { return fmt.Errorf("provider %q is not available on the running OpenCode server", providerID) } if _, ok := selectedProvider.Models[modelID]; ok { return nil } modelIDs := make([]string, 0, len(selectedProvider.Models)) for id := range selectedProvider.Models { modelIDs = append(modelIDs, id) } sort.Strings(modelIDs) if len(modelIDs) == 0 { return fmt.Errorf("provider %q is available but returned no models", providerID) } preview := modelIDs if len(preview) > 6 { preview = preview[:6] } if strings.EqualFold(providerID, "openai") && isOpenAICodexForwardCompatModelID(modelID) { if _, ok := selectedProvider.Models["gpt-5.2-codex"]; ok { log.Printf("[OPENCODE] Model %q not present in provider %q registry; allowing forward-compat via template gpt-5.2-codex", modelID, providerID) return nil } if _, ok := selectedProvider.Models["gpt-5.3-codex"]; ok { log.Printf("[OPENCODE] Model %q not present in provider %q registry; allowing forward-compat via template gpt-5.3-codex", modelID, providerID) return nil } } if !isStrictModelPreflightProvider(providerID) { log.Printf("[OPENCODE] Model %q not present in provider %q registry; proceeding without strict block (sample available: %s)", modelID, providerID, strings.Join(preview, ", ")) return nil } return fmt.Errorf("model %q is not available for provider %q (available: %s)", modelID, providerID, strings.Join(preview, ", ")) } type openCodeProviderModelProbe struct { ProviderFound bool ModelRegistered bool ProviderModelIDs []string ProviderModelSample []string } func probeOpenCodeProviderModel(projectPath, providerID, modelID string) (openCodeProviderModelProbe, error) { result := openCodeProviderModelProbe{} if strings.TrimSpace(providerID) == "" || strings.TrimSpace(modelID) == "" { return result, nil } providerID = normalizeOpenCodeProviderID(providerID) driver := GetOpenCodeDriver() ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() params := opencode.AppProvidersParams{} if dir := strings.TrimSpace(projectPath); dir != "" { params.Directory = opencode.F(dir) } providersResp, err := driver.client.App.Providers(ctx, params) if err != nil { return result, err } var selectedProvider *opencode.Provider for i := range providersResp.Providers { p := &providersResp.Providers[i] if strings.EqualFold(p.ID, providerID) { selectedProvider = p break } } if selectedProvider == nil { return result, nil } result.ProviderFound = true modelIDs := make([]string, 0, len(selectedProvider.Models)) for id := range selectedProvider.Models { modelIDs = append(modelIDs, id) } sort.Strings(modelIDs) result.ProviderModelIDs = modelIDs if len(modelIDs) > 12 { result.ProviderModelSample = modelIDs[:12] } else { result.ProviderModelSample = modelIDs } _, result.ModelRegistered = selectedProvider.Models[modelID] return result, nil } func openCodeZenAgentModelFallbackCandidates(modelID string) []string { normalized := normalizeOpenCodeZenModelID(modelID) candidates := []string{normalized} switch normalized { case "minimax-m2.5-free": candidates = append(candidates, "kimi-k2.5-free", "glm-5-free", "big-pickle") case "glm-5-free": candidates = append(candidates, "kimi-k2.5-free", "big-pickle") case "big-pickle": candidates = append(candidates, "kimi-k2.5-free", "glm-5-free") case "kimi-k2.5-free": candidates = append(candidates, "glm-5-free", "big-pickle") default: candidates = append(candidates, "kimi-k2.5-free", "glm-5-free", "big-pickle") } seen := make(map[string]struct{}, len(candidates)) out := make([]string, 0, len(candidates)) for _, candidate := range candidates { candidate = strings.TrimSpace(candidate) if candidate == "" { continue } if _, exists := seen[candidate]; exists { continue } seen[candidate] = struct{}{} out = append(out, candidate) } return out } func ollamaAgentModelFallbackCandidates(modelID string) []string { trimmed := strings.TrimSpace(strings.ToLower(modelID)) trimmed = strings.TrimPrefix(trimmed, "ollama/") if trimmed == "" { return nil } candidates := []string{} switch trimmed { case "qwen3.5", "qwen-3.5", "qwen3.5:latest", "qwen-3.5:latest": candidates = append(candidates, "qwen3.5", "qwen3.5:latest", "qwen-3.5", "qwen-3.5:latest", ) case "gpt-oss", "gpt-oss:20b", "gpt-oss:20b:latest": candidates = append(candidates, "gpt-oss:20b", "gpt-oss:20b:latest", "gpt-oss", "gpt-oss:latest", ) case "qwen3-coder", "qwen3-coder:30b", "qwen3-coder:30b:latest": candidates = append(candidates, "qwen3-coder:30b", "qwen3-coder:30b:latest", "qwen3-coder", ) default: candidates = append(candidates, trimmed) if strings.HasSuffix(trimmed, ":latest") { base := strings.TrimSuffix(trimmed, ":latest") if base != "" { candidates = append(candidates, base) } } else { candidates = append(candidates, trimmed+":latest") } } seen := make(map[string]struct{}, len(candidates)) out := make([]string, 0, len(candidates)) for _, candidate := range candidates { candidate = strings.TrimSpace(candidate) if candidate == "" { continue } if _, exists := seen[candidate]; exists { continue } seen[candidate] = struct{}{} out = append(out, candidate) } return out } func resolveSessionModelForRequest(projectPath, requestedModel string) (modelID, providerID string, fallbackNote string) { modelID, providerID = parseModel(requestedModel) trimmedRequested := strings.TrimSpace(requestedModel) requestedModelID := trimmedRequested if slash := strings.Index(trimmedRequested, "/"); slash > 0 && slash+1 < len(trimmedRequested) { requestedProvider := strings.TrimSpace(trimmedRequested[:slash]) if strings.EqualFold(requestedProvider, providerID) { requestedModelID = strings.TrimSpace(trimmedRequested[slash+1:]) } } if strings.EqualFold(providerID, "opencode") { probe, probeErr := probeOpenCodeProviderModel(projectPath, providerID, modelID) if probeErr != nil { log.Printf("[OPENCODE] Warning: failed probing provider registry for %s/%s: %v", providerID, modelID, probeErr) return modelID, providerID, "" } if !probe.ProviderFound || probe.ModelRegistered { return modelID, providerID, "" } available := make(map[string]struct{}, len(probe.ProviderModelIDs)) for _, id := range probe.ProviderModelIDs { available[strings.TrimSpace(strings.ToLower(id))] = struct{}{} } for _, candidate := range openCodeZenAgentModelFallbackCandidates(modelID) { if _, ok := available[strings.ToLower(candidate)]; !ok { continue } if strings.EqualFold(candidate, modelID) { return modelID, providerID, "" } fallbackNote = fmt.Sprintf("OpenCode model %s/%s is unavailable on this server build; using %s/%s instead.", providerID, modelID, providerID, candidate) log.Printf("[OPENCODE] %s Available sample: %s", fallbackNote, strings.Join(probe.ProviderModelSample, ", ")) return candidate, providerID, fallbackNote } log.Printf("[OPENCODE] No compatible OpenCode Zen fallback found for requested model %s/%s. Available sample: %s", providerID, modelID, strings.Join(probe.ProviderModelSample, ", ")) return modelID, providerID, "" } if strings.EqualFold(providerID, "ollama") { probe, probeErr := probeOpenCodeProviderModel(projectPath, providerID, modelID) if probeErr != nil { log.Printf("[OPENCODE] Warning: failed probing provider registry for %s/%s: %v", providerID, modelID, probeErr) return modelID, providerID, "" } if !probe.ProviderFound || probe.ModelRegistered { return modelID, providerID, "" } availableByLower := make(map[string]string, len(probe.ProviderModelIDs)) for _, id := range probe.ProviderModelIDs { availableByLower[strings.TrimSpace(strings.ToLower(id))] = id } for _, candidate := range ollamaAgentModelFallbackCandidates(modelID) { actualID, ok := availableByLower[strings.ToLower(candidate)] if !ok { continue } if strings.EqualFold(actualID, modelID) { return actualID, providerID, "" } fallbackNote = fmt.Sprintf("OpenCode model %s/%s is unavailable on this server build; using %s/%s instead.", providerID, modelID, providerID, actualID) log.Printf("[OPENCODE] %s Available sample: %s", fallbackNote, strings.Join(probe.ProviderModelSample, ", ")) return actualID, providerID, fallbackNote } log.Printf("[OPENCODE] No compatible Ollama fallback found for requested model %s/%s. Available sample: %s", providerID, modelID, strings.Join(probe.ProviderModelSample, ", ")) return modelID, providerID, "" } if strings.EqualFold(providerID, "xai") && strings.Contains(trimmedRequested, "/") && requestedModelID != "" && !strings.EqualFold(requestedModelID, modelID) { fallbackNote = fmt.Sprintf("OpenCode xAI provider does not expose %s yet; using xai/%s instead.", requestedModelID, modelID) } return modelID, providerID, fallbackNote } func ensureOpenCodeServerReady(projectPath, model, openAIKey, anthropicKey, geminiKey, fireworksKey, openRouterKey, openCodeZenKey, xaiKey, openAIAuthMode, openAIRefreshToken string, openAIExpiresAt float64) error { openCodeServerPrepMu.Lock() defer openCodeServerPrepMu.Unlock() serverURL := "http://" + openCodeServerHostname() + ":" + getAgentPort() openAIAuthMode = normalizeOpenAIAuthMode(openAIAuthMode) if openAIAuthMode == "codex-jwt" && strings.TrimSpace(openAIKey) == "" { resolved, err := resolveOpenAIOAuthCredentialForConnect(OpenCodeAuthConnectRequest{ OpenAIKey: openAIKey, OpenAIRefreshToken: openAIRefreshToken, OpenAIExpiresAt: openAIExpiresAt, }) if err == nil { openAIKey = resolved.AccessToken if strings.TrimSpace(openAIRefreshToken) == "" { openAIRefreshToken = resolved.RefreshToken } if openAIExpiresAt <= 0 { openAIExpiresAt = resolved.ExpiresAtReferenceSeconds } log.Printf("[OPENCODE] Reusing ChatGPT OAuth credential from %s for codex-jwt mode", resolved.Source) } } modelForServer := strings.TrimSpace(model) if modelForServer != "" { normalizedModelID, normalizedProviderID := parseModel(modelForServer) if strings.TrimSpace(normalizedModelID) != "" && strings.TrimSpace(normalizedProviderID) != "" { modelForServer = normalizedProviderID + "/" + normalizedModelID } } serverWasAlreadyRunning := isServerRunning(serverURL) if serverWasAlreadyRunning { if !getOpenCodeOpenAIAuthState().known { if openAIAuthMode == "opencode-config" { log.Printf("[OPENCODE] Running server detected with unknown auth/runtime state; preserving server in opencode-config mode") setOpenCodeOpenAIAuthState(openAIAuthMode, "") } else { log.Printf("[OPENCODE] Running server detected with unknown auth/runtime state; restarting under Glowbom-managed runtime") if restartErr := restartOpenCodeServer(openAIKey, anthropicKey, geminiKey, fireworksKey, openRouterKey, openCodeZenKey, xaiKey, modelForServer, openAIAuthMode); restartErr != nil { return fmt.Errorf("failed restarting inherited OpenCode server: %w", restartErr) } } } } else { log.Printf("[OPENCODE] Server not running, starting with provided keys...") if err := startOpenCodeServer(openAIKey, anthropicKey, geminiKey, fireworksKey, openRouterKey, openCodeZenKey, xaiKey, modelForServer, openAIAuthMode); err != nil { return fmt.Errorf("failed to start OpenCode server: %w", err) } if err := waitForOpenCodeServerReady(serverURL, 12*time.Second); err != nil { return err } } if shouldRestartForOpenAIAuthChange(serverWasAlreadyRunning, openAIAuthMode, openAIKey) { log.Printf("[OPENCODE] Restarting server to apply OpenAI auth transition (mode=%s)", openAIAuthMode) if restartErr := restartOpenCodeServer(openAIKey, anthropicKey, geminiKey, fireworksKey, openRouterKey, openCodeZenKey, xaiKey, modelForServer, openAIAuthMode); restartErr != nil { return fmt.Errorf("failed to restart OpenCode server for OpenAI auth transition: %w", restartErr) } } if err := applyOpenAIAuthModeToRunningServer(serverURL, openAIAuthMode, openAIKey, openAIRefreshToken, openAIExpiresAt); err != nil { return err } requestedModel := strings.TrimSpace(modelForServer) if requestedModel == "" { return nil } modelID, providerID := parseModel(requestedModel) if err := ensureOpenCodeModelAvailable(projectPath, providerID, modelID); err == nil { return nil } else { log.Printf("[OPENCODE] Model availability preflight failed for %s/%s: %v", providerID, modelID, err) if !shouldAttemptOpenCodeRestartForProvider(providerID, openAIKey, anthropicKey, geminiKey, fireworksKey, openRouterKey, openCodeZenKey, xaiKey) { return err } log.Printf("[OPENCODE] Attempting OpenCode server restart to refresh credentials for provider=%s", providerID) if restartErr := restartOpenCodeServer(openAIKey, anthropicKey, geminiKey, fireworksKey, openRouterKey, openCodeZenKey, xaiKey, modelForServer, openAIAuthMode); restartErr != nil { return fmt.Errorf("OpenCode restart failed while preparing %s/%s: %w", providerID, modelID, restartErr) } if err := applyOpenAIAuthModeToRunningServer(serverURL, openAIAuthMode, openAIKey, openAIRefreshToken, openAIExpiresAt); err != nil { return err } if finalErr := ensureOpenCodeModelAvailable(projectPath, providerID, modelID); finalErr != nil { return fmt.Errorf("requested model %s/%s is unavailable after restart: %w", providerID, modelID, finalErr) } log.Printf("[OPENCODE] Model availability preflight succeeded after restart for %s/%s", providerID, modelID) } return nil } // NewOpenCodeDriver creates a new OpenCode driver instance // Checks OPENCODE_URL env var, then falls back to default http://127.0.0.1: // Note: Server auto-start is now handled per-request with API keys func NewOpenCodeDriver(serverURL string) *OpenCodeDriver { if serverURL == "" { serverURL = os.Getenv("OPENCODE_URL") } if serverURL == "" { serverURL = "http://" + openCodeServerHostname() + ":" + getAgentPort() } log.Printf("[OPENCODE] Connecting to server at %s", serverURL) clientOptions := []option.RequestOption{ option.WithBaseURL(serverURL), } if header := openCodeServerAuthorizationHeader(); header != "" { clientOptions = append(clientOptions, option.WithHeader("Authorization", header)) } client := opencode.NewClient(clientOptions...) return &OpenCodeDriver{ client: client, serverURL: serverURL, questionReplyPath: "/question/{requestID}/reply", permissionReplyPath: "/permission/{requestID}/reply", repliedQuestions: make(map[string]time.Time), } } // ============================================================ // Project Management // ============================================================ // GetProjectPaths returns standard paths for a project root func GetProjectPaths(projectRoot string) ProjectPaths { return ProjectPaths{ Root: projectRoot, Prototype: filepath.Join(projectRoot, "prototype"), Assets: filepath.Join(projectRoot, "prototype", "assets"), iOS: filepath.Join(projectRoot, "ios"), Android: filepath.Join(projectRoot, "android"), Web: filepath.Join(projectRoot, "web"), Godot: filepath.Join(projectRoot, "godot"), Manifest: filepath.Join(projectRoot, "glowbom.json"), } } // InitProject creates a new Glowbom project structure func InitProject(projectRoot, name string) (*GlowbomProject, error) { paths := GetProjectPaths(projectRoot) // Create directory structure dirs := []string{ paths.Root, paths.Prototype, paths.Assets, } for _, dir := range dirs { if err := os.MkdirAll(dir, 0755); err != nil { return nil, fmt.Errorf("failed to create directory %s: %w", dir, err) } } // Create project manifest now := time.Now().UTC().Format(time.RFC3339) project := &GlowbomProject{ Name: name, Version: "1.0.0", Targets: map[string]Target{ "ios": {Enabled: true, OutputDir: "ios", Stack: "swiftui"}, "android": {Enabled: true, OutputDir: "android", Stack: "kotlin"}, "web": {Enabled: true, OutputDir: "web", Stack: "nextjs"}, "godot": {Enabled: false, OutputDir: "godot", Stack: "godot"}, }, CreatedAt: now, UpdatedAt: now, } // Write manifest if err := SaveProject(paths.Manifest, project); err != nil { return nil, err } fmt.Printf("[PROJECT] Initialized project '%s' at %s\n", name, projectRoot) return project, nil } // LoadProject loads a project from its manifest func LoadProject(manifestPath string) (*GlowbomProject, error) { data, err := os.ReadFile(manifestPath) if err != nil { return nil, fmt.Errorf("failed to read manifest: %w", err) } var project GlowbomProject if err := json.Unmarshal(data, &project); err != nil { return nil, fmt.Errorf("failed to parse manifest: %w", err) } return &project, nil } // SaveProject saves a project manifest func SaveProject(manifestPath string, project *GlowbomProject) error { project.UpdatedAt = time.Now().UTC().Format(time.RFC3339) data, err := json.MarshalIndent(project, "", " ") if err != nil { return fmt.Errorf("failed to serialize manifest: %w", err) } if err := os.WriteFile(manifestPath, data, 0644); err != nil { return fmt.Errorf("failed to write manifest: %w", err) } return nil } // SavePrototype saves HTML and assets to the project's prototype directory func SavePrototype(projectRoot, html string, assets map[string][]byte) error { paths := GetProjectPaths(projectRoot) // Ensure directories exist if err := os.MkdirAll(paths.Prototype, 0755); err != nil { return err } if err := os.MkdirAll(paths.Assets, 0755); err != nil { return err } // Write HTML htmlPath := filepath.Join(paths.Prototype, "index.html") if err := os.WriteFile(htmlPath, []byte(html), 0644); err != nil { return fmt.Errorf("failed to write prototype HTML: %w", err) } // Write assets for name, data := range assets { assetPath := filepath.Join(paths.Assets, name) if err := os.WriteFile(assetPath, data, 0644); err != nil { return fmt.Errorf("failed to write asset %s: %w", name, err) } } fmt.Printf("[PROJECT] Saved prototype with %d assets\n", len(assets)) return nil } // LoadPrototype loads the prototype HTML from a project func LoadPrototype(projectRoot string) (string, error) { paths := GetProjectPaths(projectRoot) htmlPath := filepath.Join(paths.Prototype, "index.html") data, err := os.ReadFile(htmlPath) if err != nil { return "", fmt.Errorf("failed to read prototype: %w", err) } return string(data), nil } // GetTargetDir returns the output directory for a target language func GetTargetDir(projectRoot, targetLang string) string { paths := GetProjectPaths(projectRoot) switch targetLang { case "swiftui", "ios": return paths.iOS case "kotlin", "android": return paths.Android case "nextjs", "web": return paths.Web case "godot", "games": return paths.Godot case "ipados", "macos", "visionos", "watchos", "tvos", "wearos", "androidtv", "androidauto", "windows", "linux", "server": return filepath.Join(projectRoot, targetLang) default: return filepath.Join(projectRoot, targetLang) } } // ============================================================ // Translation // ============================================================ // TranslateToProduction translates HTML prototype to production code func (d *OpenCodeDriver) TranslateToProduction(ctx context.Context, req OpenCodeTranslateRequest) (*OpenCodeTranslateResponse, error) { log.Printf("[OPENCODE] Starting translation to %s", req.TargetLang) var projectRoot, sourceHTML, targetDir string // Determine source and target based on request type if req.ProjectPath != "" { // Project-based mode: read from project structure projectRoot = req.ProjectPath paths := GetProjectPaths(projectRoot) // Verify project exists if _, err := os.Stat(paths.Manifest); os.IsNotExist(err) { log.Printf("[OPENCODE] Error: Not a Glowbom project: %s (missing glowbom.json)", projectRoot) return nil, fmt.Errorf("not a Glowbom project: %s (missing glowbom.json)", projectRoot) } // Load prototype HTML html, err := LoadPrototype(projectRoot) if err != nil { log.Printf("[OPENCODE] Error: Failed to load prototype from %s: %v", paths.Prototype, err) return nil, fmt.Errorf("failed to load prototype: %w", err) } sourceHTML = html if req.TargetDir != "" { targetDir = filepath.Join(projectRoot, req.TargetDir) } else if project, err := LoadProject(paths.Manifest); err == nil { targetKey := req.TargetID if targetKey == "" { targetKey = req.TargetLang } if target, ok := project.Targets[targetKey]; ok && target.OutputDir != "" { targetDir = filepath.Join(projectRoot, target.OutputDir) } else { for _, target := range project.Targets { if target.Stack == req.TargetLang && target.OutputDir != "" { targetDir = filepath.Join(projectRoot, target.OutputDir) break } } } } if targetDir == "" { targetDir = GetTargetDir(projectRoot, req.TargetLang) } log.Printf("[OPENCODE] Project mode: Loading from %s, translating to %s", paths.Prototype, targetDir) } else { // Legacy mode: direct HTML input if req.SourceHTML == "" { log.Printf("[OPENCODE] Error: Neither projectPath nor sourceHtml provided") return nil, fmt.Errorf("either projectPath or sourceHtml is required") } sourceHTML = req.SourceHTML // Use provided dir or create temp if req.ProjectDir != "" { projectRoot = req.ProjectDir targetDir = req.ProjectDir } else { tmpDir, err := os.MkdirTemp("", "glowbom-translate-*") if err != nil { log.Printf("[OPENCODE] Error: Failed to create temp directory: %v", err) return nil, fmt.Errorf("failed to create temp directory: %w", err) } projectRoot = tmpDir targetDir = tmpDir } // Write source HTML for agent reference if err := os.MkdirAll(projectRoot, 0755); err != nil { log.Printf("[OPENCODE] Error: Failed to create directory %s: %v", projectRoot, err) return nil, fmt.Errorf("failed to create directory: %w", err) } htmlPath := filepath.Join(projectRoot, "prototype.html") if err := os.WriteFile(htmlPath, []byte(sourceHTML), 0644); err != nil { log.Printf("[OPENCODE] Error: Failed to write prototype HTML: %v", err) return nil, fmt.Errorf("failed to write prototype HTML: %w", err) } log.Printf("[OPENCODE] Legacy mode: Translating to %s", targetDir) } // Ensure target directory exists if err := os.MkdirAll(targetDir, 0755); err != nil { log.Printf("[OPENCODE] Error: Failed to create target directory %s: %v", targetDir, err) return nil, fmt.Errorf("failed to create target directory: %w", err) } log.Printf("[OPENCODE] Creating new session for translation task") // Create a new session for this translation task session, err := d.client.Session.New(ctx, opencode.SessionNewParams{ Title: opencode.F(fmt.Sprintf("Translate to %s", req.TargetLang)), Directory: opencode.F(projectRoot), }) if err != nil { log.Printf("[OPENCODE] Error: Failed to create session: %v", err) return nil, fmt.Errorf("failed to create session: %w", err) } log.Printf("[OPENCODE] Session created: %s", session.ID) // Build the translation prompt with project context prompt := buildProjectTranslationPrompt(sourceHTML, req.TargetLang, projectRoot, targetDir) log.Printf("[OPENCODE] Built translation prompt (%d chars)", len(prompt)) // Determine model to use modelID, providerID, fallbackNote := resolveSessionModelForRequest(projectRoot, req.Model) log.Printf("[OPENCODE] Requested model: %s, resolved to: %s/%s", req.Model, providerID, modelID) if fallbackNote != "" { log.Printf("[OPENCODE] %s", fallbackNote) } // Send the translation prompt to the agent log.Printf("[OPENCODE] Sending prompt to agent") response, err := d.sendSessionPrompt(ctx, session.ID, opencode.SessionPromptParams{ Parts: opencode.F([]opencode.SessionPromptParamsPartUnion{ opencode.TextPartInputParam{ Type: opencode.F(opencode.TextPartInputTypeText), Text: opencode.F(prompt), }, }), Model: opencode.F(opencode.SessionPromptParamsModel{ ModelID: opencode.F(modelID), ProviderID: opencode.F(providerID), }), Directory: opencode.F(projectRoot), }) if err != nil { log.Printf("[OPENCODE] Error: Failed to send prompt: %v", err) return nil, fmt.Errorf("failed to send prompt: %w", err) } if response != nil { log.Printf("[OPENCODE] Prompt sent successfully, tokens used: %.0f input + %.0f output", response.Info.Tokens.Input, response.Info.Tokens.Output) } else { log.Printf("[OPENCODE] Prompt sent successfully (no synchronous response payload)") } // Collect generated files from target directory files, err := d.collectGeneratedFiles(ctx, targetDir) if err != nil { log.Printf("[OPENCODE] Warning: Failed to collect files: %v", err) } else { log.Printf("[OPENCODE] Collected %d generated files", len(files)) } // Update project manifest if project-based if req.ProjectPath != "" { paths := GetProjectPaths(projectRoot) if project, err := LoadProject(paths.Manifest); err == nil { targetKey := req.TargetID if targetKey == "" { targetKey = req.TargetLang } if _, ok := project.Targets[targetKey]; !ok { for key, target := range project.Targets { if target.Stack == req.TargetLang { targetKey = key break } } } if _, ok := project.Targets[targetKey]; !ok { switch req.TargetLang { case "swiftui": targetKey = "ios" case "kotlin": targetKey = "android" case "nextjs": targetKey = "web" case "godot", "games": targetKey = "godot" } } if target, ok := project.Targets[targetKey]; ok { target.LastBuild = time.Now().UTC().Format(time.RFC3339) project.Targets[targetKey] = target SaveProject(paths.Manifest, project) log.Printf("[OPENCODE] Updated project manifest for target %s", targetKey) } } else { log.Printf("[OPENCODE] Warning: Could not update project manifest: %v", err) } } log.Printf("[OPENCODE] Translation completed successfully") return &OpenCodeTranslateResponse{ SessionID: session.ID, Success: true, Files: files, TokensUsed: response.Info.Tokens.Input + response.Info.Tokens.Output, Cost: response.Info.Cost, }, nil } // TranslateToProductionStreaming translates with real-time streaming to HTTP response func (d *OpenCodeDriver) TranslateToProductionStreaming(ctx context.Context, w http.ResponseWriter, req OpenCodeTranslateRequest) error { log.Printf("[OPENCODE] Starting streaming translation to %s", req.TargetLang) // Set up SSE headers w.Header().Set("Content-Type", "text/event-stream") w.Header().Set("Cache-Control", "no-cache") w.Header().Set("Connection", "keep-alive") flusher, ok := w.(http.Flusher) if !ok { log.Printf("[OPENCODE] Error: Streaming not supported") return fmt.Errorf("streaming not supported") } sendSSEData(w, flusher, map[string]interface{}{"output": "Starting translation with OpenCode agent..."}) var projectRoot, sourceHTML, targetDir string // Determine source and target based on request type. if req.ProjectPath != "" { projectRoot = req.ProjectPath paths := GetProjectPaths(projectRoot) if _, err := os.Stat(paths.Manifest); os.IsNotExist(err) { msg := fmt.Sprintf("Not a Glowbom project: %s (missing glowbom.json)", projectRoot) sendSSEData(w, flusher, map[string]interface{}{"done": true, "success": false, "error": msg}) return errors.New(msg) } html, err := LoadPrototype(projectRoot) if err != nil { msg := userFacingAgentErrorMessage(fmt.Sprintf("failed to load prototype: %v", err)) sendSSEData(w, flusher, map[string]interface{}{"done": true, "success": false, "error": msg}) return err } sourceHTML = html if req.TargetDir != "" { targetDir = filepath.Join(projectRoot, req.TargetDir) } else if project, err := LoadProject(paths.Manifest); err == nil { targetKey := req.TargetID if targetKey == "" { targetKey = req.TargetLang } if target, ok := project.Targets[targetKey]; ok && target.OutputDir != "" { targetDir = filepath.Join(projectRoot, target.OutputDir) } else { for _, target := range project.Targets { if target.Stack == req.TargetLang && target.OutputDir != "" { targetDir = filepath.Join(projectRoot, target.OutputDir) break } } } } if targetDir == "" { targetDir = GetTargetDir(projectRoot, req.TargetLang) } } else { // Legacy mode: direct HTML input. if req.SourceHTML == "" { msg := "either projectPath or sourceHtml is required" sendSSEData(w, flusher, map[string]interface{}{"done": true, "success": false, "error": msg}) return errors.New(msg) } sourceHTML = req.SourceHTML if req.ProjectDir != "" { projectRoot = req.ProjectDir targetDir = req.ProjectDir } else { tmpDir, err := os.MkdirTemp("", "glowbom-translate-*") if err != nil { msg := userFacingAgentErrorMessage(fmt.Sprintf("failed to create temp directory: %v", err)) sendSSEData(w, flusher, map[string]interface{}{"done": true, "success": false, "error": msg}) return err } projectRoot = tmpDir targetDir = tmpDir } if err := os.MkdirAll(projectRoot, 0755); err != nil { msg := userFacingAgentErrorMessage(fmt.Sprintf("failed to create directory: %v", err)) sendSSEData(w, flusher, map[string]interface{}{"done": true, "success": false, "error": msg}) return err } htmlPath := filepath.Join(projectRoot, "prototype.html") if err := os.WriteFile(htmlPath, []byte(sourceHTML), 0644); err != nil { msg := userFacingAgentErrorMessage(fmt.Sprintf("failed to write prototype HTML: %v", err)) sendSSEData(w, flusher, map[string]interface{}{"done": true, "success": false, "error": msg}) return err } } if err := os.MkdirAll(targetDir, 0755); err != nil { msg := userFacingAgentErrorMessage(fmt.Sprintf("failed to create target directory: %v", err)) sendSSEData(w, flusher, map[string]interface{}{"done": true, "success": false, "error": msg}) return err } sendSSEData(w, flusher, map[string]interface{}{"output": "Creating translation session..."}) session, err := d.client.Session.New(ctx, opencode.SessionNewParams{ Title: opencode.F(fmt.Sprintf("Translate to %s", req.TargetLang)), Directory: opencode.F(projectRoot), }) if err != nil { friendly := userFacingAgentErrorMessage(err.Error()) sendSSEData(w, flusher, map[string]interface{}{"done": true, "success": false, "error": friendly}) return err } sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("Session created: %s", session.ID)}) prompt := buildProjectTranslationPrompt(sourceHTML, req.TargetLang, projectRoot, targetDir) modelID, providerID, fallbackNote := resolveSessionModelForRequest(projectRoot, req.Model) sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("Using model: %s/%s", providerID, modelID)}) if fallbackNote != "" { sendSSEData(w, flusher, map[string]interface{}{"output": "⚠️ " + fallbackNote}) } // Capture a pre-run snapshot so we can recover changed files when stream file events are missing. preRunSnapshot, snapshotErr := captureProjectFileSnapshot(projectRoot) if snapshotErr != nil { log.Printf("[OPENCODE] Warning: Failed to capture pre-run snapshot for translation: %v", snapshotErr) } // Start event stream in background before sending prompt to avoid race conditions. type sessionStreamResult struct { completed bool changedFiles []string hadActivity bool errorMessage string } eventStreamDone := make(chan sessionStreamResult, 1) promptDispatched := make(chan struct{}) go func() { completed, changedFiles, hadActivity, errorMessage := d.streamEventsAndWaitForCompletion(ctx, w, flusher, projectRoot, session.ID, promptDispatched) eventStreamDone <- sessionStreamResult{ completed: completed, changedFiles: changedFiles, hadActivity: hadActivity, errorMessage: errorMessage, } }() time.Sleep(100 * time.Millisecond) sendSSEData(w, flusher, map[string]interface{}{"output": "Agent is translating the project..."}) response, err := d.sendSessionPrompt(ctx, session.ID, opencode.SessionPromptParams{ Parts: opencode.F([]opencode.SessionPromptParamsPartUnion{ opencode.TextPartInputParam{ Type: opencode.F(opencode.TextPartInputTypeText), Text: opencode.F(prompt), }, }), Model: opencode.F(opencode.SessionPromptParamsModel{ ModelID: opencode.F(modelID), ProviderID: opencode.F(providerID), }), Directory: opencode.F(projectRoot), }) close(promptDispatched) if err != nil { friendly := userFacingAgentErrorMessage(err.Error()) if isUsageLimitErrorMessage(err.Error()) || isUsageLimitErrorMessage(friendly) { go d.abortSessionBestEffort(session.ID, projectRoot, "usage limit while sending translation prompt") } sendSSEData(w, flusher, map[string]interface{}{"done": true, "success": false, "error": friendly}) return err } streamResult := <-eventStreamDone if !streamResult.completed { sessionErr := userFacingAgentErrorMessage(streamResult.errorMessage) if strings.TrimSpace(sessionErr) == "" || strings.EqualFold(sessionErr, "Unknown error occurred") { sessionErr = "Session did not complete" } sendSSEData(w, flusher, map[string]interface{}{ "done": true, "success": false, "error": sessionErr, }) return fmt.Errorf("translation session did not complete: %s", sessionErr) } changedFiles := streamResult.changedFiles if len(changedFiles) == 0 && preRunSnapshot != nil { snapshotChanges, err := detectChangedFilesFromSnapshot(projectRoot, preRunSnapshot) if err != nil { log.Printf("[OPENCODE] Warning: Failed translation snapshot fallback: %v", err) } else if len(snapshotChanges) > 0 { changedFiles = snapshotChanges sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("📡 Recovered %d changed files via snapshot fallback", len(changedFiles))}) } } if !streamResult.hadActivity { sendSSEData(w, flusher, map[string]interface{}{ "output": "⚠️ Session reached idle without assistant/tool activity. The selected model may be only partially supported by this OpenCode server build.", }) } files, collectErr := d.collectGeneratedFiles(ctx, targetDir) if collectErr != nil { log.Printf("[OPENCODE] Warning: Failed to collect generated files after translation: %v", collectErr) files = []string{} } // Update project manifest if project-based. if req.ProjectPath != "" { paths := GetProjectPaths(projectRoot) if project, err := LoadProject(paths.Manifest); err == nil { targetKey := req.TargetID if targetKey == "" { targetKey = req.TargetLang } if _, ok := project.Targets[targetKey]; !ok { for key, target := range project.Targets { if target.Stack == req.TargetLang { targetKey = key break } } } if _, ok := project.Targets[targetKey]; !ok { switch req.TargetLang { case "swiftui": targetKey = "ios" case "kotlin": targetKey = "android" case "nextjs": targetKey = "web" case "godot", "games": targetKey = "godot" } } if target, ok := project.Targets[targetKey]; ok { target.LastBuild = time.Now().UTC().Format(time.RFC3339) project.Targets[targetKey] = target SaveProject(paths.Manifest, project) } } else { log.Printf("[OPENCODE] Warning: Could not update project manifest after translation stream: %v", err) } } tokensUsed := 0.0 cost := 0.0 if response != nil { tokensUsed = response.Info.Tokens.Input + response.Info.Tokens.Output cost = response.Info.Cost } sendSSEData(w, flusher, map[string]interface{}{ "done": true, "success": true, "output": "✅ Translation completed successfully!", "sessionId": session.ID, "files": len(files), "generatedFiles": files, "changedFiles": changedFiles, "tokensUsed": tokensUsed, "cost": cost, }) return nil } // streamEvents streams OpenCode events to the HTTP response func (d *OpenCodeDriver) streamEvents(ctx context.Context, w http.ResponseWriter, flusher http.Flusher, projectDir, sessionID string) { log.Printf("[OPENCODE] Starting event streaming for directory: %s", projectDir) stream := d.client.Event.ListStreaming(ctx, opencode.EventListParams{ Directory: opencode.F(projectDir), }) for stream.Next() { event := stream.Current() eventSID := extractEventSessionID(event) if sessionID != "" && eventSID != "" && eventSID != sessionID { continue } // Stream relevant events to client switch event.Type { case "message.updated": if props, ok := event.Properties.(map[string]interface{}); ok { if content, ok := props["content"].(string); ok && content != "" { log.Printf("[OPENCODE] Agent message: %s", content[:min(100, len(content))]) sendSSEEvent(w, flusher, "message", content) } } case "file.updated", "file.edited": filePath := getPropertyString(event.Properties, "Path", "path", "File", "file") if filePath != "" { log.Printf("[OPENCODE] File updated: %s", filePath) sendSSEEvent(w, flusher, "file", fmt.Sprintf("Updated: %s", filePath)) } case "tool.start": if props, ok := event.Properties.(map[string]interface{}); ok { if toolName, ok := props["name"].(string); ok { log.Printf("[OPENCODE] Tool started: %s", toolName) sendSSEEvent(w, flusher, "tool", fmt.Sprintf("Running: %s", toolName)) sendSSEEvent(w, flusher, "progress", fmt.Sprintf("Executing %s...", toolName)) } } case "tool.end": if props, ok := event.Properties.(map[string]interface{}); ok { if toolName, ok := props["name"].(string); ok { log.Printf("[OPENCODE] Tool completed: %s", toolName) sendSSEEvent(w, flusher, "tool_done", fmt.Sprintf("Completed: %s", toolName)) } } case "session.status": details := extractSessionStatusMessage(event.Properties) if details == "" { if rawProps := parseEventPropertiesFromRaw(event.JSON.RawJSON()); rawProps != nil { details = extractSessionStatusMessage(rawProps) } } rawDetails := strings.TrimSpace(string(event.JSON.RawJSON())) details = usageLimitContext(details, rawDetails) if details != "" { if isUsageLimitErrorMessage(details) { sendSSEEvent(w, flusher, "error", userFacingAgentErrorMessage(details)) d.abortSessionBestEffort(sessionID, projectDir, "usage limit in session.status") return } else { sendSSEEvent(w, flusher, "status", details) } } case "session.error": errorMsg := extractSessionErrorMessage(event.Properties) if errorMsg == "" { if rawProps := parseEventPropertiesFromRaw(event.JSON.RawJSON()); rawProps != nil { errorMsg = extractSessionErrorMessage(rawProps) } } rawError := strings.TrimSpace(string(event.JSON.RawJSON())) errorMsg = usageLimitContext(errorMsg, rawError) if errorMsg == "" { errorMsg = "Unknown error occurred" } sendSSEEvent(w, flusher, "error", userFacingAgentErrorMessage(errorMsg)) if isUsageLimitErrorMessage(errorMsg) { d.abortSessionBestEffort(sessionID, projectDir, "usage limit in session.error") } return default: log.Printf("[OPENCODE] Unhandled event type: %s", event.Type) } } if err := stream.Err(); err != nil { log.Printf("[OPENCODE] Event stream error: %v", err) } else { log.Printf("[OPENCODE] Event streaming ended") } } // collectGeneratedFiles lists files created in the project directory func (d *OpenCodeDriver) collectGeneratedFiles(ctx context.Context, projectDir string) ([]string, error) { var files []string err := filepath.Walk(projectDir, func(path string, info os.FileInfo, err error) error { if err != nil { return err } if !info.IsDir() && info.Name() != "prototype.html" { relPath, _ := filepath.Rel(projectDir, path) files = append(files, relPath) } return nil }) return files, err } // CheckHealth verifies OpenCode server is running func (d *OpenCodeDriver) CheckHealth(ctx context.Context) error { ctx, cancel := context.WithTimeout(ctx, 5*time.Second) defer cancel() // Try to list sessions as a health check _, err := d.client.Session.List(ctx, opencode.SessionListParams{}) if err != nil { return fmt.Errorf("OpenCode server not responding at %s: %w", d.serverURL, err) } return nil } // buildTranslationPrompt creates the prompt for translation tasks func buildTranslationPrompt(sourceHTML, targetLang string) string { instructions := stackInstructionsFor(targetLang, false) return fmt.Sprintf(`Translate this HTML/Tailwind prototype into a production %s project. ## Source Prototype %s ## Requirements %s ## Important - Create ALL necessary files for a complete, runnable project - Do NOT just generate a single file - create the full project structure - Verify the build passes before completing - If build fails, fix the errors and try again `, targetLang, sourceHTML, instructions) } // buildProjectTranslationPrompt creates a context-aware prompt for project-based translation func buildProjectTranslationPrompt(sourceHTML, targetLang, projectRoot, targetDir string) string { instructions := stackInstructionsFor(targetLang, true) targetDirName := filepath.Base(targetDir) return fmt.Sprintf(`You are working in a Glowbom project at: %s ## Project Structure - prototype/index.html - The HTML/Tailwind prototype (source) - prototype/assets/ - Images and other assets - %s/ - Target directory for %s code (create files here) ## Source Prototype %s ## Task Translate the prototype into a production %s project. Report your progress and actions clearly. ## Requirements %s ## Instructions for Agent - Work exclusively in the target directory: %s - Preserve the visual design and layout from the prototype exactly - Include ALL assets - copy from prototype/assets/ to appropriate location - Create complete, runnable project structure - Report progress after each major step (e.g., "Created main component", "Copied assets", "Running build") - Verify the build passes before completing - If build fails, fix the errors and try again, reporting each attempt and fix - Be specific about what you're doing in the directory `, projectRoot, targetDirName, targetLang, sourceHTML, targetLang, instructions, targetDir) } // parseModel extracts provider and model ID from combined string func parseModel(model string) (modelID, providerID string) { // Default to Claude Sonnet 4.6 if model == "" { return "claude-sonnet-4-6", "anthropic" } // Handle "provider/model" format for _, prefix := range []string{"anthropic/", "openai/", "google/", "ollama/", "fireworks/", "fireworks-ai/", "openrouter/", "opencode/", "xai/"} { if len(model) > len(prefix) && model[:len(prefix)] == prefix { modelID = model[len(prefix):] providerID = model[:len(prefix)-1] if providerID == "openai" { modelID = normalizeOpenAIModelID(modelID) } if providerID == "google" { modelID = normalizeGeminiModelID(modelID) } if providerID == "fireworks" || providerID == "fireworks-ai" { providerID = "fireworks-ai" modelID = normalizeFireworksModelID(modelID) } if providerID == "openrouter" { modelID = normalizeOpenRouterModelID(modelID) } if providerID == "opencode" { modelID = normalizeOpenCodeZenModelID(modelID) } if providerID == "xai" { modelID = normalizeXAIModelID(modelID) } return modelID, providerID } } // Pass through unknown provider/model strings so OpenCode can resolve custom providers. if slash := strings.Index(model, "/"); slash > 0 && slash+1 < len(model) { return strings.TrimSpace(model[slash+1:]), strings.TrimSpace(model[:slash]) } // Handle shorthand names switch model { case "claude", "claude-sonnet": return "claude-sonnet-4-6", "anthropic" case "claude-opus": return "claude-opus-4-6", "anthropic" case "gpt-5", "gpt-5.1", "gpt-5.4": return "gpt-5.4", "openai" case "gpt-5.2": return "gpt-5.2", "openai" case "gpt-4o": return "gpt-4o", "openai" case "gemini": return "gemini-3.1-pro-preview", "google" case "grok", "xai", "grok-4.1", "grok-4-1", "grok-4.1-fast", "grok-4-1-fast", "grok-4.1-fast-reasoning", "grok-4-1-fast-reasoning": return normalizeXAIModelID(model), "xai" case "fireworks", "glm-5": return "accounts/fireworks/models/glm-5", "fireworks-ai" case "kimi-k2.5", "kimi-k2p5": return "accounts/fireworks/models/kimi-k2p5", "fireworks-ai" case "minimax-m2.5", "minimax-m2p5", "minimax-m2.5-free", "minimax-m2p5-free": return "accounts/fireworks/models/minimax-m2p5", "fireworks-ai" case "openrouter", "openrouter/glm-5": return "z-ai/glm-5", "openrouter" case "openrouter/kimi-k2", "openrouter/kimi-k2.5", "openrouter/kimi-k2p5": return "moonshotai/kimi-k2.5", "openrouter" case "openrouter/minimax-m2.5", "openrouter/minimax-m2p5": return "minimax/minimax-m2.5", "openrouter" case "opencode": return "kimi-k2.5-free", "opencode" case "opencode/kimi-k2", "opencode/kimi-k2.5", "opencode/kimi-k2p5", "opencode/kimi-k2.5-free", "opencode/kimi-k2p5-free": return "kimi-k2.5-free", "opencode" case "opencode/minimax-m2", "opencode/minimax-m2.5", "opencode/minimax-m2p5", "opencode/minimax-m2.5-free", "opencode/minimax-m2p5-free": return "minimax-m2.5-free", "opencode" case "opencode/glm-5", "opencode/glm-5-free": return "glm-5-free", "opencode" case "opencode/big-pickle", "big-pickle", "bigpickle": return "big-pickle", "opencode" default: return model, "anthropic" } } func containsEmbeddedImageDataURI(content string) bool { lower := strings.ToLower(content) return strings.Contains(lower, "data:image/") && strings.Contains(lower, ";base64,") } func isIgnorablePromptParseError(err error) bool { if err == nil { return false } msg := strings.ToLower(strings.TrimSpace(err.Error())) return strings.Contains(msg, "error parsing response json: eof") } func (d *OpenCodeDriver) sendSessionPrompt( ctx context.Context, sessionID string, params opencode.SessionPromptParams, ) (*opencode.SessionPromptResponse, error) { var resp *http.Response out, err := d.client.Session.Prompt(ctx, sessionID, params, option.WithResponseInto(&resp)) if err == nil { return out, nil } // OpenCode may acknowledge async prompt submission with an empty JSON body. // Treat JSON EOF parse failures on 2xx responses as success. if isIgnorablePromptParseError(err) && (resp == nil || (resp.StatusCode >= 200 && resp.StatusCode < 300)) { status := 0 if resp != nil { status = resp.StatusCode } log.Printf("[OPENCODE] Prompt accepted with empty response body (status=%d)", status) return nil, nil } return nil, err } // sendSSEEvent sends a Server-Sent Event func sendSSEEvent(w http.ResponseWriter, flusher http.Flusher, event, data string) { fmt.Fprintf(w, "event: %s\ndata: %s\n\n", event, data) flusher.Flush() } // Global OpenCode driver instance var openCodeDriver *OpenCodeDriver // GetOpenCodeDriver returns the singleton driver instance func GetOpenCodeDriver() *OpenCodeDriver { if openCodeDriver == nil { openCodeDriver = NewOpenCodeDriver("") } return openCodeDriver } // ============================================================ // HTTP Handlers // ============================================================ // openCodeTranslateHandler handles translation requests func openCodeTranslateHandler(w http.ResponseWriter, r *http.Request) { log.Printf("[OPENCODE] Received translation request") if r.Method != http.MethodPost { log.Printf("[OPENCODE] Error: Method not allowed: %s", r.Method) http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } var req OpenCodeTranslateRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { log.Printf("[OPENCODE] Error: Invalid JSON body: %v", err) http.Error(w, "Invalid JSON body", http.StatusBadRequest) return } // Validate: need either projectPath or sourceHtml if req.ProjectPath == "" && req.SourceHTML == "" { log.Printf("[OPENCODE] Error: Neither projectPath nor sourceHtml provided") http.Error(w, "either projectPath or sourceHtml is required", http.StatusBadRequest) return } if req.TargetLang == "" { req.TargetLang = "swiftui" // default } // Guardrail: never translate embedded base64 image HTML. It explodes token counts // and breaks provider limits (especially Fireworks). Require glowbyimage placeholders instead. if req.ProjectPath != "" { if html, err := LoadPrototype(req.ProjectPath); err == nil && containsEmbeddedImageDataURI(html) { msg := "translation blocked: prototype HTML contains embedded base64 images. Regenerate using glowbyimage placeholders before translation." log.Printf("[OPENCODE] %s project=%s", msg, req.ProjectPath) http.Error(w, msg, http.StatusBadRequest) return } } if req.SourceHTML != "" && containsEmbeddedImageDataURI(req.SourceHTML) { msg := "translation blocked: source HTML contains embedded base64 images. Regenerate using glowbyimage placeholders before translation." log.Printf("[OPENCODE] %s", msg) http.Error(w, msg, http.StatusBadRequest) return } if err := ensureOpenCodeServerReady(req.ProjectPath, req.Model, req.OpenAIKey, req.AnthropicKey, req.GeminiKey, req.FireworksKey, req.OpenRouterKey, req.OpenCodeZenKey, req.XaiKey, req.OpenAIAuthMode, req.OpenAIRefreshToken, req.OpenAIExpiresAt); err != nil { log.Printf("[OPENCODE] Failed preparing OpenCode server: %v", err) http.Error(w, fmt.Sprintf("Failed to prepare OpenCode server: %v", err), http.StatusInternalServerError) return } driver := GetOpenCodeDriver() ctx := r.Context() // Check if streaming requested via query or SSE Accept header. acceptHeader := strings.ToLower(strings.TrimSpace(r.Header.Get("Accept"))) isStream := r.URL.Query().Get("stream") == "true" || strings.Contains(acceptHeader, "text/event-stream") if isStream { log.Printf("[OPENCODE] Starting streaming translation to %s", req.TargetLang) if err := driver.TranslateToProductionStreaming(ctx, w, req); err != nil { log.Printf("[OPENCODE] Streaming error: %v", err) } return } // Non-streaming response log.Printf("[OPENCODE] Starting non-streaming translation to %s", req.TargetLang) w.Header().Set("Content-Type", "application/json") response, err := driver.TranslateToProduction(ctx, req) if err != nil { log.Printf("[OPENCODE] Translation error: %v", err) json.NewEncoder(w).Encode(map[string]interface{}{ "success": false, "error": err.Error(), }) return } log.Printf("[OPENCODE] Translation completed successfully, session: %s", response.SessionID) json.NewEncoder(w).Encode(response) } // openCodeInitProjectHandler creates a new Glowbom project func openCodeInitProjectHandler(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } var req struct { Path string `json:"path"` Name string `json:"name"` HTML string `json:"html,omitempty"` // Optional: initial prototype HTML } if err := json.NewDecoder(r.Body).Decode(&req); err != nil { http.Error(w, "Invalid JSON body", http.StatusBadRequest) return } if req.Path == "" || req.Name == "" { http.Error(w, "path and name are required", http.StatusBadRequest) return } w.Header().Set("Content-Type", "application/json") // Initialize project project, err := InitProject(req.Path, req.Name) if err != nil { json.NewEncoder(w).Encode(map[string]interface{}{ "success": false, "error": err.Error(), }) return } // Save initial prototype if provided if req.HTML != "" { if err := SavePrototype(req.Path, req.HTML, nil); err != nil { json.NewEncoder(w).Encode(map[string]interface{}{ "success": false, "error": fmt.Sprintf("project created but failed to save prototype: %v", err), }) return } } json.NewEncoder(w).Encode(map[string]interface{}{ "success": true, "project": project, "paths": GetProjectPaths(req.Path), }) } // openCodeGetProjectHandler loads project info func openCodeGetProjectHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") path := r.URL.Query().Get("path") if path == "" { http.Error(w, "path query parameter required", http.StatusBadRequest) return } paths := GetProjectPaths(path) project, err := LoadProject(paths.Manifest) if err != nil { json.NewEncoder(w).Encode(map[string]interface{}{ "success": false, "error": err.Error(), }) return } // Check what exists var existingTargets []string for targetID, targetInfo := range project.Targets { targetDir := GetTargetDir(path, targetID) if targetInfo.OutputDir != "" { targetDir = filepath.Join(path, targetInfo.OutputDir) } if info, err := os.Stat(targetDir); err == nil && info.IsDir() { existingTargets = append(existingTargets, targetID) } } json.NewEncoder(w).Encode(map[string]interface{}{ "success": true, "project": project, "paths": paths, "existingTargets": existingTargets, }) } // openCodeRenameProjectHandler renames a project by updating its manifest func openCodeRenameProjectHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method != http.MethodPost { http.Error(w, "method not allowed", http.StatusMethodNotAllowed) return } var req struct { Path string `json:"path"` Name string `json:"name"` } if err := json.NewDecoder(r.Body).Decode(&req); err != nil { http.Error(w, "invalid request body", http.StatusBadRequest) return } if req.Path == "" || req.Name == "" { http.Error(w, "path and name are required", http.StatusBadRequest) return } paths := GetProjectPaths(req.Path) project, err := LoadProject(paths.Manifest) if err != nil { json.NewEncoder(w).Encode(map[string]interface{}{ "success": false, "error": err.Error(), }) return } project.Name = strings.TrimSpace(req.Name) if err := SaveProject(paths.Manifest, project); err != nil { json.NewEncoder(w).Encode(map[string]interface{}{ "success": false, "error": err.Error(), }) return } json.NewEncoder(w).Encode(map[string]interface{}{ "success": true, "project": project, }) } // openCodeUpdateProjectSettingsHandler updates project metadata (bundleID, displayName, buildNumber, version) func openCodeUpdateProjectSettingsHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method != http.MethodPost { http.Error(w, "method not allowed", http.StatusMethodNotAllowed) return } var req struct { Path string `json:"path"` BundleID *string `json:"bundleID"` DisplayName *string `json:"displayName"` BuildNumber *string `json:"buildNumber"` Version *string `json:"version"` } if err := json.NewDecoder(r.Body).Decode(&req); err != nil { http.Error(w, "invalid request body", http.StatusBadRequest) return } if req.Path == "" { http.Error(w, "path is required", http.StatusBadRequest) return } paths := GetProjectPaths(req.Path) project, err := LoadProject(paths.Manifest) if err != nil { json.NewEncoder(w).Encode(map[string]interface{}{ "success": false, "error": err.Error(), }) return } if req.BundleID != nil { project.BundleID = strings.TrimSpace(*req.BundleID) } if req.DisplayName != nil { project.DisplayName = strings.TrimSpace(*req.DisplayName) } if req.BuildNumber != nil { project.BuildNumber = strings.TrimSpace(*req.BuildNumber) } if req.Version != nil { project.Version = strings.TrimSpace(*req.Version) } if err := SaveProject(paths.Manifest, project); err != nil { json.NewEncoder(w).Encode(map[string]interface{}{ "success": false, "error": err.Error(), }) return } json.NewEncoder(w).Encode(map[string]interface{}{ "success": true, "project": project, }) } // openCodeGenerateIconHandler generates an app icon and saves it to the project root func openCodeGenerateIconHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method != http.MethodPost { http.Error(w, "method not allowed", http.StatusMethodNotAllowed) return } var req struct { Path string `json:"path"` Prompt string `json:"prompt"` ImageSource string `json:"imageSource,omitempty"` OpenAIKey string `json:"openaiKey,omitempty"` GeminiKey string `json:"geminiKey,omitempty"` XaiKey string `json:"xaiKey,omitempty"` ReferenceImage *string `json:"referenceImage,omitempty"` } if err := json.NewDecoder(r.Body).Decode(&req); err != nil { http.Error(w, "invalid request body", http.StatusBadRequest) return } if req.Path == "" || req.Prompt == "" { http.Error(w, "path and prompt are required", http.StatusBadRequest) return } // Build a post-pass style request to reuse generateImageForPostPass postPassReq := OpenCodeMediaPostPassRequest{ ProjectPath: req.Path, ImageSource: req.ImageSource, OpenAIKey: req.OpenAIKey, GeminiKey: req.GeminiKey, XaiKey: req.XaiKey, } refImage := "" if req.ReferenceImage != nil { refImage = *req.ReferenceImage // Strip data URI prefix — Gemini API expects raw base64 if idx := strings.Index(refImage, ";base64,"); idx >= 0 { refImage = refImage[idx+len(";base64,"):] } } // Enhance prompt for app icon generation iconPrompt := fmt.Sprintf("Generate a square app icon (1024x1024) for: %s. The icon should be simple, modern, and look great at small sizes. No text on the icon.", req.Prompt) dataURI, sourceService, err := generateImageForPostPass(postPassReq, iconPrompt, refImage) if err != nil { json.NewEncoder(w).Encode(map[string]interface{}{ "success": false, "error": fmt.Sprintf("icon generation failed: %v", err), }) return } // Decode data URI to bytes imageBytes, _, err := decodeBase64Payload(dataURI, "image/png") if err != nil { json.NewEncoder(w).Encode(map[string]interface{}{ "success": false, "error": fmt.Sprintf("failed to decode generated image: %v", err), }) return } // Write icon.png to project root iconPath := filepath.Join(req.Path, "icon.png") if err := os.WriteFile(iconPath, imageBytes, 0644); err != nil { json.NewEncoder(w).Encode(map[string]interface{}{ "success": false, "error": fmt.Sprintf("failed to save icon: %v", err), }) return } fmt.Printf("[ICON] Generated icon for project %s using %s\n", req.Path, sourceService) json.NewEncoder(w).Encode(map[string]interface{}{ "success": true, "iconPath": iconPath, "sourceService": sourceService, "image": dataURI, }) } // openCodeProjectIconHandler serves the current icon.png as a base64 data URI func openCodeProjectIconHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") path := r.URL.Query().Get("path") if path == "" { http.Error(w, "path query parameter required", http.StatusBadRequest) return } iconPath := filepath.Join(path, "icon.png") data, err := os.ReadFile(iconPath) if err != nil { json.NewEncoder(w).Encode(map[string]interface{}{ "success": false, "exists": false, }) return } encoded := base64.StdEncoding.EncodeToString(data) dataURI := fmt.Sprintf("data:image/png;base64,%s", encoded) json.NewEncoder(w).Encode(map[string]interface{}{ "success": true, "exists": true, "image": dataURI, }) } type openCodeOpenAIOAuthCredential struct { AccessToken string RefreshToken string ExpiresAtReferenceSeconds float64 Source string } func parseRawJSONNumber(raw json.RawMessage) float64 { trimmed := bytes.TrimSpace(raw) if len(trimmed) == 0 || bytes.Equal(trimmed, []byte("null")) { return 0 } var asNumber float64 if err := json.Unmarshal(trimmed, &asNumber); err == nil { return asNumber } var asString string if err := json.Unmarshal(trimmed, &asString); err == nil { asString = strings.TrimSpace(asString) if asString == "" { return 0 } parsed, err := strconv.ParseFloat(asString, 64) if err == nil { return parsed } } return 0 } func normalizeOAuthExpiresToReferenceSeconds(raw float64) float64 { if raw <= 0 || !isFinite(raw) { return 0 } // Unix milliseconds. if raw > 1_000_000_000_000 { return (raw / 1000.0) - 978307200 } // Unix seconds. if raw > 978307200 { return raw - 978307200 } // Already NSDate reference seconds. return raw } func isFinite(v float64) bool { return !math.IsInf(v, 0) && !math.IsNaN(v) } func readOpenAIOAuthCredentialFromOpenCodeAuthFile(authFilePath string) (openCodeOpenAIOAuthCredential, bool, error) { trimmedPath := strings.TrimSpace(authFilePath) if trimmedPath == "" { return openCodeOpenAIOAuthCredential{}, false, nil } data, err := os.ReadFile(trimmedPath) if err != nil { if os.IsNotExist(err) { return openCodeOpenAIOAuthCredential{}, false, nil } return openCodeOpenAIOAuthCredential{}, false, err } var authMap map[string]json.RawMessage if err := json.Unmarshal(data, &authMap); err != nil { return openCodeOpenAIOAuthCredential{}, false, err } raw, ok := authMap["openai"] if !ok { return openCodeOpenAIOAuthCredential{}, false, nil } raw = bytes.TrimSpace(raw) if len(raw) == 0 || bytes.Equal(raw, []byte("null")) { return openCodeOpenAIOAuthCredential{}, false, nil } var openAI struct { Type string `json:"type"` Access string `json:"access"` Refresh string `json:"refresh"` Expires json.RawMessage `json:"expires"` } if err := json.Unmarshal(raw, &openAI); err != nil { return openCodeOpenAIOAuthCredential{}, false, err } if !strings.EqualFold(strings.TrimSpace(openAI.Type), "oauth") { return openCodeOpenAIOAuthCredential{}, false, nil } access := strings.TrimSpace(openAI.Access) if access == "" { return openCodeOpenAIOAuthCredential{}, false, nil } return openCodeOpenAIOAuthCredential{ AccessToken: access, RefreshToken: strings.TrimSpace(openAI.Refresh), ExpiresAtReferenceSeconds: normalizeOAuthExpiresToReferenceSeconds(parseRawJSONNumber(openAI.Expires)), Source: trimmedPath, }, true, nil } func readOpenAIOAuthCredentialFromCodexAuthFile() (openCodeOpenAIOAuthCredential, bool, error) { homeDir, err := os.UserHomeDir() if err != nil { return openCodeOpenAIOAuthCredential{}, false, err } codexAuthPath := filepath.Join(homeDir, ".codex", "auth.json") data, err := os.ReadFile(codexAuthPath) if err != nil { if os.IsNotExist(err) { return openCodeOpenAIOAuthCredential{}, false, nil } return openCodeOpenAIOAuthCredential{}, false, err } var decoded struct { Tokens *struct { AccessToken string `json:"access_token"` RefreshToken string `json:"refresh_token"` ExpiresAt any `json:"expires_at"` } `json:"tokens"` } if err := json.Unmarshal(data, &decoded); err != nil { return openCodeOpenAIOAuthCredential{}, false, err } if decoded.Tokens == nil { return openCodeOpenAIOAuthCredential{}, false, nil } access := strings.TrimSpace(decoded.Tokens.AccessToken) if access == "" { return openCodeOpenAIOAuthCredential{}, false, nil } expiresAt := 0.0 switch value := decoded.Tokens.ExpiresAt.(type) { case float64: expiresAt = normalizeOAuthExpiresToReferenceSeconds(value) case string: parsed, parseErr := strconv.ParseFloat(strings.TrimSpace(value), 64) if parseErr == nil { expiresAt = normalizeOAuthExpiresToReferenceSeconds(parsed) } } return openCodeOpenAIOAuthCredential{ AccessToken: access, RefreshToken: strings.TrimSpace(decoded.Tokens.RefreshToken), ExpiresAtReferenceSeconds: expiresAt, Source: codexAuthPath, }, true, nil } func resolveOpenAIOAuthCredentialForConnect(req OpenCodeAuthConnectRequest) (openCodeOpenAIOAuthCredential, error) { access := strings.TrimSpace(req.OpenAIKey) refresh := strings.TrimSpace(req.OpenAIRefreshToken) expiresAt := normalizeOAuthExpiresToReferenceSeconds(req.OpenAIExpiresAt) if access != "" { return openCodeOpenAIOAuthCredential{ AccessToken: access, RefreshToken: refresh, ExpiresAtReferenceSeconds: expiresAt, Source: "request", }, nil } runtimePaths, err := glowbomOpenCodeRuntimePaths() if err == nil { fromOpenCodeAuth, ok, readErr := readOpenAIOAuthCredentialFromOpenCodeAuthFile(runtimePaths.AuthFile) if readErr != nil { log.Printf("[OPENCODE] Warning: failed reading OpenCode auth file for connect fallback: %v", readErr) } if ok { return fromOpenCodeAuth, nil } } fromCodexAuth, ok, readErr := readOpenAIOAuthCredentialFromCodexAuthFile() if readErr != nil { log.Printf("[OPENCODE] Warning: failed reading ~/.codex/auth.json for connect fallback: %v", readErr) } if ok { return fromCodexAuth, nil } return openCodeOpenAIOAuthCredential{}, fmt.Errorf("no ChatGPT OAuth credential found. Run `codex login` first, or connect ChatGPT in Desktop") } func clearOpenAIAuthFromAuthFile(authFilePath string) error { trimmedPath := strings.TrimSpace(authFilePath) if trimmedPath == "" { return nil } data, err := os.ReadFile(trimmedPath) if err != nil { if os.IsNotExist(err) { return nil } return err } var authMap map[string]json.RawMessage if err := json.Unmarshal(data, &authMap); err != nil { return err } if _, exists := authMap["openai"]; !exists { return nil } delete(authMap, "openai") encoded, err := json.MarshalIndent(authMap, "", " ") if err != nil { return err } return os.WriteFile(trimmedPath, encoded, 0600) } func persistOpenAIOAuthToAuthFile(authFilePath string, credential openCodeOpenAIOAuthCredential) error { trimmedPath := strings.TrimSpace(authFilePath) if trimmedPath == "" { return nil } if strings.TrimSpace(credential.AccessToken) == "" { return fmt.Errorf("missing OAuth access token") } authMap := map[string]json.RawMessage{} data, err := os.ReadFile(trimmedPath) if err == nil { if unmarshalErr := json.Unmarshal(data, &authMap); unmarshalErr != nil { return unmarshalErr } } else if !os.IsNotExist(err) { return err } expiresAtReference := credential.ExpiresAtReferenceSeconds if expiresAtReference <= 0 { expiresAtReference = float64(time.Now().Add(time.Hour).Unix()) - 978307200 } expiresAtUnixMs := int64((expiresAtReference + 978307200) * 1000) openAIPayload := map[string]any{ "type": "oauth", "access": credential.AccessToken, "refresh": strings.TrimSpace(credential.RefreshToken), "expires": expiresAtUnixMs, } if openAIPayload["refresh"] == "" { openAIPayload["refresh"] = "none" } encodedOpenAI, err := json.Marshal(openAIPayload) if err != nil { return err } authMap["openai"] = encodedOpenAI encoded, err := json.MarshalIndent(authMap, "", " ") if err != nil { return err } if err := os.MkdirAll(filepath.Dir(trimmedPath), 0755); err != nil { return err } return os.WriteFile(trimmedPath, encoded, 0600) } func openAICredentialTypeFromAuthFile(authFilePath string) string { if strings.TrimSpace(authFilePath) == "" { return "unknown" } data, err := os.ReadFile(authFilePath) if err != nil { if os.IsNotExist(err) { return "none" } log.Printf("[OPENCODE] Warning: failed reading auth file for diagnostics: %v", err) return "unknown" } type authTypeProbe struct { Type string `json:"type"` } var authMap map[string]json.RawMessage if err := json.Unmarshal(data, &authMap); err != nil { log.Printf("[OPENCODE] Warning: failed parsing auth file for diagnostics: %v", err) return "unknown" } raw, ok := authMap["openai"] if !ok { return "none" } if len(bytes.TrimSpace(raw)) == 0 || bytes.Equal(bytes.TrimSpace(raw), []byte("null")) { return "none" } var probe authTypeProbe if err := json.Unmarshal(raw, &probe); err != nil { log.Printf("[OPENCODE] Warning: failed parsing OpenAI auth payload for diagnostics: %v", err) return "unknown" } switch strings.ToLower(strings.TrimSpace(probe.Type)) { case "oauth": return "oauth" case "api": return "api" case "": return "unknown" default: return "unknown" } } func cachedGlowbomOpenAIAuthMode() string { state := getOpenCodeOpenAIAuthState() if !state.known { return "unknown" } mode := normalizeOpenAIAuthMode(state.mode) if mode == "" { return "unknown" } return mode } func currentOpenCodeAuthStatus() openCodeAuthStatusResponse { runtimePaths, err := glowbomOpenCodeRuntimePaths() if err != nil { log.Printf("[OPENCODE] Warning: failed resolving runtime paths for auth diagnostics: %v", err) } serverURL := "http://" + openCodeServerHostname() + ":" + getAgentPort() return openCodeAuthStatusResponse{ ServerRunning: isServerRunning(serverURL), ConfiguredDataHome: runtimePaths.DataHome, ConfiguredStateHome: runtimePaths.StateHome, AuthFilePath: runtimePaths.AuthFile, OpenAICredentialType: openAICredentialTypeFromAuthFile(runtimePaths.AuthFile), CachedGlowbomAuthMode: cachedGlowbomOpenAIAuthMode(), } } func openCodeAuthStatusHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method != http.MethodGet { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } json.NewEncoder(w).Encode(currentOpenCodeAuthStatus()) } func openCodeOpenAIOAuthStartHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } var req OpenCodeAuthOAuthStartRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil && !errors.Is(err, io.EOF) { http.Error(w, "Invalid JSON body", http.StatusBadRequest) return } redirectURI := openAIOAuthRedirectURI() if strings.EqualFold(strings.TrimSpace(redirectURI), openAIOAuthDefaultRedirectURI) { if err := ensureOpenAIOAuthLoopbackServer(); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } } codeVerifier, err := randomURLSafeBase64(32) if err != nil { http.Error(w, fmt.Sprintf("Failed creating OAuth verifier: %v", err), http.StatusInternalServerError) return } state, err := randomURLSafeBase64(32) if err != nil { http.Error(w, fmt.Sprintf("Failed creating OAuth state: %v", err), http.StatusInternalServerError) return } params := neturl.Values{} params.Set("response_type", "code") params.Set("client_id", openAIOAuthClientID()) params.Set("redirect_uri", redirectURI) params.Set("scope", "openid profile email offline_access") params.Set("code_challenge", sha256Base64URL(codeVerifier)) params.Set("code_challenge_method", "S256") params.Set("id_token_add_organizations", "true") params.Set("codex_cli_simplified_flow", "true") params.Set("state", state) params.Set("originator", openAIOAuthOriginator()) authorizationURL := openAIOAuthIssuer + "/oauth/authorize?" + params.Encode() ensureOpenAIOAuthSessionStore() now := time.Now() openCodeOpenAIOAuthSessions.mu.Lock() cleanupExpiredOpenAIOAuthSessionsLocked(now) openCodeOpenAIOAuthSessions.sessions[state] = &openCodeOpenAIOAuthSession{ State: state, CodeVerifier: codeVerifier, RedirectURI: redirectURI, ProjectPath: strings.TrimSpace(req.ProjectPath), CreatedAt: now, Phase: "pending", Connected: false, Error: "", Status: currentOpenCodeAuthStatus(), } openCodeOpenAIOAuthSessions.mu.Unlock() writeJSON(w, OpenCodeAuthOAuthStartResponse{ Success: true, Provider: "chatgpt", State: state, AuthorizationURL: authorizationURL, RedirectURI: redirectURI, }) } func openCodeOpenAIOAuthStatusHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method != http.MethodGet { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } state := strings.TrimSpace(r.URL.Query().Get("state")) if state == "" { http.Error(w, "state query parameter required", http.StatusBadRequest) return } ensureOpenAIOAuthSessionStore() openCodeOpenAIOAuthSessions.mu.Lock() cleanupExpiredOpenAIOAuthSessionsLocked(time.Now()) session := openCodeOpenAIOAuthSessions.sessions[state] var sessionCopy openCodeOpenAIOAuthSession if session != nil { sessionCopy = *session } openCodeOpenAIOAuthSessions.mu.Unlock() if session == nil { http.Error(w, "OAuth session not found or expired", http.StatusNotFound) return } writeJSON(w, OpenCodeAuthOAuthStatusResponse{ Success: sessionCopy.Phase != "failed", Provider: "chatgpt", State: sessionCopy.State, Phase: sessionCopy.Phase, Connected: sessionCopy.Connected, Status: sessionCopy.Status, Error: sessionCopy.Error, }) } func setOpenAIOAuthSessionFailed(state, message string) { openCodeOpenAIOAuthSessions.mu.Lock() if target := openCodeOpenAIOAuthSessions.sessions[state]; target != nil { target.Phase = "failed" target.Connected = false target.Error = strings.TrimSpace(message) target.CompletedAt = time.Now() target.Status = currentOpenCodeAuthStatus() } openCodeOpenAIOAuthSessions.mu.Unlock() } func setOpenAIOAuthSessionSucceeded(state string, status openCodeAuthStatusResponse) { openCodeOpenAIOAuthSessions.mu.Lock() if target := openCodeOpenAIOAuthSessions.sessions[state]; target != nil { target.Phase = "succeeded" target.Connected = status.OpenAICredentialType == "oauth" || status.CachedGlowbomAuthMode == "codex-jwt" target.Error = "" target.CompletedAt = time.Now() target.Status = status } openCodeOpenAIOAuthSessions.mu.Unlock() } func finalizeOpenAIOAuthCallback(state, code, oauthError, oauthErrorDescription string) (bool, string) { if state == "" { return false, "Missing OAuth state. Please restart login from Glowby OSS." } ensureOpenAIOAuthSessionStore() openCodeOpenAIOAuthSessions.mu.Lock() cleanupExpiredOpenAIOAuthSessionsLocked(time.Now()) session := openCodeOpenAIOAuthSessions.sessions[state] if session == nil { openCodeOpenAIOAuthSessions.mu.Unlock() return false, "OAuth session expired. Restart login from Glowby OSS." } if session.Phase == "succeeded" { openCodeOpenAIOAuthSessions.mu.Unlock() return true, "ChatGPT account is already connected." } if session.Phase == "failed" { message := strings.TrimSpace(session.Error) openCodeOpenAIOAuthSessions.mu.Unlock() if message == "" { message = "OAuth session failed. Please restart login." } return false, message } codeVerifier := session.CodeVerifier redirectURI := session.RedirectURI projectPath := session.ProjectPath openCodeOpenAIOAuthSessions.mu.Unlock() if oauthError != "" { message := oauthError if oauthErrorDescription != "" { message += ": " + oauthErrorDescription } setOpenAIOAuthSessionFailed(state, message) return false, "Login was canceled or rejected. " + message } if code == "" { setOpenAIOAuthSessionFailed(state, "Missing OAuth authorization code") return false, "Missing authorization code from callback." } credential, err := exchangeOpenAIOAuthCodeForCredential(code, codeVerifier, redirectURI) if err != nil { setOpenAIOAuthSessionFailed(state, err.Error()) return false, "Could not complete ChatGPT login. " + err.Error() } if err := ensureOpenCodeServerReady( projectPath, "", credential.AccessToken, "", "", "", "", "", "", "codex-jwt", credential.RefreshToken, credential.ExpiresAtReferenceSeconds, ); err != nil { setOpenAIOAuthSessionFailed(state, err.Error()) return false, "ChatGPT login completed, but backend sync failed. " + err.Error() } if runtimePaths, err := glowbomOpenCodeRuntimePaths(); err == nil { if persistErr := persistOpenAIOAuthToAuthFile(runtimePaths.AuthFile, credential); persistErr != nil { log.Printf("[OPENCODE] Warning: failed persisting OpenAI OAuth credential from callback: %v", persistErr) } } status := currentOpenCodeAuthStatus() setOpenAIOAuthSessionSucceeded(state, status) return true, "ChatGPT account is now connected." } func openCodeOpenAIOAuthCallbackHandler(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodGet { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } success, message := finalizeOpenAIOAuthCallback( strings.TrimSpace(r.URL.Query().Get("state")), strings.TrimSpace(r.URL.Query().Get("code")), strings.TrimSpace(r.URL.Query().Get("error")), strings.TrimSpace(r.URL.Query().Get("error_description")), ) writeOpenAIOAuthCallbackHTML(w, success, message) } func openCodeOpenAIConnectHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } var req OpenCodeAuthConnectRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { http.Error(w, "Invalid JSON body", http.StatusBadRequest) return } resolvedCredential, err := resolveOpenAIOAuthCredentialForConnect(req) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } if err := ensureOpenCodeServerReady( strings.TrimSpace(req.ProjectPath), "", resolvedCredential.AccessToken, "", "", "", "", "", "", "codex-jwt", resolvedCredential.RefreshToken, resolvedCredential.ExpiresAtReferenceSeconds, ); err != nil { http.Error(w, fmt.Sprintf("Failed to connect ChatGPT auth: %v", err), http.StatusInternalServerError) return } if runtimePaths, err := glowbomOpenCodeRuntimePaths(); err == nil { if persistErr := persistOpenAIOAuthToAuthFile(runtimePaths.AuthFile, resolvedCredential); persistErr != nil { log.Printf("[OPENCODE] Warning: failed persisting OpenAI OAuth credential: %v", persistErr) } } writeJSON(w, OpenCodeAuthConnectionResponse{ Success: true, Provider: "chatgpt", Connected: true, Status: currentOpenCodeAuthStatus(), }) } func openCodeOpenAIDisconnectHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } var req OpenCodeAuthDisconnectRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil && !errors.Is(err, io.EOF) { http.Error(w, "Invalid JSON body", http.StatusBadRequest) return } if err := ensureOpenCodeServerReady( strings.TrimSpace(req.ProjectPath), "", "", "", "", "", "", "", "", "api-key", "", 0, ); err != nil { http.Error(w, fmt.Sprintf("Failed to disconnect ChatGPT auth: %v", err), http.StatusInternalServerError) return } if runtimePaths, err := glowbomOpenCodeRuntimePaths(); err == nil { if clearErr := clearOpenAIAuthFromAuthFile(runtimePaths.AuthFile); clearErr != nil { log.Printf("[OPENCODE] Warning: failed clearing OpenAI auth file after disconnect: %v", clearErr) } } writeJSON(w, OpenCodeAuthConnectionResponse{ Success: true, Provider: "chatgpt", Connected: false, Status: currentOpenCodeAuthStatus(), }) } // openCodeHealthHandler checks if OpenCode server is running func openCodeHealthHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") driver := GetOpenCodeDriver() ctx := r.Context() if err := driver.CheckHealth(ctx); err != nil { // Try to start server automatically with env vars (fallback) log.Printf("[OPENCODE] Server unhealthy, attempting auto-start...") if startErr := startOpenCodeServer(os.Getenv("OPENAI_API_KEY"), os.Getenv("ANTHROPIC_API_KEY"), os.Getenv("GEMINI_API_KEY"), os.Getenv("FIREWORKS_API_KEY"), os.Getenv("OPENROUTER_API_KEY"), os.Getenv("OPENCODE_API_KEY"), os.Getenv("XAI_API_KEY"), "", ""); startErr != nil { w.WriteHeader(http.StatusServiceUnavailable) json.NewEncoder(w).Encode(map[string]interface{}{ "healthy": false, "error": err.Error(), "hint": "Failed to auto-start server. Install OpenCode CLI and ensure API keys are set.", }) return } // Wait and retry health check time.Sleep(3 * time.Second) if err := driver.CheckHealth(ctx); err != nil { w.WriteHeader(http.StatusServiceUnavailable) json.NewEncoder(w).Encode(map[string]interface{}{ "healthy": false, "error": err.Error(), "hint": "Server started but not responding. Check logs.", }) return } } json.NewEncoder(w).Encode(map[string]interface{}{ "healthy": true, "server": driver.serverURL, }) } func openAIModelsHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } var req OpenAIModelsRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { http.Error(w, "Invalid JSON body", http.StatusBadRequest) return } if strings.TrimSpace(req.OpenAIAuthMode) == "" { req.OpenAIAuthMode = "api-key" } if normalizeOpenAIAuthMode(req.OpenAIAuthMode) == "codex-jwt" && strings.TrimSpace(req.OpenAIKey) == "" { resolvedCredential, err := resolveOpenAIOAuthCredentialForConnect(OpenCodeAuthConnectRequest{ ProjectPath: req.ProjectPath, OpenAIKey: req.OpenAIKey, OpenAIRefreshToken: req.OpenAIRefreshToken, OpenAIExpiresAt: req.OpenAIExpiresAt, }) if err != nil { http.Error(w, "ChatGPT account is not connected. Connect first.", http.StatusBadRequest) return } req.OpenAIKey = resolvedCredential.AccessToken if strings.TrimSpace(req.OpenAIRefreshToken) == "" { req.OpenAIRefreshToken = resolvedCredential.RefreshToken } if req.OpenAIExpiresAt <= 0 { req.OpenAIExpiresAt = resolvedCredential.ExpiresAtReferenceSeconds } } if err := ensureOpenCodeServerReady(req.ProjectPath, "", req.OpenAIKey, req.AnthropicKey, req.GeminiKey, "", "", "", "", req.OpenAIAuthMode, req.OpenAIRefreshToken, req.OpenAIExpiresAt); err != nil { http.Error(w, fmt.Sprintf("Failed to prepare OpenCode server: %v", err), http.StatusInternalServerError) return } driver := GetOpenCodeDriver() params := opencode.AppProvidersParams{} if dir := strings.TrimSpace(req.ProjectPath); dir != "" { params.Directory = opencode.F(dir) } providersResp, err := driver.client.App.Providers(r.Context(), params) if err != nil { log.Printf("[OPENCODE] Failed to fetch providers: %v", err) http.Error(w, fmt.Sprintf("Failed to fetch provider models: %v", err), http.StatusBadGateway) return } var openaiProvider *opencode.Provider for i := range providersResp.Providers { p := &providersResp.Providers[i] if strings.EqualFold(p.ID, "openai") { openaiProvider = p break } } allowlistModelIDs := make([]string, 0, len(openAIChatGPTModelAllowlist)) for id := range openAIChatGPTModelAllowlist { allowlistModelIDs = append(allowlistModelIDs, id) } sort.Strings(allowlistModelIDs) providerModelIDs := make([]string, 0) if openaiProvider != nil { providerModelIDs = make([]string, 0, len(openaiProvider.Models)) for id := range openaiProvider.Models { providerModelIDs = append(providerModelIDs, id) } sort.Strings(providerModelIDs) } models := make([]OpenAIModelOption, 0, len(openAIChatGPTModelAllowlist)) if openaiProvider != nil { for _, id := range allowlistModelIDs { model, ok := openaiProvider.Models[id] if !ok { continue } allowName := openAIChatGPTModelAllowlist[id] name := strings.TrimSpace(model.Name) if name == "" { name = allowName } models = append(models, OpenAIModelOption{ ID: id, DisplayName: name, }) } } fallbackUsed := false // Fallback to allowlist defaults if provider call returns no matching models. if len(models) == 0 { fallbackUsed = true for _, id := range allowlistModelIDs { name := openAIChatGPTModelAllowlist[id] models = append(models, OpenAIModelOption{ ID: id, DisplayName: name, }) } } models, addedForwardCompatIDs := appendOpenAICodexForwardCompatModels(models, providerModelIDs, req.OpenAIAuthMode) matchedModelIDs := make([]string, 0, len(models)) for _, model := range models { matchedModelIDs = append(matchedModelIDs, model.ID) } sort.Strings(matchedModelIDs) sort.Slice(models, func(i, j int) bool { if models[i].DisplayName == models[j].DisplayName { return models[i].ID < models[j].ID } return models[i].DisplayName < models[j].DisplayName }) debugInfo := OpenAIModelsDebug{ AuthMode: req.OpenAIAuthMode, ProviderFound: openaiProvider != nil, ProviderModelCount: len(providerModelIDs), ProviderModelSample: previewStringList(providerModelIDs, 12), AllowlistModelIDs: allowlistModelIDs, MatchedModelIDs: matchedModelIDs, AddedForwardCompatIDs: addedForwardCompatIDs, UsedFallbackAllowlist: fallbackUsed, } log.Printf( "[OPENCODE] OpenAI model fetch authMode=%s providerFound=%t providerModelCount=%d matched=%d fallback=%t addedForwardCompat=[%s] providerSample=[%s] matchedIDs=[%s]", debugInfo.AuthMode, debugInfo.ProviderFound, debugInfo.ProviderModelCount, len(debugInfo.MatchedModelIDs), debugInfo.UsedFallbackAllowlist, strings.Join(debugInfo.AddedForwardCompatIDs, ", "), strings.Join(debugInfo.ProviderModelSample, ", "), strings.Join(debugInfo.MatchedModelIDs, ", "), ) resp := OpenAIModelsResponse{ Provider: "openai", Source: "opencode-config/providers", Models: models, FetchedAt: time.Now().UTC().Format(time.RFC3339), Debug: debugInfo, } writeJSON(w, resp) } func openCodeAvailableModelsHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } var req OpenCodeAvailableModelsRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { http.Error(w, "Invalid JSON body", http.StatusBadRequest) return } if strings.TrimSpace(req.OpenAIAuthMode) == "" { req.OpenAIAuthMode = "opencode-config" } if err := ensureOpenCodeServerReady( req.ProjectPath, "", req.OpenAIKey, req.AnthropicKey, req.GeminiKey, req.FireworksKey, req.OpenRouterKey, req.OpenCodeZenKey, req.XaiKey, req.OpenAIAuthMode, req.OpenAIRefreshToken, req.OpenAIExpiresAt, ); err != nil { http.Error(w, fmt.Sprintf("Failed to prepare OpenCode server: %v", err), http.StatusInternalServerError) return } driver := GetOpenCodeDriver() params := opencode.AppProvidersParams{} if dir := strings.TrimSpace(req.ProjectPath); dir != "" { params.Directory = opencode.F(dir) } providersResp, err := driver.client.App.Providers(r.Context(), params) if err != nil { log.Printf("[OPENCODE] Failed to fetch providers for available model catalog: %v", err) http.Error(w, fmt.Sprintf("Failed to fetch providers: %v", err), http.StatusBadGateway) return } providers := make([]OpenCodeProviderOption, 0, len(providersResp.Providers)) for _, provider := range providersResp.Providers { models := make([]OpenCodeProviderModelOption, 0, len(provider.Models)) for modelID, model := range provider.Models { displayName := strings.TrimSpace(model.Name) if displayName == "" { displayName = modelID } models = append(models, OpenCodeProviderModelOption{ ID: modelID, DisplayName: displayName, }) } sort.Slice(models, func(i, j int) bool { if models[i].DisplayName == models[j].DisplayName { return models[i].ID < models[j].ID } return models[i].DisplayName < models[j].DisplayName }) displayName := strings.TrimSpace(provider.Name) if displayName == "" { displayName = provider.ID } providers = append(providers, OpenCodeProviderOption{ ID: provider.ID, DisplayName: displayName, Models: models, }) } sort.Slice(providers, func(i, j int) bool { if providers[i].DisplayName == providers[j].DisplayName { return providers[i].ID < providers[j].ID } return providers[i].DisplayName < providers[j].DisplayName }) writeJSON(w, OpenCodeAvailableModelsResponse{ Source: "opencode-config/providers", Providers: providers, FetchedAt: time.Now().UTC().Format(time.RFC3339), }) } // OpenCodeAgentRequest represents a request for agent operations (refine/verify) type OpenCodeAgentRequest struct { ProjectPath string `json:"projectPath"` SessionID string `json:"sessionID,omitempty"` // Reuse existing session if provided Instructions string `json:"instructions,omitempty"` // Optional user instructions PersistCurrentInstructionsToHistory bool `json:"persistCurrentInstructionsToHistory,omitempty"` InstructionAttachmentPaths []string `json:"instructionAttachmentPaths,omitempty"` Model string `json:"model,omitempty"` AnthropicKey string `json:"anthropicKey,omitempty"` OpenAIKey string `json:"openaiKey,omitempty"` OpenAIImageKey string `json:"openaiImageKey,omitempty"` // plain API key for image gen (codex-jwt lacks image scope) GeminiKey string `json:"geminiKey,omitempty"` FireworksKey string `json:"fireworksKey,omitempty"` OpenRouterKey string `json:"openrouterKey,omitempty"` OpenCodeZenKey string `json:"opencodeZenKey,omitempty"` XaiKey string `json:"xaiKey,omitempty"` VeoGeminiKey string `json:"veoGeminiKey,omitempty"` ElevenLabsKey string `json:"elevenLabsKey,omitempty"` ElevenLabsVoiceID string `json:"elevenLabsVoiceID,omitempty"` ElevenLabsVoiceModel string `json:"elevenLabsVoiceModel,omitempty"` ImageSource string `json:"imageSource,omitempty"` ReferenceImagePath string `json:"referenceImagePath,omitempty"` ReferenceAssetID string `json:"referenceAssetID,omitempty"` OpenAIAuthMode string `json:"openaiAuthMode,omitempty"` // "api-key" | "codex-jwt" | "opencode-config" OpenAIAccountID string `json:"openaiAccountID,omitempty"` // chatgpt_account_id for JWT mode OpenAIRefreshToken string `json:"openaiRefreshToken,omitempty"` // refresh token for OpenCode auth sync OpenAIExpiresAt float64 `json:"openaiExpiresAt,omitempty"` // token expiry (seconds since reference date) } // openCodeRefineHandler handles refine requests - uses agent to improve code func openCodeRefineHandler(w http.ResponseWriter, r *http.Request) { log.Printf("[OPENCODE] Received refine request") if r.Method != http.MethodPost { log.Printf("[OPENCODE] Error: Method not allowed: %s", r.Method) http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } var req OpenCodeAgentRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { log.Printf("[OPENCODE] Error: Invalid JSON body: %v", err) http.Error(w, "Invalid JSON body", http.StatusBadRequest) return } if req.ProjectPath == "" { log.Printf("[OPENCODE] Error: projectPath is required") http.Error(w, "projectPath is required", http.StatusBadRequest) return } // Verify project exists paths := GetProjectPaths(req.ProjectPath) if _, err := os.Stat(paths.Manifest); os.IsNotExist(err) { log.Printf("[OPENCODE] Error: Not a Glowbom project at %s", req.ProjectPath) http.Error(w, "Not a Glowbom project (missing glowbom.json)", http.StatusBadRequest) return } trimmedInstructions := strings.TrimSpace(req.Instructions) shouldPrepareCurrentInstructions := trimmedInstructions != "" || hasAnyInstructionAttachmentPath(req.InstructionAttachmentPaths) if shouldPrepareCurrentInstructions { if err := resetCurrentInstructionsDirectory(req.ProjectPath); err != nil { log.Printf("[OPENCODE] Error: failed preparing current_instructions: %v", err) http.Error(w, fmt.Sprintf("Failed to prepare current_instructions: %v", err), http.StatusInternalServerError) return } } stagedInstructionAttachments, err := stageInstructionAttachments(req.ProjectPath, req.InstructionAttachmentPaths) if err != nil { log.Printf("[OPENCODE] Error: invalid instruction attachments: %v", err) http.Error(w, err.Error(), http.StatusBadRequest) return } stagedInstructionPath, err := stageInstructionTextFile(req.ProjectPath, trimmedInstructions) if err != nil { log.Printf("[OPENCODE] Error: invalid instructions file staging: %v", err) http.Error(w, err.Error(), http.StatusBadRequest) return } effectiveInstructions := req.Instructions if stagedInstructionPath != "" || len(stagedInstructionAttachments) > 0 { effectiveInstructions = mergeInstructionAttachmentContext(req.Instructions, stagedInstructionPath, stagedInstructionAttachments) } shouldPersistCurrentInstructionsHistory := req.PersistCurrentInstructionsToHistory && shouldPrepareCurrentInstructions historyStatus := "failed" historySummary := "" if shouldPersistCurrentInstructionsHistory { defer func() { if err := persistCurrentInstructionsHistory(req.ProjectPath, trimmedInstructions, historyStatus, historySummary); err != nil { log.Printf("[OPENCODE] Warning: failed archiving current_instructions to history: %v", err) } }() } if err := ensureOpenCodeServerReady(req.ProjectPath, req.Model, req.OpenAIKey, req.AnthropicKey, req.GeminiKey, req.FireworksKey, req.OpenRouterKey, req.OpenCodeZenKey, req.XaiKey, req.OpenAIAuthMode, req.OpenAIRefreshToken, req.OpenAIExpiresAt); err != nil { log.Printf("[OPENCODE] Failed preparing OpenCode server: %v", err) historySummary = "Failed to prepare OpenCode server." http.Error(w, fmt.Sprintf("Failed to prepare OpenCode server: %v", err), http.StatusInternalServerError) return } log.Printf("[OPENCODE] Starting refinement for project: %s", req.ProjectPath) if req.Instructions != "" { log.Printf("[OPENCODE] Custom instructions provided (%d chars)", len(req.Instructions)) } else { log.Printf("[OPENCODE] No custom instructions provided") } driver := GetOpenCodeDriver() ctx := r.Context() // Set up SSE headers w.Header().Set("Content-Type", "text/event-stream") w.Header().Set("Cache-Control", "no-cache") w.Header().Set("Connection", "keep-alive") flusher, ok := w.(http.Flusher) if !ok { log.Printf("[OPENCODE] Error: Streaming not supported") historySummary = "Streaming not supported by HTTP response writer." http.Error(w, "Streaming not supported", http.StatusInternalServerError) return } sendSSEData(w, flusher, map[string]interface{}{"output": "Starting refinement with OpenCode agent..."}) if req.Instructions != "" { sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("📋 Custom instructions: %s", req.Instructions)}) } if stagedInstructionPath != "" { sendSSEData(w, flusher, map[string]interface{}{ "output": fmt.Sprintf("📝 Staged: %s", stagedInstructionPath), }) } for _, attachment := range stagedInstructionAttachments { sendSSEData(w, flusher, map[string]interface{}{ "output": fmt.Sprintf("📎 Attached: %s (%s)", attachment.RelativePath, humanReadableBytes(attachment.SizeBytes)), }) } // Reuse existing session or create a new one session, reusedSession, err := driver.resolveRefineSession(ctx, req.ProjectPath, req.SessionID) if err != nil { log.Printf("[OPENCODE] Error: Failed to prepare session: %v", err) historySummary = userFacingAgentErrorMessage(err.Error()) sendSSEData(w, flusher, map[string]interface{}{"done": true, "success": false, "error": userFacingAgentErrorMessage(err.Error())}) return } if reusedSession { log.Printf("[OPENCODE] Reusing existing session: %s", session.ID) sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("Session resumed: %s", session.ID)}) } else { if strings.TrimSpace(req.SessionID) != "" { sendSSEData(w, flusher, map[string]interface{}{"output": "Previous session was unavailable. Starting a new session."}) } sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("Session created: %s", session.ID)}) log.Printf("[OPENCODE] Session created for refinement: %s", session.ID) } // Build refine prompt prompt := buildRefinePrompt(req.ProjectPath, effectiveInstructions) log.Printf("[OPENCODE] Built refine prompt (%d chars)", len(prompt)) authMode := normalizeOpenAIAuthMode(req.OpenAIAuthMode) requestedModel := strings.TrimSpace(req.Model) useConfiguredDefaultModel := requestedModel == "" && authMode == "opencode-config" modelID := "" providerID := "" fallbackNote := "" forwardCompatRegistryWarning := "" if useConfiguredDefaultModel { sendSSEData(w, flusher, map[string]interface{}{"output": "Using OpenCode configured default model."}) log.Printf("[OPENCODE] Using OpenCode configured default model for refinement") } else { // Determine model modelID, providerID, fallbackNote = resolveSessionModelForRequest(req.ProjectPath, req.Model) sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("Using model: %s/%s", providerID, modelID)}) log.Printf("[OPENCODE] Using model for refinement: %s/%s", providerID, modelID) if fallbackNote != "" { sendSSEData(w, flusher, map[string]interface{}{"output": "⚠️ " + fallbackNote}) } if strings.EqualFold(providerID, "openai") && isOpenAICodexForwardCompatModelID(modelID) { probe, probeErr := probeOpenCodeProviderModel(req.ProjectPath, providerID, modelID) if probeErr != nil { log.Printf("[OPENCODE] Warning: failed probing provider registry for %s/%s: %v", providerID, modelID, probeErr) } else if probe.ProviderFound && !probe.ModelRegistered { forwardCompatRegistryWarning = fmt.Sprintf("⚠️ OpenCode registry does not list %s yet; using forward-compat template. If this run no-ops, update OpenCode or fall back to openai/gpt-5.3-codex.", modelID) sendSSEData(w, flusher, map[string]interface{}{"output": forwardCompatRegistryWarning}) log.Printf("[OPENCODE] Forward-compat registry miss for %s/%s providerSample=[%s]", providerID, modelID, strings.Join(probe.ProviderModelSample, ", ")) } } } // Capture a pre-run snapshot so we can recover changed files when stream file events are missing. preRunSnapshot, snapshotErr := captureProjectFileSnapshot(req.ProjectPath) if snapshotErr != nil { log.Printf("[OPENCODE] Warning: Failed to capture pre-run snapshot: %v", snapshotErr) } // Start event stream in background BEFORE sending prompt to avoid race condition log.Printf("[OPENCODE] Starting event stream listener...") type sessionStreamResult struct { completed bool changedFiles []string hadActivity bool errorMessage string } eventStreamDone := make(chan sessionStreamResult, 1) promptDispatched := make(chan struct{}) go func() { completed, changedFiles, hadActivity, errorMessage := driver.streamEventsAndWaitForCompletion(ctx, w, flusher, req.ProjectPath, session.ID, promptDispatched) eventStreamDone <- sessionStreamResult{ completed: completed, changedFiles: changedFiles, hadActivity: hadActivity, errorMessage: errorMessage, } }() // Small delay to ensure event stream connects first time.Sleep(100 * time.Millisecond) // Now send the prompt (this returns immediately, agent works asynchronously) log.Printf("[OPENCODE] Sending refine prompt") sendSSEData(w, flusher, map[string]interface{}{"output": "Agent is analyzing and refining the project..."}) promptParams := opencode.SessionPromptParams{ Parts: opencode.F([]opencode.SessionPromptParamsPartUnion{ opencode.TextPartInputParam{ Type: opencode.F(opencode.TextPartInputTypeText), Text: opencode.F(prompt), }, }), Directory: opencode.F(req.ProjectPath), } if !useConfiguredDefaultModel { promptParams.Model = opencode.F(opencode.SessionPromptParamsModel{ ModelID: opencode.F(modelID), ProviderID: opencode.F(providerID), }) } _, err = driver.sendSessionPrompt(ctx, session.ID, promptParams) if err != nil { log.Printf("[OPENCODE] Error: Refine failed: %v", err) historySummary = userFacingAgentErrorMessage(err.Error()) if isUsageLimitErrorMessage(err.Error()) { go driver.abortSessionBestEffort(session.ID, req.ProjectPath, "usage limit while sending refine prompt") } sendSSEData(w, flusher, map[string]interface{}{"done": true, "success": false, "error": userFacingAgentErrorMessage(err.Error())}) return } close(promptDispatched) log.Printf("[OPENCODE] Prompt sent, agent is now working...") // Wait for event stream goroutine to complete streamResult := <-eventStreamDone sessionCompleted := streamResult.completed changedFiles := streamResult.changedFiles sessionHadActivity := streamResult.hadActivity if !sessionCompleted { sessionErr := userFacingAgentErrorMessage(streamResult.errorMessage) if strings.TrimSpace(sessionErr) == "" || strings.EqualFold(sessionErr, "Unknown error occurred") { sessionErr = "Session did not complete" } log.Printf("[OPENCODE] Session did not complete successfully") historySummary = sessionErr sendSSEData(w, flusher, map[string]interface{}{ "done": true, "success": false, "error": sessionErr, }) return } if !sessionHadActivity { warn := "⚠️ Session reached idle without assistant/tool activity. The selected model may be only partially supported by this OpenCode server build." if forwardCompatRegistryWarning != "" { warn = "⚠️ Session reached idle with no assistant/tool activity while using forward-compat model mapping. Try openai/gpt-5.3-codex or update OpenCode." } if useConfiguredDefaultModel { log.Printf("[OPENCODE] Warning: %s session=%s model=(configured default)", warn, session.ID) } else { log.Printf("[OPENCODE] Warning: %s session=%s model=%s/%s", warn, session.ID, providerID, modelID) } sendSSEData(w, flusher, map[string]interface{}{"output": warn}) } if len(changedFiles) == 0 && preRunSnapshot != nil { snapshotChanges, err := detectChangedFilesFromSnapshot(req.ProjectPath, preRunSnapshot) if err != nil { log.Printf("[OPENCODE] Warning: Failed snapshot fallback: %v", err) } else if len(snapshotChanges) > 0 { changedFiles = snapshotChanges log.Printf("[OPENCODE] Recovered changed files from snapshot fallback: %d", len(changedFiles)) sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("📡 Recovered %d changed files via snapshot fallback", len(changedFiles))}) } } if len(changedFiles) > 0 { log.Printf("[OPENCODE] Files changed from stream events: %d", len(changedFiles)) for _, file := range changedFiles { sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("📄 Modified: %s", file)}) } } else { log.Printf("[OPENCODE] Warning: No files were modified") sendSSEData(w, flusher, map[string]interface{}{"output": "⚠️ No direct file updates detected in primary pass; running post-pass reconciliation checks..."}) } prototypeChanged := detectPrototypeChanged(changedFiles) shouldRunMediaPostPass := prototypeChanged || prototypeContainsMediaPlaceholders(req.ProjectPath) mediaPostPassSummary := map[string]interface{}{ "generated": 0, "reused": 0, "warnings": []string{}, } assetPlacementSummary := map[string]interface{}{ "ran": false, "success": false, "files": []string{}, "warnings": []string{}, } platformAssetsSynced := false mediaGeneratedCount := 0 mediaReusedCount := 0 if shouldRunMediaPostPass { sendSSEData(w, flusher, map[string]interface{}{"output": "🪄 Running media post-pass (image/video/audio materialization + platform sync)..."}) // Prefer plain API key for image generation (codex-jwt lacks image scope) imageKey := strings.TrimSpace(req.OpenAIImageKey) if imageKey == "" { imageKey = req.OpenAIKey } postPassResp, postPassErr := runOpenCodeMediaPostPass(ctx, OpenCodeMediaPostPassRequest{ ProjectPath: req.ProjectPath, ImageSource: req.ImageSource, OpenAIKey: imageKey, GeminiKey: req.GeminiKey, XaiKey: req.XaiKey, VeoGeminiKey: req.VeoGeminiKey, ElevenLabsKey: req.ElevenLabsKey, ElevenLabsVoiceID: req.ElevenLabsVoiceID, ElevenLabsVoiceModel: req.ElevenLabsVoiceModel, ReferenceImagePath: req.ReferenceImagePath, ReferenceAssetID: req.ReferenceAssetID, ScanTargets: []string{"prototype/index.html"}, }) if postPassErr != nil { warning := sanitizeProviderError(postPassErr) sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("⚠️ Media post-pass failed: %s", warning)}) mediaPostPassSummary["warnings"] = []string{warning} } else { prototypeChanged = prototypeChanged || postPassResp.PrototypeChanged platformAssetsSynced = postPassResp.PlatformAssetsSynced mediaGeneratedCount = len(postPassResp.GeneratedAssets) mediaReusedCount = len(postPassResp.ReusedStudioAssets) mediaPostPassSummary = map[string]interface{}{ "generated": mediaGeneratedCount, "reused": mediaReusedCount, "warnings": postPassResp.Warnings, } sendSSEData(w, flusher, map[string]interface{}{ "output": fmt.Sprintf("🧩 Media post-pass: generated %d, reused %d, platform copies %d", mediaGeneratedCount, mediaReusedCount, len(postPassResp.PlatformCopies), ), }) for _, warning := range postPassResp.Warnings { sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("⚠️ %s", warning)}) } } } if mediaGeneratedCount+mediaReusedCount > 0 { sendSSEData(w, flusher, map[string]interface{}{ "output": "🧭 Running asset placement reconciliation across prototype and platform code...", }) assetPlacementSummary["ran"] = true if useConfiguredDefaultModel { warning := "Asset placement reconciliation skipped when using OpenCode configured default model without explicit provider/model." sendSSEData(w, flusher, map[string]interface{}{"output": "⚠️ " + warning}) assetPlacementSummary["warnings"] = []string{warning} assetPlacementSummary["success"] = true assetPlacementSummary["files"] = []string{} } else { reconciledFiles, reconcileWarnings, reconcileErr := driver.runAssetPlacementReconcilePass( ctx, req.ProjectPath, session.ID, modelID, providerID, w, flusher, ) if reconcileErr != nil { warning := sanitizeProviderError(reconcileErr) sendSSEData(w, flusher, map[string]interface{}{ "output": fmt.Sprintf("⚠️ Asset placement pass failed: %s", warning), }) assetPlacementSummary["warnings"] = append(reconcileWarnings, warning) } else { assetPlacementSummary["success"] = true if len(reconciledFiles) > 0 { changedFiles = mergeChangedFiles(changedFiles, reconciledFiles) prototypeChanged = prototypeChanged || detectPrototypeChanged(reconciledFiles) for _, file := range reconciledFiles { sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("📌 Reconciled: %s", file)}) } } if len(reconcileWarnings) > 0 { for _, warning := range reconcileWarnings { sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("⚠️ %s", warning)}) } } assetPlacementSummary["warnings"] = reconcileWarnings } if files, ok := assetPlacementSummary["files"].([]string); ok { assetPlacementSummary["files"] = append(files, reconciledFiles...) } else { assetPlacementSummary["files"] = reconciledFiles } } } // Check for implementation report and display it reportPath := filepath.Join(req.ProjectPath, "IMPLEMENTATION_REPORT.md") if reportContent, err := os.ReadFile(reportPath); err == nil { log.Printf("[OPENCODE] Found implementation report at %s", reportPath) sendSSEData(w, flusher, map[string]interface{}{ "output": "📋 Implementation Report:", }) // Send report content as separate lines for better readability lines := strings.Split(string(reportContent), "\n") for _, line := range lines { if line != "" { sendSSEData(w, flusher, map[string]interface{}{"output": line}) } } } // Send completion historyStatus = "completed" historySummary = fmt.Sprintf("✅ Refinement completed. %d file(s) changed.", len(changedFiles)) sendSSEData(w, flusher, map[string]interface{}{ "done": true, "success": true, "output": "✅ Refinement completed!", "files": len(changedFiles), "changedFiles": changedFiles, "noActivityObserved": !sessionHadActivity, "forwardCompatWarning": forwardCompatRegistryWarning, "prototypeChanged": prototypeChanged, "platformAssetsSynced": platformAssetsSynced, "mediaPostPass": mediaPostPassSummary, "assetPlacementPass": assetPlacementSummary, "restartPrototype": prototypeChanged, }) } // openCodeVerifyHandler handles verify requests - runs build and fixes issues func openCodeVerifyHandler(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } var req OpenCodeAgentRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { http.Error(w, "Invalid JSON body", http.StatusBadRequest) return } if req.ProjectPath == "" { http.Error(w, "projectPath is required", http.StatusBadRequest) return } // Verify project exists paths := GetProjectPaths(req.ProjectPath) if _, err := os.Stat(paths.Manifest); os.IsNotExist(err) { http.Error(w, "Not a Glowbom project (missing glowbom.json)", http.StatusBadRequest) return } if err := ensureOpenCodeServerReady(req.ProjectPath, req.Model, req.OpenAIKey, req.AnthropicKey, req.GeminiKey, req.FireworksKey, req.OpenRouterKey, req.OpenCodeZenKey, req.XaiKey, req.OpenAIAuthMode, req.OpenAIRefreshToken, req.OpenAIExpiresAt); err != nil { log.Printf("[OPENCODE] Failed preparing OpenCode server: %v", err) http.Error(w, fmt.Sprintf("Failed to prepare OpenCode server: %v", err), http.StatusInternalServerError) return } driver := GetOpenCodeDriver() ctx := r.Context() // Set up SSE headers w.Header().Set("Content-Type", "text/event-stream") w.Header().Set("Cache-Control", "no-cache") w.Header().Set("Connection", "keep-alive") flusher, ok := w.(http.Flusher) if !ok { http.Error(w, "Streaming not supported", http.StatusInternalServerError) return } sendSSEData(w, flusher, map[string]interface{}{"output": "Starting build verification..."}) // Create a new session session, err := driver.client.Session.New(ctx, opencode.SessionNewParams{ Title: opencode.F("Verify Glowbom Build"), Directory: opencode.F(req.ProjectPath), }) if err != nil { sendSSEData(w, flusher, map[string]interface{}{"done": true, "success": false, "error": userFacingAgentErrorMessage(err.Error())}) return } sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("Session created: %s", session.ID)}) // Build verify prompt prompt := buildVerifyPrompt(req.ProjectPath) authMode := normalizeOpenAIAuthMode(req.OpenAIAuthMode) requestedModel := strings.TrimSpace(req.Model) useConfiguredDefaultModel := requestedModel == "" && authMode == "opencode-config" modelID := "" providerID := "" fallbackNote := "" forwardCompatRegistryWarning := "" if useConfiguredDefaultModel { sendSSEData(w, flusher, map[string]interface{}{"output": "Using OpenCode configured default model."}) log.Printf("[OPENCODE] Using OpenCode configured default model for verify") } else { // Determine model modelID, providerID, fallbackNote = resolveSessionModelForRequest(req.ProjectPath, req.Model) if strings.EqualFold(providerID, "openai") && isOpenAICodexForwardCompatModelID(modelID) { probe, probeErr := probeOpenCodeProviderModel(req.ProjectPath, providerID, modelID) if probeErr != nil { log.Printf("[OPENCODE] Warning: failed probing provider registry for %s/%s: %v", providerID, modelID, probeErr) } else if probe.ProviderFound && !probe.ModelRegistered { forwardCompatRegistryWarning = fmt.Sprintf("⚠️ OpenCode registry does not list %s yet; using forward-compat template. If this run no-ops, update OpenCode or fall back to openai/gpt-5.3-codex.", modelID) sendSSEData(w, flusher, map[string]interface{}{"output": forwardCompatRegistryWarning}) log.Printf("[OPENCODE] Forward-compat registry miss for %s/%s providerSample=[%s]", providerID, modelID, strings.Join(probe.ProviderModelSample, ", ")) } } sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("Using model: %s/%s", providerID, modelID)}) if fallbackNote != "" { sendSSEData(w, flusher, map[string]interface{}{"output": "⚠️ " + fallbackNote}) } } // Start event stream in background BEFORE sending prompt to avoid race condition log.Printf("[OPENCODE] Starting event stream listener...") type sessionStreamResult struct { completed bool changedFiles []string hadActivity bool errorMessage string } eventStreamDone := make(chan sessionStreamResult, 1) promptDispatched := make(chan struct{}) go func() { completed, changedFiles, hadActivity, errorMessage := driver.streamEventsAndWaitForCompletion(ctx, w, flusher, req.ProjectPath, session.ID, promptDispatched) eventStreamDone <- sessionStreamResult{ completed: completed, changedFiles: changedFiles, hadActivity: hadActivity, errorMessage: errorMessage, } }() // Small delay to ensure event stream connects first time.Sleep(100 * time.Millisecond) // Now send the prompt log.Printf("[OPENCODE] Sending verify prompt") sendSSEData(w, flusher, map[string]interface{}{"output": "Agent is verifying and fixing build issues..."}) promptParams := opencode.SessionPromptParams{ Parts: opencode.F([]opencode.SessionPromptParamsPartUnion{ opencode.TextPartInputParam{ Type: opencode.F(opencode.TextPartInputTypeText), Text: opencode.F(prompt), }, }), Directory: opencode.F(req.ProjectPath), } if !useConfiguredDefaultModel { promptParams.Model = opencode.F(opencode.SessionPromptParamsModel{ ModelID: opencode.F(modelID), ProviderID: opencode.F(providerID), }) } _, err = driver.sendSessionPrompt(ctx, session.ID, promptParams) if err != nil { log.Printf("[OPENCODE] Error: Verify failed: %v", err) if isUsageLimitErrorMessage(err.Error()) { go driver.abortSessionBestEffort(session.ID, req.ProjectPath, "usage limit while sending verify prompt") } sendSSEData(w, flusher, map[string]interface{}{"done": true, "success": false, "error": userFacingAgentErrorMessage(err.Error())}) return } close(promptDispatched) log.Printf("[OPENCODE] Prompt sent, agent is now working...") // Wait for event stream goroutine to complete streamResult := <-eventStreamDone sessionCompleted := streamResult.completed changedFiles := streamResult.changedFiles sessionHadActivity := streamResult.hadActivity if !sessionCompleted { sessionErr := userFacingAgentErrorMessage(streamResult.errorMessage) if strings.TrimSpace(sessionErr) == "" || strings.EqualFold(sessionErr, "Unknown error occurred") { sessionErr = "Session did not complete" } log.Printf("[OPENCODE] Session did not complete successfully") sendSSEData(w, flusher, map[string]interface{}{ "done": true, "success": false, "error": sessionErr, }) return } if !sessionHadActivity { warn := "⚠️ Session reached idle without assistant/tool activity. The selected model may be only partially supported by this OpenCode server build." if forwardCompatRegistryWarning != "" { warn = "⚠️ Session reached idle with no assistant/tool activity while using forward-compat model mapping. Try openai/gpt-5.3-codex or update OpenCode." } if useConfiguredDefaultModel { log.Printf("[OPENCODE] Warning: %s session=%s model=(configured default)", warn, session.ID) } else { log.Printf("[OPENCODE] Warning: %s session=%s model=%s/%s", warn, session.ID, providerID, modelID) } sendSSEData(w, flusher, map[string]interface{}{"output": warn}) } // Fall back to file-walk when stream did not emit file.updated events. if len(changedFiles) == 0 { files, err := driver.collectGeneratedFiles(ctx, req.ProjectPath) if err != nil { log.Printf("[OPENCODE] Warning: Failed to collect files: %v", err) } else { changedFiles = files } } if len(changedFiles) > 0 { log.Printf("[OPENCODE] Files modified: %d", len(changedFiles)) for _, file := range changedFiles { sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("📄 Modified: %s", file)}) } } // Send completion sendSSEData(w, flusher, map[string]interface{}{ "done": true, "success": true, "output": "✅ Build verification completed!", "files": len(changedFiles), "changedFiles": changedFiles, "noActivityObserved": !sessionHadActivity, "forwardCompatWarning": forwardCompatRegistryWarning, }) } // openCodeQuestionRespondHandler handles agent question responses func openCodeQuestionRespondHandler(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } var req OpenCodeQuestionRespondRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { http.Error(w, "Invalid JSON body", http.StatusBadRequest) return } if req.SessionID == "" { http.Error(w, "sessionID is required", http.StatusBadRequest) return } driver := GetOpenCodeDriver() sessionID := req.SessionID questionID := req.QuestionID answer := req.Answer projectPath := req.ProjectPath ctx, cancel := context.WithTimeout(r.Context(), 30*time.Second) defer cancel() if err := driver.respondToQuestion(ctx, sessionID, questionID, answer, projectPath, req.Answers, req.AnswerByQuestionID); err != nil { http.Error(w, fmt.Sprintf("Failed to respond to question: %v", err), http.StatusInternalServerError) return } writeJSON(w, map[string]interface{}{"ok": true}) } // openCodePermissionRespondHandler handles agent permission responses func openCodePermissionRespondHandler(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } var req OpenCodePermissionRespondRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { http.Error(w, "Invalid JSON body", http.StatusBadRequest) return } if req.SessionID == "" || req.PermissionID == "" || req.Response == "" { http.Error(w, "sessionID, permissionID, and response are required", http.StatusBadRequest) return } driver := GetOpenCodeDriver() if err := driver.respondToPermission(r.Context(), req.SessionID, req.PermissionID, req.Response, req.ProjectPath); err != nil { http.Error(w, fmt.Sprintf("Failed to respond to permission: %v", err), http.StatusInternalServerError) return } writeJSON(w, map[string]interface{}{"ok": true}) } const ( maxInstructionAttachmentSizeBytes = int64(40 * 1024 * 1024) maxInstructionAttachmentCount = 20 ) type stagedInstructionAttachment struct { AbsolutePath string RelativePath string SizeBytes int64 } func hasAnyInstructionAttachmentPath(requestedPaths []string) bool { for _, rawPath := range requestedPaths { if strings.TrimSpace(rawPath) != "" { return true } } return false } func resetCurrentInstructionsDirectory(projectPath string) error { currentInstructionsDir := filepath.Join(projectPath, "current_instructions") if err := os.RemoveAll(currentInstructionsDir); err != nil { return fmt.Errorf("failed to reset current_instructions folder: %w", err) } if err := os.MkdirAll(currentInstructionsDir, 0755); err != nil { return fmt.Errorf("failed to create current_instructions folder: %w", err) } return nil } func stageInstructionAttachments(projectPath string, requestedPaths []string) ([]stagedInstructionAttachment, error) { nonEmptyPaths := make([]string, 0, len(requestedPaths)) for _, rawPath := range requestedPaths { if strings.TrimSpace(rawPath) == "" { continue } nonEmptyPaths = append(nonEmptyPaths, rawPath) } if len(nonEmptyPaths) == 0 { return nil, nil } if len(nonEmptyPaths) > maxInstructionAttachmentCount { return nil, fmt.Errorf("too many instruction attachments (max %d files)", maxInstructionAttachmentCount) } currentInstructionsDir := filepath.Join(projectPath, "current_instructions") if err := os.MkdirAll(currentInstructionsDir, 0755); err != nil { return nil, fmt.Errorf("failed to create current_instructions folder: %w", err) } seenSourcePaths := map[string]struct{}{} usedNames := map[string]struct{}{} if existingEntries, err := os.ReadDir(currentInstructionsDir); err == nil { for _, entry := range existingEntries { usedNames[entry.Name()] = struct{}{} } } attachments := make([]stagedInstructionAttachment, 0, len(nonEmptyPaths)) for _, rawPath := range nonEmptyPaths { trimmed := strings.TrimSpace(rawPath) cleanPath := filepath.Clean(trimmed) absolutePath, err := filepath.Abs(cleanPath) if err != nil { return nil, fmt.Errorf("failed resolving attachment path %q: %w", trimmed, err) } if _, seen := seenSourcePaths[absolutePath]; seen { continue } seenSourcePaths[absolutePath] = struct{}{} info, err := os.Stat(absolutePath) if err != nil { if os.IsNotExist(err) { return nil, fmt.Errorf("attachment not found: %s", absolutePath) } return nil, fmt.Errorf("failed to access attachment %q: %w", absolutePath, err) } if info.IsDir() { return nil, fmt.Errorf("attachment must be a file, not folder: %s", absolutePath) } if info.Size() > maxInstructionAttachmentSizeBytes { return nil, fmt.Errorf( "attachment %q exceeds the 40MB limit (%s)", filepath.Base(absolutePath), humanReadableBytes(info.Size()), ) } baseName := sanitizeAttachmentFilename(filepath.Base(absolutePath)) if baseName == "" { baseName = fmt.Sprintf("attachment-%d", len(attachments)+1) } targetName := uniqueAttachmentFilename(baseName, usedNames) targetPath := filepath.Join(currentInstructionsDir, targetName) if err := copyLocalAttachmentFile(absolutePath, targetPath); err != nil { return nil, fmt.Errorf("failed copying attachment %q: %w", absolutePath, err) } attachments = append(attachments, stagedInstructionAttachment{ AbsolutePath: targetPath, RelativePath: filepath.ToSlash(filepath.Join("current_instructions", targetName)), SizeBytes: info.Size(), }) } if len(attachments) == 0 { return nil, nil } return attachments, nil } func stageInstructionTextFile(projectPath, instructions string) (string, error) { trimmed := strings.TrimSpace(instructions) if trimmed == "" { return "", nil } currentInstructionsDir := filepath.Join(projectPath, "current_instructions") if err := os.MkdirAll(currentInstructionsDir, 0755); err != nil { return "", fmt.Errorf("failed to create current_instructions folder: %w", err) } textPath := filepath.Join(currentInstructionsDir, "instructions.txt") if err := os.WriteFile(textPath, []byte(trimmed+"\n"), 0644); err != nil { return "", fmt.Errorf("failed writing instructions.txt: %w", err) } return filepath.ToSlash(filepath.Join("current_instructions", "instructions.txt")), nil } func mergeInstructionAttachmentContext( userInstructions string, instructionsFilePath string, attachments []stagedInstructionAttachment, ) string { if instructionsFilePath == "" && len(attachments) == 0 { return userInstructions } lines := []string{ "[Local attachment context]", "PRIORITY: Start by reading files in current_instructions/ first. Treat them as the main instructions for this run.", } if instructionsFilePath != "" { lines = append(lines, "Primary file: "+instructionsFilePath) } for _, attachment := range attachments { lines = append(lines, "Primary file: "+attachment.RelativePath) } lines = append(lines, "Use these files as source-of-truth context when details conflict with defaults.") context := strings.Join(lines, "\n") trimmedInstructions := strings.TrimSpace(userInstructions) if trimmedInstructions == "" { return context } return trimmedInstructions + "\n\n" + context } func sanitizeAttachmentFilename(name string) string { trimmed := strings.TrimSpace(name) if trimmed == "" { return "" } var builder strings.Builder builder.Grow(len(trimmed)) for _, r := range trimmed { switch { case r >= 'a' && r <= 'z': builder.WriteRune(r) case r >= 'A' && r <= 'Z': builder.WriteRune(r) case r >= '0' && r <= '9': builder.WriteRune(r) case r == '-', r == '_', r == '.', r == '(', r == ')', r == '[', r == ']', r == '+': builder.WriteRune(r) default: builder.WriteRune('_') } } clean := strings.Trim(builder.String(), " .") if clean == "" { return "" } if strings.HasPrefix(clean, ".") { clean = "file" + clean } return clean } func uniqueAttachmentFilename(baseName string, used map[string]struct{}) string { if _, exists := used[baseName]; !exists { used[baseName] = struct{}{} return baseName } ext := filepath.Ext(baseName) stem := strings.TrimSuffix(baseName, ext) if stem == "" { stem = "attachment" } for idx := 2; ; idx++ { candidate := fmt.Sprintf("%s-%d%s", stem, idx, ext) if _, exists := used[candidate]; exists { continue } used[candidate] = struct{}{} return candidate } } func copyLocalAttachmentFile(sourcePath, targetPath string) error { source, err := os.Open(sourcePath) if err != nil { return err } defer source.Close() target, err := os.Create(targetPath) if err != nil { return err } _, copyErr := io.Copy(target, source) closeErr := target.Close() if copyErr != nil { return copyErr } return closeErr } func humanReadableBytes(size int64) string { if size < 1024 { return fmt.Sprintf("%d B", size) } value := float64(size) units := []string{"KB", "MB", "GB", "TB"} unit := "B" for _, candidate := range units { value /= 1024 unit = candidate if value < 1024 { break } } if unit == "KB" { return fmt.Sprintf("%.0f %s", value, unit) } return fmt.Sprintf("%.1f %s", value, unit) } type agentHistoryAttachmentRecord struct { ID string `json:"id"` MediaType string `json:"mediaType"` Filename string `json:"filename"` MimeType string `json:"mimeType,omitempty"` FileSizeBytes int64 `json:"fileSizeBytes,omitempty"` } type agentHistoryEntryRecord struct { ID string `json:"id"` Timestamp string `json:"timestamp"` Instructions string `json:"instructions"` TaskType string `json:"taskType"` Status string `json:"status,omitempty"` OutputSummary string `json:"outputSummary,omitempty"` Attachments []agentHistoryAttachmentRecord `json:"attachments,omitempty"` } func persistCurrentInstructionsHistory( projectPath string, instructions string, status string, outputSummary string, ) error { currentInstructionsDir := filepath.Join(projectPath, "current_instructions") entries, err := os.ReadDir(currentInstructionsDir) if err != nil { if os.IsNotExist(err) { return nil } return fmt.Errorf("failed reading current_instructions: %w", err) } regularFiles := make([]os.DirEntry, 0, len(entries)) for _, entry := range entries { if entry.Type().IsRegular() { regularFiles = append(regularFiles, entry) continue } info, infoErr := entry.Info() if infoErr == nil && info.Mode().IsRegular() { regularFiles = append(regularFiles, entry) } } if len(regularFiles) == 0 { return nil } sort.Slice(regularFiles, func(i, j int) bool { return regularFiles[i].Name() < regularFiles[j].Name() }) historyRoot := filepath.Join(projectPath, "history") if err := os.MkdirAll(historyRoot, 0755); err != nil { return fmt.Errorf("failed creating history folder: %w", err) } now := time.Now().UTC() entryID := randomUUIDString() shortID := strings.Split(entryID, "-")[0] folderName := fmt.Sprintf("%s_%s", now.Format("2006-01-02_150405"), shortID) entryDir := filepath.Join(historyRoot, folderName) if err := os.MkdirAll(entryDir, 0755); err != nil { return fmt.Errorf("failed creating history entry folder: %w", err) } attachments := make([]agentHistoryAttachmentRecord, 0, len(regularFiles)) for _, entry := range regularFiles { name := entry.Name() sourcePath := filepath.Join(currentInstructionsDir, name) targetPath := filepath.Join(entryDir, name) if err := copyLocalAttachmentFile(sourcePath, targetPath); err != nil { return fmt.Errorf("failed copying %s to history: %w", name, err) } info, err := os.Stat(sourcePath) sizeBytes := int64(0) if err == nil { sizeBytes = info.Size() } mimeType := inferMimeTypeForFilename(name) attachments = append(attachments, agentHistoryAttachmentRecord{ ID: randomUUIDString(), MediaType: inferHistoryMediaType(mimeType, name), Filename: name, MimeType: mimeType, FileSizeBytes: sizeBytes, }) } historyEntry := agentHistoryEntryRecord{ ID: entryID, Timestamp: now.Format(time.RFC3339), Instructions: strings.TrimSpace(instructions), TaskType: "refine", Status: normalizeHistoryStatus(status), OutputSummary: truncateText(outputSummary, 500), Attachments: attachments, } entryData, err := json.MarshalIndent(historyEntry, "", " ") if err != nil { return fmt.Errorf("failed serializing history entry: %w", err) } entryPath := filepath.Join(entryDir, "entry.json") if err := os.WriteFile(entryPath, entryData, 0644); err != nil { return fmt.Errorf("failed writing history entry: %w", err) } log.Printf("[OPENCODE] Archived current instructions to history/%s", folderName) return nil } func inferMimeTypeForFilename(name string) string { extension := strings.ToLower(filepath.Ext(name)) if extension == "" { return "application/octet-stream" } if mimeType := mime.TypeByExtension(extension); mimeType != "" { return mimeType } return "application/octet-stream" } func inferHistoryMediaType(mimeType, name string) string { lowerMime := strings.ToLower(strings.TrimSpace(mimeType)) switch { case strings.HasPrefix(lowerMime, "image/"): return "screenshot" case strings.HasPrefix(lowerMime, "video/"): return "video" case strings.HasPrefix(lowerMime, "audio/"): return "audio" case strings.HasPrefix(lowerMime, "text/"): return "document" } extension := strings.ToLower(filepath.Ext(name)) switch extension { case ".md", ".txt", ".json", ".yaml", ".yml", ".xml", ".csv", ".pdf": return "document" default: return "other" } } func normalizeHistoryStatus(status string) string { switch strings.ToLower(strings.TrimSpace(status)) { case "running": return "running" case "completed": return "completed" case "failed": return "failed" case "cancelled": return "cancelled" default: return "failed" } } func truncateText(value string, maxLen int) string { if maxLen <= 0 { return "" } trimmed := strings.TrimSpace(value) if len(trimmed) <= maxLen { return trimmed } return trimmed[:maxLen] } func randomUUIDString() string { buffer := make([]byte, 16) if _, err := rand.Read(buffer); err != nil { fallback := fmt.Sprintf("%032x", time.Now().UnixNano()) if len(fallback) < 32 { fallback = strings.Repeat("0", 32-len(fallback)) + fallback } return fmt.Sprintf("%s-%s-%s-%s-%s", fallback[0:8], fallback[8:12], fallback[12:16], fallback[16:20], fallback[20:32], ) } buffer[6] = (buffer[6] & 0x0f) | 0x40 buffer[8] = (buffer[8] & 0x3f) | 0x80 hexValue := hex.EncodeToString(buffer) return fmt.Sprintf("%s-%s-%s-%s-%s", hexValue[0:8], hexValue[8:12], hexValue[12:16], hexValue[16:20], hexValue[20:32], ) } // buildRefinePrompt creates the prompt for code refinement func buildRefinePrompt(projectRoot, instructions string) string { basePrompt := fmt.Sprintf(`You are working in a Glowbom project at: %s Your task is to make this project production-ready and improve code quality. Report your actions clearly. IMPORTANT: - If AGENTS.md exists in the project root, read it first and follow it as the source of truth. - If AGENTS.md is missing but Agent.md exists, read and follow Agent.md. - If user instructions conflict with AGENTS.md (or Agent.md), follow the user instructions. ## Project Structure - prototype/ - HTML/Tailwind source prototype - ios/ - SwiftUI code (if exists) - android/ - Kotlin code (if exists) - web/ - Next.js code (if exists) - godot/ - Godot code (if exists) ## Instructions 1. First, explore the project structure to understand what exists - report what you find 2. Read the prototype HTML to understand the intended design - summarize key elements 3. Review the generated platform code for issues: - Code style and best practices - report improvements made - Missing functionality from the prototype - add what's missing - Error handling - enhance where needed - Performance concerns - optimize if possible - Accessibility issues - fix any found 4. Make improvements while preserving the original design intent 5. Verify any changes compile/build correctly - report build results and fixes 6. If you add or change media in prototype/index.html, use placeholders so post-pass can materialize assets: - Images: glowbyimage: - Videos: glowbyvideo:|from:|aspect: - Audio: glowbyaudio:|type:|voice:|model:|duration: - For sound effects, ALWAYS set |type:sound explicitly. - If you don't know a valid ElevenLabs model ID, OMIT model:<...>; never use model:standard. - If voice/model are omitted, backend applies the user's configured ElevenLabs defaults. - For voiceover/background music/sound effects requests, add glowbyaudio placeholders wherever those assets are needed so post-pass can generate and attach them. - If the request is personalization (for example "make this person the main character"), you MUST add/update at least one glowbyimage placeholder that explicitly describes that person so backend post-pass can generate personalized assets. 7. Report progress after each major step (e.g., "Analyzed ios/ code", "Fixed error handling", "Build successful")`, projectRoot) // Inject project metadata so the agent knows the app identity manifestPath := filepath.Join(projectRoot, "glowbom.json") if project, err := LoadProject(manifestPath); err == nil { var metaParts []string if project.DisplayName != "" { metaParts = append(metaParts, fmt.Sprintf("- Display Name: %s", project.DisplayName)) } if project.BundleID != "" { metaParts = append(metaParts, fmt.Sprintf("- Bundle ID: %s", project.BundleID)) } if project.Version != "" { metaParts = append(metaParts, fmt.Sprintf("- Version: %s", project.Version)) } if project.BuildNumber != "" { metaParts = append(metaParts, fmt.Sprintf("- Build Number: %s", project.BuildNumber)) } if len(metaParts) > 0 { basePrompt += fmt.Sprintf(` ## Project Identity (from glowbom.json) Use these values when configuring platform targets (Info.plist, build.gradle, package.json, etc.): %s`, strings.Join(metaParts, "\n")) } } agentContent, agentFile := loadAgentInstructions(projectRoot) if agentContent != "" { basePrompt += fmt.Sprintf(` ## Agent Instructions (%s) %s`, agentFile, agentContent) } if instructions != "" { basePrompt += fmt.Sprintf(` ## User Instructions (override AGENTS.md if conflict) %s`, instructions) } return basePrompt } func loadAgentInstructions(projectRoot string) (string, string) { for _, name := range []string{"AGENTS.md", "Agent.md"} { path := filepath.Join(projectRoot, name) content, err := os.ReadFile(path) if err != nil { continue } text := strings.TrimSpace(string(content)) if text == "" { continue } return text, name } return "", "" } // buildAssetPlacementPrompt creates a strict post-media pass prompt to reconcile asset references. func buildAssetPlacementPrompt(projectRoot string) string { return fmt.Sprintf(`You are running the final "asset placement reconciliation" pass for a Glowbom project at: %s Goal: Ensure newly materialized assets from prototype/assets are correctly referenced across prototype and all existing platform outputs (Apple/Android/Web/Godot) without changing core app logic. Hard Rules: - Do NOT generate new images, videos, or audio in this pass. - Do NOT add new glowbyimage, glowbyvideo, or glowbyaudio placeholders. - Do NOT rewrite unrelated game/app logic. - Keep edits minimal and deterministic; only fix asset placement, references, and render-fit issues. Read these files first: 1. AGENTS.md (if present) 2. prototype/index.html 3. prototype/assets.json 4. prototype/platform_assets_map.json (if present) Tasks: 1. Prototype reference integrity - Verify every prototype image/video/audio reference points to an existing file under prototype/assets. - Replace stale legacy references with the best matching generated asset when intent clearly matches. - Preserve IDs/classes/layout and existing behavior. 2. Platform reference reconciliation (only for directories that exist) - Apple: ensure SwiftUI/extension code references the correct asset catalog names from Assets.xcassets. - Android: ensure resource names used in code map to existing drawable/raw files for image/video/audio. - Web: ensure references map to existing web/public/assets/images, web/public/assets/videos, and web/public/assets/audio files. - Godot: ensure resource paths map to existing godot/assets/sprites, godot/assets/videos, and godot/assets/audio files. 3. Rendering quality checks - Avatars/hero art: use cover/crop behavior, avoid distortion. - Logos/icons/UI symbols: use fit/contain behavior. - Keep responsive behavior intact. 4. Size/compression guardrails - Reuse existing generated assets by default. - Only create a downscaled derivative if a very large image is used in a tiny slot and would be wasteful. - If you create a derivative, update references deterministically and keep originals. 5. Validation - Ensure there are no broken asset references in modified files. - If platform folders exist, make sure code references only assets that actually exist in that platform output. Output requirements: - Report exactly which files were changed and why. - Include any remaining warnings if a platform path could not be reconciled cleanly.`, projectRoot) } type openCodeSessionResult struct { completed bool changedFiles []string hadActivity bool errorMessage string } func (d *OpenCodeDriver) runAssetPlacementReconcilePass( ctx context.Context, projectPath string, existingSessionID string, modelID string, providerID string, w http.ResponseWriter, flusher http.Flusher, ) ([]string, []string, error) { warnings := []string{} var session *opencode.Session if existingSessionID != "" { session = &opencode.Session{ID: existingSessionID} sendSSEData(w, flusher, map[string]interface{}{ "output": fmt.Sprintf("Asset placement using session: %s", session.ID), }) } else { var err error session, err = d.client.Session.New(ctx, opencode.SessionNewParams{ Title: opencode.F("Reconcile Asset Placement"), Directory: opencode.F(projectPath), }) if err != nil { return nil, warnings, err } sendSSEData(w, flusher, map[string]interface{}{ "output": fmt.Sprintf("Asset placement session created: %s", session.ID), }) } prompt := buildAssetPlacementPrompt(projectPath) preRunSnapshot, snapshotErr := captureProjectFileSnapshot(projectPath) if snapshotErr != nil { warnings = append(warnings, fmt.Sprintf("asset placement snapshot unavailable: %s", sanitizeProviderError(snapshotErr))) } eventStreamDone := make(chan openCodeSessionResult, 1) promptDispatched := make(chan struct{}) go func() { completed, changedFiles, hadActivity, errorMessage := d.streamEventsAndWaitForCompletion(ctx, w, flusher, projectPath, session.ID, promptDispatched) eventStreamDone <- openCodeSessionResult{ completed: completed, changedFiles: changedFiles, hadActivity: hadActivity, errorMessage: errorMessage, } }() time.Sleep(100 * time.Millisecond) sendSSEData(w, flusher, map[string]interface{}{"output": "Reconciling asset references and render fit across targets..."}) _, err := d.sendSessionPrompt(ctx, session.ID, opencode.SessionPromptParams{ Parts: opencode.F([]opencode.SessionPromptParamsPartUnion{ opencode.TextPartInputParam{ Type: opencode.F(opencode.TextPartInputTypeText), Text: opencode.F(prompt), }, }), Model: opencode.F(opencode.SessionPromptParamsModel{ ModelID: opencode.F(modelID), ProviderID: opencode.F(providerID), }), Directory: opencode.F(projectPath), }) if err != nil { if isUsageLimitErrorMessage(err.Error()) { go d.abortSessionBestEffort(session.ID, projectPath, "usage limit while sending asset placement prompt") } return nil, warnings, err } close(promptDispatched) streamResult := <-eventStreamDone if !streamResult.completed { sessionErr := userFacingAgentErrorMessage(streamResult.errorMessage) if strings.TrimSpace(sessionErr) == "" || strings.EqualFold(sessionErr, "Unknown error occurred") { sessionErr = "asset placement session did not complete" } return nil, warnings, fmt.Errorf("%s", sessionErr) } if !streamResult.hadActivity { warnings = append(warnings, "asset placement session reported idle without assistant activity") } changedFiles := streamResult.changedFiles if len(changedFiles) == 0 && preRunSnapshot != nil { snapshotChanges, err := detectChangedFilesFromSnapshot(projectPath, preRunSnapshot) if err != nil { warnings = append(warnings, fmt.Sprintf("asset placement fallback diff failed: %s", sanitizeProviderError(err))) } else if len(snapshotChanges) > 0 { changedFiles = snapshotChanges sendSSEData(w, flusher, map[string]interface{}{ "output": fmt.Sprintf("📡 Recovered %d asset-placement file changes via snapshot fallback", len(changedFiles)), }) } } if len(changedFiles) == 0 { warnings = append(warnings, "asset placement pass completed with no file changes") } return changedFiles, dedupeWarnings(warnings), nil } // buildVerifyPrompt creates the prompt for build verification func buildVerifyPrompt(projectRoot string) string { return fmt.Sprintf(`You are working in a Glowbom project at: %s Your task is to verify the project builds successfully and fix any issues. Report all actions and results clearly. ## Project Structure - prototype/ - HTML/Tailwind source prototype - ios/ - SwiftUI code (if exists) - android/ - Kotlin code (if exists) - web/ - Next.js code (if exists) - godot/ - Godot code (if exists) ## Instructions 1. First, explore the project to see what target platforms exist - report findings 2. For each platform that has code: **iOS (SwiftUI)**: - Navigate to ios/ directory - Report current state of files - Run 'swift build' to verify compilation - report output - Fix any Swift compiler errors - report each fix made - Re-run build to verify - report success/failure **Android (Kotlin)**: - Navigate to android/ directory - Report current state of files - Run './gradlew build' to verify compilation - report output - Fix any Kotlin/Gradle errors - report each fix made - Re-run build to verify - report success/failure **Web (Next.js)**: - Navigate to web/ directory - Report current state of files - Run 'npm install && npm run build' to verify - report output - Fix any TypeScript/build errors - report each fix made - Re-run build to verify - report success/failure **Godot**: - Navigate to godot/ directory - Report current state of files - Verify scene files are valid - report issues - Fix any GDScript errors - report each fix made - Re-verify - report success/failure 3. For each error encountered: - Analyze the root cause - explain what went wrong - Make the minimal fix required - describe the change - Re-run the build to verify the fix - report results 4. Continue until all platforms build successfully - provide final status report 5. Report progress after each major action (e.g., "Checking ios/ build", "Fixed Swift error in ViewModel", "iOS build successful")`, projectRoot) } // getPropertyValue searches for a property value in a map or struct, supporting nested paths like "Part.Text" func getPropertyValue(p interface{}, path string) interface{} { if p == nil { return nil } parts := strings.Split(path, ".") current := p for _, part := range parts { if current == nil { return nil } // Handle map if m, ok := current.(map[string]interface{}); ok { found := false // Case-insensitive search in map for k, v := range m { if strings.EqualFold(k, part) { current = v found = true break } } if !found { return nil } continue } // Handle struct via reflection v := reflect.ValueOf(current) if v.Kind() == reflect.Ptr { v = v.Elem() } if v.Kind() == reflect.Struct { f := v.FieldByName(strings.Title(part)) if !f.IsValid() { // Try as-is f = v.FieldByName(part) } if f.IsValid() { current = f.Interface() continue } } return nil } return current } // getPropertyString returns a string value from an interface, handling multiple potential paths func getPropertyString(p interface{}, paths ...string) string { for _, path := range paths { val := getPropertyValue(p, path) if val != nil { if s, ok := val.(string); ok && s != "" { return s } // Fallback to string representation if not a string but exists if valStr := fmt.Sprintf("%v", val); valStr != "" && valStr != "" { return valStr } } } return "" } // getPropertyMap returns a map representation of a property func getPropertyMap(p interface{}, path string) map[string]interface{} { val := getPropertyValue(p, path) if val == nil { return nil } if m, ok := val.(map[string]interface{}); ok { return m } // Try to convert struct to map via reflection if needed v := reflect.ValueOf(val) if v.Kind() == reflect.Ptr { v = v.Elem() } if v.Kind() == reflect.Struct { res := make(map[string]interface{}) t := v.Type() for i := 0; i < v.NumField(); i++ { f := v.Field(i) if f.CanInterface() { res[t.Field(i).Name] = f.Interface() } } return res } return nil } func getStringSlice(p interface{}, path string) []string { val := getPropertyValue(p, path) if val == nil { return nil } switch v := val.(type) { case []string: return v case []interface{}: out := make([]string, 0, len(v)) for _, item := range v { if s, ok := item.(string); ok && s != "" { out = append(out, s) } else if item != nil { out = append(out, fmt.Sprintf("%v", item)) } } return out default: return nil } } // extractAssistantMessageText pulls assistant text from message.updated payloads. // OpenCode events often nest text under properties.info.parts[].text. func extractAssistantMessageText(props interface{}) string { if props == nil { return "" } // Legacy/simple paths. if direct := getPropertyString(props, "Content", "Text", "Part.Text", "Part.Content"); direct != "" { return direct } // Canonical path for message.updated: properties.info.parts[].text if info := getPropertyValue(props, "Info"); info != nil { if text := joinPartTexts(getPropertyValue(info, "Parts")); text != "" { return text } } // Raw map fallback if structure differs by SDK/runtime. if info := getPropertyValue(props, "info"); info != nil { if text := joinPartTexts(getPropertyValue(info, "parts")); text != "" { return text } } return "" } func extractMessageRole(props interface{}) string { role := strings.ToLower(strings.TrimSpace(getPropertyString( props, "Info.Role", "info.role", "Role", "role", "Message.Role", "message.role", ))) return role } func looksLikeDriverPromptEcho(content string) bool { lower := strings.ToLower(strings.TrimSpace(content)) if lower == "" { return false } // Guardrail: when a user message.update is surfaced without role metadata, // avoid replaying the entire backend prompt template into the UI stream. return strings.Contains(lower, "you are working in a glowbom project at:") && strings.Contains(lower, "your task is to make this project production-ready") && strings.Contains(lower, "project structure") } func getMapValueCaseInsensitive(m map[string]interface{}, key string) interface{} { for candidate, value := range m { if strings.EqualFold(candidate, key) { return value } } return nil } func getMapStringCaseInsensitive(m map[string]interface{}, keys ...string) string { for _, key := range keys { val := getMapValueCaseInsensitive(m, key) if val == nil { continue } if s, ok := val.(string); ok { trimmed := strings.TrimSpace(s) if trimmed != "" { return trimmed } } else { rendered := strings.TrimSpace(fmt.Sprintf("%v", val)) if rendered != "" && rendered != "" { return rendered } } } return "" } func summarizeToolInput(input map[string]interface{}) string { if len(input) == 0 { return "" } if path := getMapStringCaseInsensitive(input, "Path", "path", "File", "file"); path != "" { return fmt.Sprintf("(%s)", filepath.Base(path)) } if cmd := getMapStringCaseInsensitive(input, "Command", "command", "Cmd", "cmd"); cmd != "" { if len(cmd) > 50 { cmd = cmd[:47] + "..." } return fmt.Sprintf("(%s)", cmd) } if pattern := getMapStringCaseInsensitive(input, "Pattern", "pattern"); pattern != "" { if len(pattern) > 42 { pattern = pattern[:39] + "..." } return fmt.Sprintf("(%s)", pattern) } return "" } type toolPartProgress struct { key string status string label string errorMsg string } func extractToolPartProgress(props interface{}) (toolPartProgress, bool) { if props == nil { return toolPartProgress{}, false } partVal := getPropertyValue(props, "Part") if partVal == nil { partVal = getPropertyValue(props, "part") } if partVal == nil { return toolPartProgress{}, false } partType := strings.ToLower(strings.TrimSpace(getPropertyString(partVal, "Type", "type"))) if partType != "tool" { return toolPartProgress{}, false } partID := strings.TrimSpace(getPropertyString(partVal, "ID", "Id", "id")) callID := strings.TrimSpace(getPropertyString(partVal, "CallID", "CallId", "callID", "callId")) toolName := strings.TrimSpace(getPropertyString(partVal, "Tool", "tool", "Name", "name")) stateVal := getPropertyValue(partVal, "State") if stateVal == nil { stateVal = getPropertyValue(partVal, "state") } status := strings.ToLower(strings.TrimSpace(getPropertyString(stateVal, "Status", "status"))) if status == "" { status = strings.ToLower(strings.TrimSpace(getPropertyString(partVal, "State.Status", "state.status"))) } if status == "" { status = "running" } title := strings.TrimSpace(getPropertyString(stateVal, "Title", "title")) if title == "" { title = strings.TrimSpace(getPropertyString(partVal, "Name", "name")) } var input map[string]interface{} if stateVal != nil { input = getPropertyMap(stateVal, "Input") if input == nil { input = getPropertyMap(stateVal, "input") } } if input == nil { if stateMap, ok := stateVal.(map[string]interface{}); ok { if nested, ok := getMapValueCaseInsensitive(stateMap, "input").(map[string]interface{}); ok { input = nested } } } label := title if label == "" { label = toolName } if label == "" { label = "tool" } if suffix := summarizeToolInput(input); suffix != "" { label = label + " " + suffix } errMsg := strings.TrimSpace(getPropertyString(stateVal, "Error", "error")) key := callID if key == "" { key = partID } if key == "" { key = label } return toolPartProgress{ key: key, status: status, label: label, errorMsg: errMsg, }, true } func formatToolPartProgressLine(progress toolPartProgress) string { switch progress.status { case "pending", "running": return fmt.Sprintf("🔧 Running: %s", progress.label) case "completed": return fmt.Sprintf("✅ Completed: %s", progress.label) case "error": if strings.TrimSpace(progress.errorMsg) != "" { return fmt.Sprintf("❌ Tool failed: %s (%s)", progress.label, progress.errorMsg) } return fmt.Sprintf("❌ Tool failed: %s", progress.label) default: return "" } } func joinPartTexts(parts interface{}) string { if parts == nil { return "" } var chunks []string appendText := func(part interface{}) { if part == nil { return } if text := getPropertyString(part, "Text", "text", "Content", "content", "Snapshot", "snapshot"); text != "" { chunks = append(chunks, text) } } switch list := parts.(type) { case []interface{}: for _, part := range list { appendText(part) } case []map[string]interface{}: for _, part := range list { appendText(part) } default: v := reflect.ValueOf(parts) if v.Kind() == reflect.Ptr { v = v.Elem() } if v.Kind() == reflect.Slice || v.Kind() == reflect.Array { for i := 0; i < v.Len(); i++ { if v.Index(i).CanInterface() { appendText(v.Index(i).Interface()) } } } } if len(chunks) == 0 { return "" } return strings.Join(chunks, "") } func extractPartID(props interface{}) string { return strings.TrimSpace(getPropertyString( props, "Part.ID", "Part.Id", "part.id", "PartID", "partID", )) } func extractPartMessageID(props interface{}) string { return strings.TrimSpace(getPropertyString( props, "Part.MessageID", "Part.MessageId", "part.messageID", "part.messageId", "MessageID", "messageID", )) } func extractPartDelta(props interface{}) string { return getPropertyString( props, "Delta", "delta", "Part.Delta", "part.delta", ) } func extractPartSnapshotText(props interface{}) string { return getPropertyString( props, "Part.Text", "Part.Content", "Part.Snapshot", "part.text", "part.content", "part.snapshot", "Text", "text", "Content", "content", "Snapshot", "snapshot", ) } func longestCommonPrefix(left, right string) string { leftRunes := []rune(left) rightRunes := []rune(right) n := len(leftRunes) if len(rightRunes) < n { n = len(rightRunes) } i := 0 for i < n && leftRunes[i] == rightRunes[i] { i++ } if i == 0 { return "" } return string(leftRunes[:i]) } // computePartChunk deduplicates mixed part.updated/delta streams by tracking // the latest known snapshot for each part and returning only incremental text. func computePartChunk(partID, explicitDelta, snapshotText string, snapshots map[string]string) string { if partID == "" { if explicitDelta != "" { return explicitDelta } return snapshotText } prev := snapshots[partID] if snapshotText != "" { if snapshotText == prev { return "" } if prev == "" { snapshots[partID] = snapshotText return snapshotText } if strings.HasPrefix(snapshotText, prev) { chunk := strings.TrimPrefix(snapshotText, prev) snapshots[partID] = snapshotText if chunk != "" { return chunk } if explicitDelta != "" { return explicitDelta } return "" } // Snapshot was rewritten; emit only changed suffix to avoid replaying whole text. common := longestCommonPrefix(prev, snapshotText) chunk := strings.TrimPrefix(snapshotText, common) snapshots[partID] = snapshotText return chunk } if explicitDelta != "" { snapshots[partID] = prev + explicitDelta return explicitDelta } return "" } func extractPartChunk(props interface{}, snapshots map[string]string) (chunk string, partID string, partMessageID string) { if props == nil { return "", "", "" } partID = extractPartID(props) partMessageID = extractPartMessageID(props) explicitDelta := extractPartDelta(props) snapshotText := extractPartSnapshotText(props) // Some providers emit snapshot-only part updates without a stable part ID. // Use message ID as a synthetic key so we can still compute deltas. if partID == "" && partMessageID != "" && (snapshotText != "" || explicitDelta != "") { partID = "message:" + partMessageID } chunk = computePartChunk(partID, explicitDelta, snapshotText, snapshots) return chunk, partID, partMessageID } func parseEventPropertiesFromRaw(raw string) map[string]interface{} { if raw == "" { return nil } var payload map[string]interface{} if err := json.Unmarshal([]byte(raw), &payload); err != nil { return nil } if props, ok := payload["properties"].(map[string]interface{}); ok { return props } return payload } func extractQuestionItems(props interface{}) []map[string]interface{} { if props == nil { return nil } questionsVal := getPropertyValue(props, "Questions") if questionsVal == nil { questionsVal = getPropertyValue(props, "questions") } if questionsVal == nil { if questionMap := getPropertyMap(props, "Question"); questionMap != nil { return []map[string]interface{}{ questionMap, } } return nil } switch v := questionsVal.(type) { case []map[string]interface{}: return v case []interface{}: items := make([]map[string]interface{}, 0, len(v)) for _, item := range v { if m, ok := item.(map[string]interface{}); ok { items = append(items, m) } else if s, ok := item.(string); ok { items = append(items, map[string]interface{}{"prompt": s}) } } return items default: return nil } } func extractQuestionFields(props interface{}) (string, string, string, []string) { if props == nil { return "", "", "", nil } questionID := getPropertyString(props, "ID", "Id", "QuestionID", "questionID", "RequestID", "requestID", "Question.Id", "Question.ID", "QuestionID.Id", "Question.RequestID") sessionID := getPropertyString(props, "SessionID", "sessionID", "Session.Id", "Session.ID", "Question.SessionID") prompt := getPropertyString(props, "Prompt", "Question", "Text", "Message", "Content", "question", "Question.Text", "Question.Prompt") choices := getStringSlice(props, "Choices") if questionMap := getPropertyMap(props, "Question"); questionMap != nil { if questionID == "" { if val, ok := questionMap["id"].(string); ok { questionID = val } else if val, ok := questionMap["ID"].(string); ok { questionID = val } else if val, ok := questionMap["requestID"].(string); ok { questionID = val } else if val, ok := questionMap["RequestID"].(string); ok { questionID = val } } if sessionID == "" { if val, ok := questionMap["sessionID"].(string); ok { sessionID = val } else if val, ok := questionMap["SessionID"].(string); ok { sessionID = val } } if prompt == "" { if val, ok := questionMap["prompt"].(string); ok { prompt = val } else if val, ok := questionMap["text"].(string); ok { prompt = val } } if len(choices) == 0 { if val, ok := questionMap["choices"].([]interface{}); ok { for _, item := range val { choices = append(choices, fmt.Sprintf("%v", item)) } } } } if prompt == "" { prompt = "Agent asked a question." } return questionID, sessionID, prompt, choices } func extractPermissionFields(props interface{}) (string, string, string, string, string, string) { if props == nil { return "", "", "", "", "", "" } permissionID := getPropertyString(props, "ID", "Id", "PermissionID", "permissionID", "RequestID", "requestID") sessionID := getPropertyString(props, "SessionID", "sessionID") title := getPropertyString(props, "Title", "title") permType := getPropertyString(props, "Type", "type", "Permission", "permission") message := getPropertyString(props, "Message", "message", "Metadata.Message") patternVal := getPropertyValue(props, "Pattern") if patternVal == nil { patternVal = getPropertyValue(props, "Patterns") } pattern := "" switch v := patternVal.(type) { case string: pattern = v case []string: pattern = strings.Join(v, ", ") case []interface{}: parts := make([]string, 0, len(v)) for _, item := range v { parts = append(parts, fmt.Sprintf("%v", item)) } pattern = strings.Join(parts, ", ") } return permissionID, sessionID, title, permType, message, pattern } func eventSessionID(props interface{}) string { return getPropertyString( props, "SessionID", "sessionID", "Info.SessionID", "info.sessionID", "Part.SessionID", "part.sessionID", "Message.SessionID", "message.sessionID", "Question.SessionID", "question.sessionID", "Permission.SessionID", "permission.sessionID", ) } func extractEventSessionID(event opencode.EventListResponse) string { if sid := strings.TrimSpace(eventSessionID(event.Properties)); sid != "" { return sid } if rawProps := parseEventPropertiesFromRaw(event.JSON.RawJSON()); rawProps != nil { return strings.TrimSpace(eventSessionID(rawProps)) } return "" } var usageLimitResetAtPattern = regexp.MustCompile(`(?i)(?:resets[_-]?at|reset[_-]?at|x-codex-primary-reset-at)["']?\s*[:=]\s*["']?(\d{9,})`) var usageLimitResetInSecondsPattern = regexp.MustCompile(`(?i)(?:resets[_-]?in[_-]?seconds|reset[_-]?after[_-]?seconds|x-codex-primary-reset-after-seconds)["']?\s*[:=]\s*["']?(\d{1,10})`) var usageLimitWindowMinutesPattern = regexp.MustCompile(`(?i)(?:x-codex-primary-window-minutes|window[_-]?minutes)["']?\s*[:=]\s*["']?(\d{1,10})`) var usageLimitUsedPercentPattern = regexp.MustCompile(`(?i)(?:x-codex-primary-used-percent|used[_-]?percent)["']?\s*[:=]\s*["']?(\d{1,3})`) var simpleStatusMapPattern = regexp.MustCompile(`(?i)^map\[(?:type|status):([^\]]+)\]$`) func isUsageLimitErrorMessage(msg string) bool { lower := strings.ToLower(msg) if strings.Contains(lower, "usage_limit_reached") { return true } if strings.Contains(lower, "usage limit has been reached") { return true } if strings.Contains(lower, "too many requests") { return true } if strings.Contains(lower, "rate limit") || strings.Contains(lower, "quota") { return true } return false } func latestUsageLimitHint() (usageLimitHint, bool) { usageLimitHintState.mu.RLock() hint := usageLimitHintState.hint usageLimitHintState.mu.RUnlock() if hint.UpdatedAt.IsZero() { return usageLimitHint{}, false } // Avoid reusing stale quota metadata. if time.Since(hint.UpdatedAt) > 8*24*time.Hour { return usageLimitHint{}, false } hasAny := hint.HasResetAt || hint.HasResetInSeconds || hint.HasWindowMinutes || hint.HasUsedPercent if !hasAny { return usageLimitHint{}, false } return hint, true } func extractUsageLimitInt(raw string, pattern *regexp.Regexp) (int64, bool) { if raw == "" || pattern == nil { return 0, false } if matches := pattern.FindStringSubmatch(raw); len(matches) == 2 { if value, err := strconv.ParseInt(matches[1], 10, 64); err == nil && value >= 0 { return value, true } } return 0, false } func extractUsageLimitResetInSeconds(raw string) (int64, bool) { return extractUsageLimitInt(raw, usageLimitResetInSecondsPattern) } func extractUsageLimitWindowMinutes(raw string) (int64, bool) { return extractUsageLimitInt(raw, usageLimitWindowMinutesPattern) } func extractUsageLimitUsedPercent(raw string) (int64, bool) { return extractUsageLimitInt(raw, usageLimitUsedPercentPattern) } func recordUsageLimitHintFromText(raw string) { text := strings.TrimSpace(raw) if text == "" { return } if !isUsageLimitErrorMessage(text) && !usageLimitResetAtPattern.MatchString(text) && !usageLimitResetInSecondsPattern.MatchString(text) && !usageLimitWindowMinutesPattern.MatchString(text) && !usageLimitUsedPercentPattern.MatchString(text) { return } usageLimitHintState.mu.Lock() defer usageLimitHintState.mu.Unlock() hint := usageLimitHintState.hint updated := false if epoch, ok := extractUsageLimitInt(text, usageLimitResetAtPattern); ok && epoch > 0 { hint.ResetAt = time.Unix(epoch, 0) hint.HasResetAt = true updated = true } if seconds, ok := extractUsageLimitResetInSeconds(text); ok && seconds > 0 { hint.ResetInSeconds = seconds hint.HasResetInSeconds = true if !hint.HasResetAt { hint.ResetAt = time.Now().Add(time.Duration(seconds) * time.Second) hint.HasResetAt = true } updated = true } if windowMinutes, ok := extractUsageLimitWindowMinutes(text); ok && windowMinutes > 0 { hint.WindowMinutes = windowMinutes hint.HasWindowMinutes = true updated = true } if usedPercent, ok := extractUsageLimitUsedPercent(text); ok && usedPercent >= 0 { hint.UsedPercent = usedPercent hint.HasUsedPercent = true updated = true } if updated { hint.UpdatedAt = time.Now() usageLimitHintState.hint = hint } } func extractUsageLimitResetTime(raw string) (time.Time, bool) { if raw == "" { return time.Time{}, false } if epoch, ok := extractUsageLimitInt(raw, usageLimitResetAtPattern); ok && epoch > 0 { return time.Unix(epoch, 0), true } if seconds, ok := extractUsageLimitResetInSeconds(raw); ok && seconds > 0 { return time.Now().Add(time.Duration(seconds) * time.Second), true } return time.Time{}, false } func formatApproxDuration(d time.Duration) string { if d <= 0 { return "<1m" } totalMinutes := int64(d.Round(time.Minute) / time.Minute) if totalMinutes <= 0 { return "<1m" } days := totalMinutes / (24 * 60) totalMinutes %= 24 * 60 hours := totalMinutes / 60 minutes := totalMinutes % 60 parts := []string{} if days > 0 { parts = append(parts, fmt.Sprintf("%dd", days)) } if hours > 0 { parts = append(parts, fmt.Sprintf("%dh", hours)) } if minutes > 0 && len(parts) < 2 { parts = append(parts, fmt.Sprintf("%dm", minutes)) } if len(parts) == 0 { return "<1m" } return strings.Join(parts, " ") } func formatQuotaWindow(windowMinutes int64) string { if windowMinutes <= 0 { return "quota" } if windowMinutes%(24*60) == 0 { days := windowMinutes / (24 * 60) return fmt.Sprintf("%d-day", days) } if windowMinutes%60 == 0 { hours := windowMinutes / 60 return fmt.Sprintf("%d-hour", hours) } return fmt.Sprintf("%d-minute", windowMinutes) } func isTransientSessionStatus(value string) bool { lower := strings.ToLower(strings.TrimSpace(value)) switch lower { case "", "busy", "running", "working", "started", "pending", "processing", "in_progress", "in-progress": return true default: return false } } func isIgnorableSessionStatus(value string) bool { trimmed := strings.TrimSpace(value) if trimmed == "" { return true } if isTransientSessionStatus(trimmed) { return true } if matches := simpleStatusMapPattern.FindStringSubmatch(trimmed); len(matches) == 2 { return isTransientSessionStatus(matches[1]) } var statusMap map[string]interface{} if err := json.Unmarshal([]byte(trimmed), &statusMap); err == nil && len(statusMap) > 0 { // Ignore pure {"type":"busy"} / {"status":"running"} style payloads. if len(statusMap) <= 2 { nonTerminal := true seenStatusField := false for key, rawVal := range statusMap { lowerKey := strings.ToLower(strings.TrimSpace(key)) if lowerKey == "type" || lowerKey == "status" { seenStatusField = true if !isTransientSessionStatus(fmt.Sprintf("%v", rawVal)) { nonTerminal = false } } else { nonTerminal = false } } if seenStatusField && nonTerminal { return true } } } return false } func usageLimitContext(message, rawEvent string) string { msg := strings.TrimSpace(message) raw := strings.TrimSpace(rawEvent) if msg == "" { if isUsageLimitErrorMessage(raw) { return raw } return "" } if raw == "" { return msg } if !isUsageLimitErrorMessage(msg) && !isUsageLimitErrorMessage(raw) { return msg } if strings.Contains(raw, msg) { return raw } if strings.Contains(msg, raw) { return msg } return msg + "\n" + raw } func userFacingAgentErrorMessage(raw string) string { raw = strings.TrimSpace(raw) if raw == "" { return "Unknown error occurred" } recordUsageLimitHintFromText(raw) clean := sanitizeProviderError(errors.New(raw)) if clean == "" { clean = "Unknown error occurred" } if !isUsageLimitErrorMessage(raw) && !isUsageLimitErrorMessage(clean) { return clean } usedPercent, hasUsedPercent := extractUsageLimitUsedPercent(raw) windowMinutes, hasWindowMinutes := extractUsageLimitWindowMinutes(raw) resetAt, hasResetAt := extractUsageLimitResetTime(raw) resetInSeconds, hasResetInSeconds := extractUsageLimitResetInSeconds(raw) if hint, ok := latestUsageLimitHint(); ok { if !hasUsedPercent && hint.HasUsedPercent { usedPercent = hint.UsedPercent hasUsedPercent = true } if !hasWindowMinutes && hint.HasWindowMinutes { windowMinutes = hint.WindowMinutes hasWindowMinutes = true } if !hasResetAt && hint.HasResetAt { resetAt = hint.ResetAt hasResetAt = true } if !hasResetInSeconds && hint.HasResetInSeconds { resetInSeconds = hint.ResetInSeconds hasResetInSeconds = true } } msg := "Usage limit reached for the selected model on the current plan. Try another model, or retry after your quota resets." if hasUsedPercent { if hasWindowMinutes && windowMinutes > 0 { msg = fmt.Sprintf("%s Current usage: %d%% of your %s quota window.", msg, usedPercent, formatQuotaWindow(windowMinutes)) } else { msg = fmt.Sprintf("%s Current usage: %d%% of your quota window.", msg, usedPercent) } } if hasResetAt { relative := formatApproxDuration(time.Until(resetAt)) msg = fmt.Sprintf("%s Quota resets at %s (in about %s).", msg, resetAt.Local().Format("2006-01-02 15:04 MST"), relative) } else if hasResetInSeconds && resetInSeconds > 0 { msg = fmt.Sprintf("%s Retry in about %s.", msg, formatApproxDuration(time.Duration(resetInSeconds)*time.Second)) } return msg } func extractSessionErrorMessage(props interface{}) string { msg := getPropertyString( props, "Error.Data.Message", "error.data.message", "Error.Message", "error.message", "Message", "message", "Details", "details", "Status", "status", "Error", ) return strings.TrimSpace(msg) } func extractSessionStatusMessage(props interface{}) string { paths := []string{ "Details.Message", "details.message", "Details.Description", "details.description", "Details.Detail", "details.detail", "Status.Message", "status.message", "Status.Description", "status.description", "Message.Text", "message.text", "Details", "details", "Status", "status", "Message", "message", "Error.Data.Message", "error.data.message", "Error.Message", "error.message", "Error", "error", } for _, path := range paths { val := getPropertyValue(props, path) if val == nil { continue } switch v := val.(type) { case string: trimmed := strings.TrimSpace(v) if trimmed == "" || isIgnorableSessionStatus(trimmed) { continue } return trimmed case map[string]interface{}: rawJSON, err := json.Marshal(v) if err != nil { continue } trimmed := strings.TrimSpace(string(rawJSON)) if trimmed == "" || isIgnorableSessionStatus(trimmed) { continue } return trimmed default: trimmed := strings.TrimSpace(fmt.Sprintf("%v", val)) if trimmed == "" || trimmed == "" || isIgnorableSessionStatus(trimmed) { continue } return trimmed } } return "" } func (d *OpenCodeDriver) abortSessionBestEffort(sessionID, projectDir, reason string) { sid := strings.TrimSpace(sessionID) if sid == "" { return } abortCtx, cancel := context.WithTimeout(context.Background(), 4*time.Second) defer cancel() params := opencode.SessionAbortParams{} if strings.TrimSpace(projectDir) != "" { params.Directory = opencode.F(projectDir) } if _, err := d.client.Session.Abort(abortCtx, sid, params); err != nil { log.Printf("[OPENCODE] Failed to abort session %s (%s): %v", sid, reason, err) return } log.Printf("[OPENCODE] Aborted session %s (%s)", sid, reason) } // streamEventsToSSE streams OpenCode events to the HTTP response as SSE func (d *OpenCodeDriver) streamEventsToSSE(ctx context.Context, w http.ResponseWriter, flusher http.Flusher, projectDir string) { log.Printf("[OPENCODE] Starting SSE event streaming for directory: %s", projectDir) stream := d.client.Event.ListStreaming(ctx, opencode.EventListParams{ Directory: opencode.F(projectDir), }) lastToolName := "" lastAssistantMessageID := "" totalTextSent := "" partAccumulated := "" lastSessionStatus := "" partSnapshots := make(map[string]string) toolProgressByID := make(map[string]string) for stream.Next() { event := stream.Current() eventSID := extractEventSessionID(event) rawProps := parseEventPropertiesFromRaw(event.JSON.RawJSON()) // Stream relevant events to client switch event.Type { case "message.updated": role := extractMessageRole(event.Properties) if role == "" && rawProps != nil { role = extractMessageRole(rawProps) } // Skip non-assistant updates so we don't replay the original user prompt. if role != "" && role != "assistant" { break } messageID := getPropertyString(event.Properties, "Info.ID", "Info.Id", "ID", "id") if messageID != "" && messageID != lastAssistantMessageID { lastAssistantMessageID = messageID totalTextSent = "" partAccumulated = "" partSnapshots = make(map[string]string) } content := extractAssistantMessageText(event.Properties) if content == "" { if rawProps != nil { content = extractAssistantMessageText(rawProps) } } if content != "" { if role == "" && looksLikeDriverPromptEcho(content) { break } if len(content) > len(totalTextSent) && strings.HasPrefix(content, totalTextSent) { delta := content[len(totalTextSent):] sendSSEData(w, flusher, map[string]interface{}{"outputChunk": delta}) totalTextSent = content } else if len(content) > len(totalTextSent) { // Snapshot diverged (edit/rewrite); send full content as discrete output. sendSSEData(w, flusher, map[string]interface{}{"output": content}) totalTextSent = content } // else: stale snapshot (len <= totalTextSent), skip } case "message.part.updated", "message.part.delta": progress, hasProgress := extractToolPartProgress(event.Properties) if !hasProgress && rawProps != nil { progress, hasProgress = extractToolPartProgress(rawProps) } if hasProgress { if lastStatus, exists := toolProgressByID[progress.key]; !exists || lastStatus != progress.status { toolProgressByID[progress.key] = progress.status if line := formatToolPartProgressLine(progress); line != "" { sendSSEData(w, flusher, map[string]interface{}{"output": line}) } } } // Extract incremental thought/output text from part events (common in OpenAI/ChatGPT) chunk, _, partMessageID := extractPartChunk(event.Properties, partSnapshots) if rawProps != nil { if chunk == "" { rawChunk, _, rawPartMessageID := extractPartChunk(rawProps, partSnapshots) chunk = rawChunk if partMessageID == "" { partMessageID = rawPartMessageID } } else if partMessageID == "" { partMessageID = extractPartMessageID(rawProps) } } if chunk != "" { if looksLikeDriverPromptEcho(chunk) { break } if partMessageID != "" && partMessageID != lastAssistantMessageID { lastAssistantMessageID = partMessageID totalTextSent = "" partAccumulated = "" partSnapshots = make(map[string]string) } partAccumulated += chunk if len(partAccumulated) > len(totalTextSent) && strings.HasPrefix(partAccumulated, totalTextSent) { delta := partAccumulated[len(totalTextSent):] sendSSEData(w, flusher, map[string]interface{}{"outputChunk": delta}) totalTextSent = partAccumulated } } case "session.status": details := extractSessionStatusMessage(event.Properties) if details == "" { if rawProps != nil { details = extractSessionStatusMessage(rawProps) } } rawDetails := strings.TrimSpace(string(event.JSON.RawJSON())) details = usageLimitContext(details, rawDetails) if details != "" { if isUsageLimitErrorMessage(details) { friendly := userFacingAgentErrorMessage(details) log.Printf("[OPENCODE] Session status indicates usage limit: %s", friendly) d.abortSessionBestEffort(eventSID, projectDir, "usage limit in streamEventsToSSE session.status") sendSSEData(w, flusher, map[string]interface{}{ "output": fmt.Sprintf("❌ Error: %s", friendly), "done": true, "success": false, "error": friendly, }) break } normalizedStatus := strings.TrimSpace(details) if normalizedStatus != "" && normalizedStatus != lastSessionStatus { lastSessionStatus = normalizedStatus sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("ℹ️ Status: %s", normalizedStatus)}) } } case "session.error": errorMsg := extractSessionErrorMessage(event.Properties) if errorMsg == "" { if rawProps := parseEventPropertiesFromRaw(event.JSON.RawJSON()); rawProps != nil { errorMsg = extractSessionErrorMessage(rawProps) } } rawError := strings.TrimSpace(string(event.JSON.RawJSON())) errorMsg = usageLimitContext(errorMsg, rawError) if errorMsg == "" { errorMsg = "Unknown error occurred" } friendly := userFacingAgentErrorMessage(errorMsg) log.Printf("[OPENCODE] Session error: %s", friendly) if isUsageLimitErrorMessage(errorMsg) || isUsageLimitErrorMessage(friendly) { d.abortSessionBestEffort(eventSID, projectDir, "usage limit in streamEventsToSSE session.error") } sendSSEData(w, flusher, map[string]interface{}{ "output": fmt.Sprintf("❌ Error: %s", friendly), "done": true, "success": false, "error": friendly, }) case "question.asked": questionID, sessionID, prompt, choices := extractQuestionFields(event.Properties) items := extractQuestionItems(event.Properties) if questionID == "" || sessionID == "" || prompt == "Agent asked a question." || len(items) == 0 { if rawProps := parseEventPropertiesFromRaw(event.JSON.RawJSON()); rawProps != nil { questionID, sessionID, prompt, choices = extractQuestionFields(rawProps) items = extractQuestionItems(rawProps) } } if prompt == "Agent asked a question." && len(items) > 0 { if val, ok := items[0]["prompt"].(string); ok && val != "" { prompt = val } else if val, ok := items[0]["question"].(string); ok && val != "" { prompt = val } } sendSSEData(w, flusher, map[string]interface{}{ "question": map[string]interface{}{ "id": questionID, "sessionID": sessionID, "prompt": prompt, "choices": choices, "questions": items, }, }) sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("❓ Question: %s", prompt)}) case "permission.updated", "permission.asked": permissionID, sessionID, title, permType, message, pattern := extractPermissionFields(event.Properties) if permissionID == "" || sessionID == "" { if rawProps := parseEventPropertiesFromRaw(event.JSON.RawJSON()); rawProps != nil { permissionID, sessionID, title, permType, message, pattern = extractPermissionFields(rawProps) } } sendSSEData(w, flusher, map[string]interface{}{ "permission": map[string]interface{}{ "id": permissionID, "sessionID": sessionID, "title": title, "type": permType, "pattern": pattern, "message": message, }, }) sendSSEData(w, flusher, map[string]interface{}{"output": "🔐 Permission requested by agent..."}) case "tool.start": toolName := getPropertyString(event.Properties, "Name") if toolName != "" { lastToolName = toolName var argsStr string input := getPropertyMap(event.Properties, "Input") if input != nil { // Handle common tool inputs if path, ok := input["Path"].(string); ok { argsStr = fmt.Sprintf(" (%s)", filepath.Base(path)) } else if path, ok := input["path"].(string); ok { argsStr = fmt.Sprintf(" (%s)", filepath.Base(path)) } else if cmd, ok := input["Command"].(string); ok { if len(cmd) > 30 { cmd = cmd[:27] + "..." } argsStr = fmt.Sprintf(" (%s)", cmd) } else if cmd, ok := input["command"].(string); ok { if len(cmd) > 30 { cmd = cmd[:27] + "..." } argsStr = fmt.Sprintf(" (%s)", cmd) } } sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("🔧 Running: %s%s", toolName, argsStr)}) } case "tool.end": toolName := getPropertyString(event.Properties, "Name") if toolName != "" { if lastToolName == toolName { lastToolName = "" } sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("✅ Completed: %s", toolName)}) } case "file.updated", "file.edited": filePath := getPropertyString(event.Properties, "Path", "path", "File", "file") if filePath != "" { sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("📝 Updated: %s", filePath)}) } case "session.idle", "server.connected", "session.updated", "session.diff", "lsp.client.diagnostics", "server.heartbeat", "lsp.updated", "file.watcher.updated": // Silence these frequent/internal events default: log.Printf("[OPENCODE] Unhandled SSE event: %s", event.Type) } } if err := stream.Err(); err != nil { log.Printf("[OPENCODE] SSE stream error: %v", err) } else { log.Printf("[OPENCODE] SSE streaming ended successfully") } } // streamEventsAndWaitForCompletion streams events and waits for the session to complete. // Returns: // - completed: true if session completed successfully (idle), false otherwise // - changedFiles: paths detected from file.updated/file.edited events // - hadActivity: true if assistant/tool/question/permission/todo activity was observed // - errorMessage: normalized session error when available func (d *OpenCodeDriver) streamEventsAndWaitForCompletion( ctx context.Context, w http.ResponseWriter, flusher http.Flusher, projectDir, sessionID string, promptDispatched <-chan struct{}, ) (bool, []string, bool, string) { log.Printf("[OPENCODE] Starting SSE event streaming and waiting for completion (session: %s)", sessionID) stream := d.client.Event.ListStreaming(ctx, opencode.EventListParams{ Directory: opencode.F(projectDir), }) sessionIdle := false hadError := false sawSessionActivity := false promptWasDispatched := false sessionEventCount := 0 lastEventTime := time.Now() lastToolName := "" lastAssistantMessageID := "" totalTextSent := "" partAccumulated := "" lastSessionStatus := "" partSnapshots := make(map[string]string) toolProgressByID := make(map[string]string) changedFilesSet := make(map[string]struct{}) lastSessionError := "" abortRequested := false requestUsageLimitAbort := func(source string) { if abortRequested { return } abortRequested = true go d.abortSessionBestEffort(sessionID, projectDir, source) } heartbeatTicker := time.NewTicker(10 * time.Second) defer heartbeatTicker.Stop() go func() { for { select { case <-heartbeatTicker.C: if !sessionIdle { elapsed := time.Since(lastEventTime) if elapsed.Seconds() > 10 { statusMsg := fmt.Sprintf("⏳ Agent still working... (%.0fs since last update)", elapsed.Seconds()) if lastToolName != "" { statusMsg += fmt.Sprintf(" [Current task: %s]", lastToolName) } sendSSEData(w, flusher, map[string]interface{}{"output": statusMsg}) } } case <-ctx.Done(): return } } }() for stream.Next() { event := stream.Current() if !promptWasDispatched && promptDispatched != nil { select { case <-promptDispatched: promptWasDispatched = true default: } } eventSID := extractEventSessionID(event) if eventSID != "" && eventSID != sessionID { // Directory-wide stream includes events from other sessions; ignore them. continue } rawProps := parseEventPropertiesFromRaw(event.JSON.RawJSON()) sessionEventCount++ lastEventTime = time.Now() // Stream relevant events to client log.Printf("[OPENCODE-STREAM-DEBUG] event.Type=%q totalSent=%d partAcc=%d lastMsgID=%q", event.Type, len(totalTextSent), len(partAccumulated), lastAssistantMessageID) switch event.Type { case "message.updated": role := extractMessageRole(event.Properties) if role == "" && rawProps != nil { role = extractMessageRole(rawProps) } if role != "" && role != "assistant" { log.Printf("[OPENCODE-STREAM-DEBUG] message.updated SKIPPED: role=%q (not assistant)", role) break } messageID := getPropertyString(event.Properties, "Info.ID", "Info.Id", "ID", "id") if messageID == "" && rawProps != nil { messageID = getPropertyString(rawProps, "Info.ID", "Info.Id", "ID", "id") } log.Printf("[OPENCODE-STREAM-DEBUG] message.updated: role=%q messageID=%q lastMsgID=%q totalSent=%d", role, messageID, lastAssistantMessageID, len(totalTextSent)) if messageID != "" && messageID != lastAssistantMessageID { log.Printf("[OPENCODE-STREAM-DEBUG] message.updated: NEW message ID detected") lastAssistantMessageID = messageID totalTextSent = "" partAccumulated = "" partSnapshots = make(map[string]string) } content := extractAssistantMessageText(event.Properties) if content == "" { if rawProps != nil { content = extractAssistantMessageText(rawProps) } } contentPreview := content if len(contentPreview) > 120 { contentPreview = contentPreview[:120] + "..." } log.Printf("[OPENCODE-STREAM-DEBUG] message.updated: contentLen=%d preview=%q", len(content), contentPreview) if content != "" { if role == "" && looksLikeDriverPromptEcho(content) { log.Printf("[OPENCODE-STREAM-DEBUG] message.updated SUPPRESSED: looks like driver prompt echo") break } sawSessionActivity = true if len(content) > len(totalTextSent) && strings.HasPrefix(content, totalTextSent) { delta := content[len(totalTextSent):] log.Printf("[OPENCODE-STREAM-DEBUG] message.updated FORWARDED delta (%d chars)", len(delta)) sendSSEData(w, flusher, map[string]interface{}{"outputChunk": delta}) totalTextSent = content } else if len(content) > len(totalTextSent) { log.Printf("[OPENCODE-STREAM-DEBUG] message.updated FORWARDED rewrite (%d chars)", len(content)) sendSSEData(w, flusher, map[string]interface{}{"output": content}) totalTextSent = content } else { log.Printf("[OPENCODE-STREAM-DEBUG] message.updated SKIPPED: stale (contentLen=%d <= totalSentLen=%d)", len(content), len(totalTextSent)) } } case "message.part.updated", "message.part.delta": progress, hasProgress := extractToolPartProgress(event.Properties) if !hasProgress && rawProps != nil { progress, hasProgress = extractToolPartProgress(rawProps) } if hasProgress { if lastStatus, exists := toolProgressByID[progress.key]; !exists || lastStatus != progress.status { toolProgressByID[progress.key] = progress.status if line := formatToolPartProgressLine(progress); line != "" { sawSessionActivity = true sendSSEData(w, flusher, map[string]interface{}{"output": line}) } } } // Extract incremental thought/output text from part events (common in OpenAI/ChatGPT) chunk, _, partMessageID := extractPartChunk(event.Properties, partSnapshots) if rawProps != nil { if chunk == "" { rawChunk, _, rawPartMessageID := extractPartChunk(rawProps, partSnapshots) chunk = rawChunk if partMessageID == "" { partMessageID = rawPartMessageID } } else if partMessageID == "" { partMessageID = extractPartMessageID(rawProps) } } chunkPreview := chunk if len(chunkPreview) > 120 { chunkPreview = chunkPreview[:120] + "..." } log.Printf("[OPENCODE-STREAM-DEBUG] part event: type=%q hasProgress=%t chunkLen=%d partMsgID=%q preview=%q", event.Type, hasProgress, len(chunk), partMessageID, chunkPreview) if chunk != "" { if looksLikeDriverPromptEcho(chunk) { log.Printf("[OPENCODE-STREAM-DEBUG] part chunk SUPPRESSED: looks like driver prompt echo (%d chars)", len(chunk)) break } if partMessageID != "" && partMessageID != lastAssistantMessageID { lastAssistantMessageID = partMessageID totalTextSent = "" partAccumulated = "" partSnapshots = make(map[string]string) } partAccumulated += chunk if len(partAccumulated) > len(totalTextSent) && strings.HasPrefix(partAccumulated, totalTextSent) { delta := partAccumulated[len(totalTextSent):] log.Printf("[OPENCODE-STREAM-DEBUG] part chunk FORWARDED delta (%d chars, totalSent now %d)", len(delta), len(partAccumulated)) sawSessionActivity = true sendSSEData(w, flusher, map[string]interface{}{"outputChunk": delta}) totalTextSent = partAccumulated } else { log.Printf("[OPENCODE-STREAM-DEBUG] part chunk SKIPPED: already covered (partAcc=%d, totalSent=%d)", len(partAccumulated), len(totalTextSent)) } } case "session.status": details := extractSessionStatusMessage(event.Properties) if details == "" { if rawProps != nil { details = extractSessionStatusMessage(rawProps) } } rawDetails := strings.TrimSpace(string(event.JSON.RawJSON())) details = usageLimitContext(details, rawDetails) if details != "" { friendlyStatus := userFacingAgentErrorMessage(details) if isUsageLimitErrorMessage(details) || isUsageLimitErrorMessage(friendlyStatus) { sawSessionActivity = true hadError = true lastSessionError = details requestUsageLimitAbort("usage limit in streamEventsAndWaitForCompletion session.status") sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("❌ Error: %s", friendlyStatus)}) // End stream early; caller will emit done=false with this error. sessionIdle = true } else { normalizedStatus := strings.TrimSpace(details) if normalizedStatus != "" && normalizedStatus != lastSessionStatus { lastSessionStatus = normalizedStatus sawSessionActivity = true sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("ℹ️ Status: %s", normalizedStatus)}) } } } case "session.error": sawSessionActivity = true hadError = true errorMsg := extractSessionErrorMessage(event.Properties) if errorMsg == "" { if rawProps != nil { errorMsg = extractSessionErrorMessage(rawProps) } } rawError := strings.TrimSpace(string(event.JSON.RawJSON())) errorMsg = usageLimitContext(errorMsg, rawError) if errorMsg == "" { errorMsg = "Unknown error occurred" } friendly := userFacingAgentErrorMessage(errorMsg) if isUsageLimitErrorMessage(errorMsg) || isUsageLimitErrorMessage(friendly) { requestUsageLimitAbort("usage limit in streamEventsAndWaitForCompletion session.error") } lastSessionError = errorMsg log.Printf("[OPENCODE] Session error: %s", friendly) sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("❌ Error: %s", friendly)}) case "question.asked": sawSessionActivity = true questionID, questionSessionID, prompt, choices := extractQuestionFields(event.Properties) items := extractQuestionItems(event.Properties) if questionID == "" || questionSessionID == "" || prompt == "Agent asked a question." || len(items) == 0 { if rawProps != nil { questionID, questionSessionID, prompt, choices = extractQuestionFields(rawProps) items = extractQuestionItems(rawProps) } } if questionSessionID == "" { questionSessionID = eventSID } if questionSessionID == "" { questionSessionID = sessionID } if questionSessionID != sessionID { continue } if prompt == "Agent asked a question." && len(items) > 0 { if val, ok := items[0]["prompt"].(string); ok && val != "" { prompt = val } else if val, ok := items[0]["question"].(string); ok && val != "" { prompt = val } } sendSSEData(w, flusher, map[string]interface{}{ "question": map[string]interface{}{ "id": questionID, "sessionID": questionSessionID, "prompt": prompt, "choices": choices, "questions": items, }, }) sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("❓ Question: %s", prompt)}) case "permission.updated", "permission.asked": sawSessionActivity = true permissionID, permissionSessionID, title, permType, message, pattern := extractPermissionFields(event.Properties) if permissionID == "" || permissionSessionID == "" { if rawProps != nil { permissionID, permissionSessionID, title, permType, message, pattern = extractPermissionFields(rawProps) } } if permissionSessionID == "" { permissionSessionID = eventSID } if permissionSessionID == "" { permissionSessionID = sessionID } if permissionSessionID != sessionID { continue } sendSSEData(w, flusher, map[string]interface{}{ "permission": map[string]interface{}{ "id": permissionID, "sessionID": permissionSessionID, "title": title, "type": permType, "pattern": pattern, "message": message, }, }) sendSSEData(w, flusher, map[string]interface{}{"output": "🔐 Permission requested by agent..."}) case "session.idle": if !sawSessionActivity && !promptWasDispatched { log.Printf("[OPENCODE] Ignoring pre-work session.idle for session %s", sessionID) continue } sessionIdle = true case "tool.start": toolName := getPropertyString(event.Properties, "Name") if toolName != "" { sawSessionActivity = true lastToolName = toolName var argsStr string input := getPropertyMap(event.Properties, "Input") if input != nil { if path, ok := input["Path"].(string); ok { argsStr = fmt.Sprintf(" (%s)", filepath.Base(path)) } else if path, ok := input["path"].(string); ok { argsStr = fmt.Sprintf(" (%s)", filepath.Base(path)) } else if cmd, ok := input["Command"].(string); ok { if len(cmd) > 30 { cmd = cmd[:27] + "..." } argsStr = fmt.Sprintf(" (%s)", cmd) } else if cmd, ok := input["command"].(string); ok { if len(cmd) > 30 { cmd = cmd[:27] + "..." } argsStr = fmt.Sprintf(" (%s)", cmd) } } sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("🔧 Running: %s%s", toolName, argsStr)}) } case "tool.end": toolName := getPropertyString(event.Properties, "Name") if toolName != "" { sawSessionActivity = true if lastToolName == toolName { lastToolName = "" } sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("✅ Completed: %s", toolName)}) } case "file.updated", "file.edited": filePath := getPropertyString(event.Properties, "Path", "path", "File", "file") if filePath != "" { sawSessionActivity = true normalizedPath := normalizeChangedFilePath(projectDir, filePath) if normalizedPath == "" { normalizedPath = filepath.ToSlash(filePath) } changedFilesSet[normalizedPath] = struct{}{} sendSSEData(w, flusher, map[string]interface{}{"output": fmt.Sprintf("📝 Updated: %s", normalizedPath)}) } case "todo.updated": val := reflect.ValueOf(event.Properties) if val.Kind() == reflect.Struct { todosField := val.FieldByName("Todos") if todosField.IsValid() && todosField.Kind() == reflect.Slice { sawSessionActivity = true completedCount := 0 totalCount := todosField.Len() var currentTask string for i := 0; i < todosField.Len(); i++ { todoItem := todosField.Index(i) status := fmt.Sprintf("%v", todoItem.FieldByName("Status").Interface()) content := fmt.Sprintf("%v", todoItem.FieldByName("Content").Interface()) if status == "completed" { completedCount++ } else if status == "in_progress" { currentTask = content } } if totalCount > 0 { progressMsg := fmt.Sprintf("📊 Progress: %d/%d tasks completed", completedCount, totalCount) if currentTask != "" { progressMsg += fmt.Sprintf(" - Working on: %s", currentTask) } sendSSEData(w, flusher, map[string]interface{}{"output": progressMsg}) } } } case "session.diff", "lsp.client.diagnostics", "server.connected", "session.updated", "server.heartbeat", "lsp.updated", "file.watcher.updated": // Skip default: log.Printf("[OPENCODE] Unhandled SSE event: %s", event.Type) } if sessionIdle { break } } if err := stream.Err(); err != nil { if lastSessionError == "" { lastSessionError = userFacingAgentErrorMessage(err.Error()) } if errors.Is(err, context.Canceled) || errors.Is(ctx.Err(), context.Canceled) { log.Printf( "[OPENCODE] SSE stream canceled for session %s (client request canceled) events=%d promptDispatched=%t sawActivity=%t idle=%t", sessionID, sessionEventCount, promptWasDispatched, sawSessionActivity, sessionIdle, ) } else { log.Printf("[OPENCODE] SSE stream error: %v", err) } return false, nil, sawSessionActivity, lastSessionError } changedFiles := make([]string, 0, len(changedFilesSet)) for path := range changedFilesSet { changedFiles = append(changedFiles, path) } sort.Strings(changedFiles) log.Printf( "[OPENCODE] Session stream summary session=%s completed=%t hadError=%t events=%d activity=%t changedFiles=%d", sessionID, !hadError && sessionIdle, hadError, sessionEventCount, sawSessionActivity, len(changedFiles), ) return !hadError && sessionIdle, changedFiles, sawSessionActivity, lastSessionError } func normalizeChangedFilePath(projectDir, filePath string) string { trimmed := strings.TrimSpace(filePath) if trimmed == "" { return "" } if filepath.IsAbs(trimmed) { if rel, err := filepath.Rel(projectDir, trimmed); err == nil { return filepath.ToSlash(filepath.Clean(rel)) } } return filepath.ToSlash(filepath.Clean(trimmed)) } type projectFileSnapshotEntry struct { Size int64 ModTimeUnixNano int64 } func captureProjectFileSnapshot(projectDir string) (map[string]projectFileSnapshotEntry, error) { snapshot := make(map[string]projectFileSnapshotEntry) err := filepath.Walk(projectDir, func(path string, info os.FileInfo, walkErr error) error { if walkErr != nil { return walkErr } if info.IsDir() { if shouldSkipSnapshotDirectory(info.Name()) { return filepath.SkipDir } return nil } relPath, err := filepath.Rel(projectDir, path) if err != nil { return nil } cleanRel := filepath.ToSlash(filepath.Clean(relPath)) if cleanRel == "" || cleanRel == "." { return nil } snapshot[cleanRel] = projectFileSnapshotEntry{ Size: info.Size(), ModTimeUnixNano: info.ModTime().UnixNano(), } return nil }) if err != nil { return nil, err } return snapshot, nil } func detectChangedFilesFromSnapshot(projectDir string, before map[string]projectFileSnapshotEntry) ([]string, error) { after, err := captureProjectFileSnapshot(projectDir) if err != nil { return nil, err } changedSet := make(map[string]struct{}) for path, afterEntry := range after { beforeEntry, exists := before[path] if !exists || beforeEntry.Size != afterEntry.Size || beforeEntry.ModTimeUnixNano != afterEntry.ModTimeUnixNano { changedSet[path] = struct{}{} } } for path := range before { if _, exists := after[path]; !exists { changedSet[path] = struct{}{} } } changedFiles := make([]string, 0, len(changedSet)) for path := range changedSet { changedFiles = append(changedFiles, path) } sort.Strings(changedFiles) return changedFiles, nil } func shouldSkipSnapshotDirectory(name string) bool { switch name { case ".git", "history", "current_instructions", "node_modules", ".gradle", ".next", "build", "dist", ".idea", ".vscode": return true default: return false } } func mergeChangedFiles(existing []string, incoming []string) []string { mergedSet := make(map[string]struct{}, len(existing)+len(incoming)) for _, path := range existing { clean := filepath.ToSlash(filepath.Clean(path)) if clean == "" || clean == "." { continue } mergedSet[clean] = struct{}{} } for _, path := range incoming { clean := filepath.ToSlash(filepath.Clean(path)) if clean == "" || clean == "." { continue } mergedSet[clean] = struct{}{} } merged := make([]string, 0, len(mergedSet)) for path := range mergedSet { merged = append(merged, path) } sort.Strings(merged) return merged } func detectPrototypeChanged(changedFiles []string) bool { for _, path := range changedFiles { clean := filepath.ToSlash(filepath.Clean(path)) if clean == "prototype/index.html" || strings.HasPrefix(clean, "prototype/assets/") { return true } } return false } func prototypeContainsMediaPlaceholders(projectPath string) bool { indexPath := filepath.Join(projectPath, "prototype", "index.html") content, err := os.ReadFile(indexPath) if err != nil { return false } html := string(content) return strings.Contains(html, "glowbyimage:") || strings.Contains(html, "glowbyvideo:") || strings.Contains(html, "glowbyaudio:") } // sendSSEData sends a JSON object as SSE data. // Recovers from panics caused by writing to a closed connection. func sendSSEData(w http.ResponseWriter, flusher http.Flusher, data map[string]interface{}) { defer func() { if r := recover(); r != nil { log.Printf("[OPENCODE] sendSSEData: recovered from write panic (client disconnected): %v", r) } }() jsonData, err := json.Marshal(data) if err != nil { return } fmt.Fprintf(w, "data: %s\n\n", string(jsonData)) flusher.Flush() } func (d *OpenCodeDriver) resolveQuestionEndpoint(_ context.Context) string { d.mu.Lock() defer d.mu.Unlock() if d.questionReplyPath == "" { d.questionReplyPath = "/question/{requestID}/reply" } return d.questionReplyPath } func (d *OpenCodeDriver) hasRecentQuestionReply(questionID string) bool { if questionID == "" { return false } d.mu.Lock() defer d.mu.Unlock() // Keep map bounded in long-running sessions. cutoff := time.Now().Add(-10 * time.Minute) for id, at := range d.repliedQuestions { if at.Before(cutoff) { delete(d.repliedQuestions, id) } } _, exists := d.repliedQuestions[questionID] return exists } func (d *OpenCodeDriver) beginQuestionReply(questionID string) bool { if questionID == "" { return true } d.mu.Lock() defer d.mu.Unlock() cutoff := time.Now().Add(-10 * time.Minute) for id, at := range d.repliedQuestions { if at.Before(cutoff) { delete(d.repliedQuestions, id) } } if _, exists := d.repliedQuestions[questionID]; exists { return false } // Mark as in-flight immediately so concurrent duplicate submissions are ignored. d.repliedQuestions[questionID] = time.Now() return true } func (d *OpenCodeDriver) markQuestionReplied(questionID string) { if questionID == "" { return } d.mu.Lock() d.repliedQuestions[questionID] = time.Now() d.mu.Unlock() } func (d *OpenCodeDriver) clearQuestionReply(questionID string) { if questionID == "" { return } d.mu.Lock() delete(d.repliedQuestions, questionID) d.mu.Unlock() } func (d *OpenCodeDriver) respondToQuestion(ctx context.Context, sessionID, questionID, answer, projectDir string, answers [][]string, answersByID map[string][]string) error { if d.hasRecentQuestionReply(questionID) { log.Printf("[OPENCODE] Skipping duplicate reply for question %s", questionID) return nil } if !d.beginQuestionReply(questionID) { log.Printf("[OPENCODE] Skipping in-flight duplicate reply for question %s", questionID) return nil } success := false defer func() { // If we fail, clear so a legitimate retry can be attempted. if !success { d.clearQuestionReply(questionID) } }() endpoint := "" if questionID != "" { endpoint = d.resolveQuestionEndpoint(ctx) } if endpoint != "" { path := endpoint path = strings.ReplaceAll(path, "{questionID}", questionID) path = strings.ReplaceAll(path, "{id}", questionID) path = strings.ReplaceAll(path, "{requestID}", questionID) path = strings.ReplaceAll(path, ":questionID", questionID) path = strings.ReplaceAll(path, ":id", questionID) path = strings.ReplaceAll(path, ":requestID", questionID) if strings.Contains(path, "{") { path = strings.TrimRight(path, "/") + "/" + questionID } url := fmt.Sprintf("%s%s", d.serverURL, path) if projectDir != "" { if parsedURL, err := neturl.Parse(url); err == nil { query := parsedURL.Query() query.Set("directory", projectDir) parsedURL.RawQuery = query.Encode() url = parsedURL.String() } } payloads := buildQuestionReplyPayloads(sessionID, questionID, answer, answers, answersByID) if len(payloads) == 0 { return fmt.Errorf("question reply payload is empty") } payload := payloads[0] body, _ := json.Marshal(payload) req, err := http.NewRequestWithContext(ctx, "POST", url, bytes.NewBuffer(body)) if err != nil { return err } req.Header.Set("Content-Type", "application/json") applyOpenCodeServerAuthorization(req) resp, err := http.DefaultClient.Do(req) if err != nil { return err } defer resp.Body.Close() respBlob, _ := io.ReadAll(io.LimitReader(resp.Body, 1024)) respBody := strings.TrimSpace(string(respBlob)) if resp.StatusCode >= 200 && resp.StatusCode < 300 { d.markQuestionReplied(questionID) success = true return nil } log.Printf("[OPENCODE] Question reply payload keys: %v", mapKeys(payload)) if respBody != "" { log.Printf("[OPENCODE] Question reply returned status %d for %s: %s", resp.StatusCode, path, respBody) } else { log.Printf("[OPENCODE] Question reply returned status %d for %s", resp.StatusCode, path) } return fmt.Errorf("question reply rejected (status %d)", resp.StatusCode) } // Legacy fallback for cases where questionID isn't available. params := opencode.SessionPromptParams{ Parts: opencode.F([]opencode.SessionPromptParamsPartUnion{ opencode.TextPartInputParam{ Type: opencode.F(opencode.TextPartInputTypeText), Text: opencode.F(answer), }, }), } if projectDir != "" { params.Directory = opencode.F(projectDir) } _, err := d.sendSessionPrompt(ctx, sessionID, params) if err == nil { d.markQuestionReplied(questionID) success = true return nil } return err } func buildQuestionReplyPayloads(sessionID, questionID, answer string, answers [][]string, answersByID map[string][]string) []map[string]interface{} { normalizedAnswers := answers if len(normalizedAnswers) == 0 && len(answersByID) > 0 { if questionID != "" { if selected, ok := answersByID[questionID]; ok { normalizedAnswers = append(normalizedAnswers, selected) } } if len(normalizedAnswers) == 0 { keys := make([]string, 0, len(answersByID)) for key := range answersByID { keys = append(keys, key) } sort.Strings(keys) for _, key := range keys { normalizedAnswers = append(normalizedAnswers, answersByID[key]) } } } if len(normalizedAnswers) == 0 && answer != "" { normalizedAnswers = [][]string{{answer}} } // OpenCode expects: { "answers": [["label-1"], ["label-2","label-3"]] } // (array of answer arrays, in order of asked questions). payload := map[string]interface{}{"answers": normalizedAnswers} if sessionID != "" { payload["sessionID"] = sessionID payload["sessionId"] = sessionID } if questionID != "" { payload["requestID"] = questionID payload["questionID"] = questionID payload["id"] = questionID } return []map[string]interface{}{payload} } func copyStringMap(src map[string]interface{}) map[string]interface{} { dst := make(map[string]interface{}, len(src)) for key, value := range src { dst[key] = value } return dst } func mapKeys(src map[string]interface{}) []string { keys := make([]string, 0, len(src)) for key := range src { keys = append(keys, key) } sort.Strings(keys) return keys } func (d *OpenCodeDriver) resolvePermissionEndpoint(ctx context.Context) string { d.mu.Lock() defer d.mu.Unlock() if d.permissionReplyPath == "" { d.permissionReplyPath = "/permission/{requestID}/reply" } return d.permissionReplyPath } func (d *OpenCodeDriver) respondToPermission(ctx context.Context, sessionID, permissionID, response, projectDir string) error { endpoint := d.resolvePermissionEndpoint(ctx) if endpoint != "" { path := endpoint path = strings.ReplaceAll(path, "{requestID}", permissionID) path = strings.ReplaceAll(path, "{permissionID}", permissionID) path = strings.ReplaceAll(path, ":requestID", permissionID) path = strings.ReplaceAll(path, ":permissionID", permissionID) if strings.Contains(path, "{") { // Fallback to append if token replacement failed path = strings.TrimRight(path, "/") + "/" + permissionID } url := fmt.Sprintf("%s%s", d.serverURL, path) if projectDir != "" { if parsedURL, err := neturl.Parse(url); err == nil { query := parsedURL.Query() query.Set("directory", projectDir) parsedURL.RawQuery = query.Encode() url = parsedURL.String() } } payload := map[string]string{ "reply": response, "response": response, } body, _ := json.Marshal(payload) req, err := http.NewRequestWithContext(ctx, "POST", url, bytes.NewBuffer(body)) if err == nil { req.Header.Set("Content-Type", "application/json") applyOpenCodeServerAuthorization(req) resp, err := http.DefaultClient.Do(req) if err == nil { defer resp.Body.Close() if resp.StatusCode >= 200 && resp.StatusCode < 300 { return nil } } } } params := opencode.SessionPermissionRespondParams{ Response: opencode.F(opencode.SessionPermissionRespondParamsResponse(response)), } if projectDir != "" { params.Directory = opencode.F(projectDir) } _, err := d.client.Session.Permissions.Respond(ctx, sessionID, permissionID, params) return err } ================================================ FILE: backend/opencode_folder_picker.go ================================================ package main import ( "encoding/json" "errors" "mime" "net/http" "os" "os/exec" "path/filepath" "runtime" "strings" ) const folderPickerCanceledToken = "__GLOWBOM_PICKER_CANCELED__" type openCodeProjectPickResponse struct { Success bool `json:"success"` Path string `json:"path,omitempty"` Canceled bool `json:"canceled,omitempty"` Source string `json:"source,omitempty"` Error string `json:"error,omitempty"` } type openCodeInstructionPickedFile struct { Path string `json:"path"` Name string `json:"name"` SizeBytes int64 `json:"sizeBytes"` MimeType string `json:"mimeType,omitempty"` } type openCodeInstructionFilesPickResponse struct { Success bool `json:"success"` Files []openCodeInstructionPickedFile `json:"files,omitempty"` Canceled bool `json:"canceled,omitempty"` Source string `json:"source,omitempty"` Error string `json:"error,omitempty"` } type nativePickerCommand struct { Executable string Args []string CancelExitCodes []int } func openCodePickProjectFolderHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method != http.MethodGet && r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } var ( path string canceled bool err error ) switch runtime.GOOS { case "darwin": path, canceled, err = pickProjectFolderMacOS() case "windows": path, canceled, err = pickProjectFolderWindows() case "linux": path, canceled, err = pickProjectFolderLinux() default: w.WriteHeader(http.StatusNotImplemented) _ = json.NewEncoder(w).Encode(openCodeProjectPickResponse{ Success: false, Error: "Native folder picker is only available on macOS, Windows, and Linux.", }) return } if err != nil { w.WriteHeader(http.StatusInternalServerError) _ = json.NewEncoder(w).Encode(openCodeProjectPickResponse{ Success: false, Error: "Failed to open native folder picker: " + err.Error(), }) return } if canceled { _ = json.NewEncoder(w).Encode(openCodeProjectPickResponse{ Success: true, Canceled: true, Source: "native", }) return } info, statErr := os.Stat(path) if statErr != nil || !info.IsDir() { w.WriteHeader(http.StatusBadRequest) _ = json.NewEncoder(w).Encode(openCodeProjectPickResponse{ Success: false, Error: "Selected path is not a valid folder.", }) return } _ = json.NewEncoder(w).Encode(openCodeProjectPickResponse{ Success: true, Path: path, Source: "native", }) } func openCodePickInstructionFilesHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method != http.MethodGet && r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } var ( paths []string canceled bool err error ) switch runtime.GOOS { case "darwin": paths, canceled, err = pickInstructionFilesMacOS() case "windows": paths, canceled, err = pickInstructionFilesWindows() case "linux": paths, canceled, err = pickInstructionFilesLinux() default: w.WriteHeader(http.StatusNotImplemented) _ = json.NewEncoder(w).Encode(openCodeInstructionFilesPickResponse{ Success: false, Error: "Native file picker is only available on macOS, Windows, and Linux.", }) return } if err != nil { w.WriteHeader(http.StatusInternalServerError) _ = json.NewEncoder(w).Encode(openCodeInstructionFilesPickResponse{ Success: false, Error: "Failed to open native file picker: " + err.Error(), }) return } if canceled { _ = json.NewEncoder(w).Encode(openCodeInstructionFilesPickResponse{ Success: true, Canceled: true, Source: "native", }) return } files := make([]openCodeInstructionPickedFile, 0, len(paths)) for _, rawPath := range paths { path := strings.TrimSpace(rawPath) if path == "" { continue } info, statErr := os.Stat(path) if statErr != nil || info.IsDir() { continue } absPath, absErr := filepath.Abs(path) if absErr != nil { continue } files = append(files, openCodeInstructionPickedFile{ Path: absPath, Name: filepath.Base(absPath), SizeBytes: info.Size(), MimeType: inferMimeTypeForPath(absPath), }) } _ = json.NewEncoder(w).Encode(openCodeInstructionFilesPickResponse{ Success: true, Files: files, Source: "native", }) } func pickProjectFolderMacOS() (string, bool, error) { cmd := exec.Command( "osascript", "-e", "try", "-e", `set selectedFolder to POSIX path of (choose folder with prompt "Select local Glowbom project folder")`, "-e", "return selectedFolder", "-e", "on error number -128", "-e", `return "__GLOWBOM_PICKER_CANCELED__"`, "-e", "end try", ) selected, err := runPickerCommand(cmd) if err != nil { if strings.Contains(strings.ToLower(err.Error()), "user canceled") { return "", true, nil } return "", false, err } if selected == "" { return "", false, errors.New("no folder path returned") } if selected == folderPickerCanceledToken { return "", true, nil } return selected, false, nil } func pickInstructionFilesMacOS() ([]string, bool, error) { cmd := exec.Command( "osascript", "-e", "try", "-e", `set selectedFiles to choose file with prompt "Select local files for custom instructions" with multiple selections allowed`, "-e", "set outputPaths to {}", "-e", "repeat with selectedFile in selectedFiles", "-e", "set end of outputPaths to POSIX path of selectedFile", "-e", "end repeat", "-e", "set AppleScript's text item delimiters to linefeed", "-e", "set outputText to outputPaths as text", "-e", "set AppleScript's text item delimiters to \"\"", "-e", "return outputText", "-e", "on error number -128", "-e", `return "__GLOWBOM_PICKER_CANCELED__"`, "-e", "end try", ) selected, err := runPickerCommand(cmd) if err != nil { if strings.Contains(strings.ToLower(err.Error()), "user canceled") { return nil, true, nil } return nil, false, err } if selected == "" { return nil, false, errors.New("no file paths returned") } if selected == folderPickerCanceledToken { return nil, true, nil } lines := strings.Split(selected, "\n") paths := make([]string, 0, len(lines)) for _, line := range lines { path := strings.TrimSpace(line) if path == "" { continue } paths = append(paths, path) } if len(paths) == 0 { return nil, false, errors.New("no valid file paths returned") } return paths, false, nil } func pickProjectFolderLinux() (string, bool, error) { startDir := defaultPickerStartDir() selected, canceled, err := runLinuxPicker([]nativePickerCommand{ { Executable: "zenity", Args: []string{"--file-selection", "--directory", "--title=Select local Glowbom project folder"}, CancelExitCodes: []int{1}, }, { Executable: "qarma", Args: []string{"--file-selection", "--directory", "--title=Select local Glowbom project folder"}, CancelExitCodes: []int{1}, }, { Executable: "yad", Args: []string{"--file-selection", "--directory", "--title=Select local Glowbom project folder"}, CancelExitCodes: []int{1}, }, { Executable: "kdialog", Args: []string{"--getexistingdirectory", startDir}, CancelExitCodes: []int{1}, }, }, "No supported Linux folder picker found. Install zenity, kdialog, yad, or qarma.") if err != nil || canceled { return "", canceled, err } if selected == "" { return "", false, errors.New("no folder path returned") } return selected, false, nil } func pickInstructionFilesLinux() ([]string, bool, error) { startDir := defaultPickerStartDir() selected, canceled, err := runLinuxPicker([]nativePickerCommand{ { Executable: "zenity", Args: []string{"--file-selection", "--multiple", "--separator=\n", "--title=Select local files for custom instructions"}, CancelExitCodes: []int{1}, }, { Executable: "qarma", Args: []string{"--file-selection", "--multiple", "--separator=\n", "--title=Select local files for custom instructions"}, CancelExitCodes: []int{1}, }, { Executable: "yad", Args: []string{"--file-selection", "--multiple", "--separator=\n", "--title=Select local files for custom instructions"}, CancelExitCodes: []int{1}, }, { Executable: "kdialog", Args: []string{"--getopenfilename", startDir, "", "--multiple", "--separate-output"}, CancelExitCodes: []int{1}, }, }, "No supported Linux file picker found. Install zenity, kdialog, yad, or qarma.") if err != nil || canceled { return nil, canceled, err } if selected == "" { return nil, false, errors.New("no file paths returned") } lines := strings.Split(selected, "\n") paths := make([]string, 0, len(lines)) for _, line := range lines { path := strings.TrimSpace(line) if path == "" { continue } paths = append(paths, path) } if len(paths) == 0 { return nil, false, errors.New("no valid file paths returned") } return paths, false, nil } func pickProjectFolderWindows() (string, bool, error) { cmd := exec.Command( "powershell.exe", "-NoProfile", "-STA", "-Command", `Add-Type -AssemblyName System.Windows.Forms $dialog = New-Object System.Windows.Forms.FolderBrowserDialog $dialog.Description = 'Select local Glowbom project folder' $dialog.ShowNewFolderButton = $false $result = $dialog.ShowDialog() if ($result -ne [System.Windows.Forms.DialogResult]::OK -or [string]::IsNullOrWhiteSpace($dialog.SelectedPath)) { Write-Output '__GLOWBOM_PICKER_CANCELED__' exit 0 } Write-Output $dialog.SelectedPath`, ) selected, err := runPickerCommand(cmd) if err != nil { return "", false, err } if selected == "" { return "", false, errors.New("no folder path returned") } if selected == folderPickerCanceledToken { return "", true, nil } return selected, false, nil } func pickInstructionFilesWindows() ([]string, bool, error) { cmd := exec.Command( "powershell.exe", "-NoProfile", "-STA", "-Command", `Add-Type -AssemblyName System.Windows.Forms $dialog = New-Object System.Windows.Forms.OpenFileDialog $dialog.Title = 'Select local files for custom instructions' $dialog.Multiselect = $true $dialog.CheckFileExists = $true $dialog.CheckPathExists = $true $result = $dialog.ShowDialog() if ($result -ne [System.Windows.Forms.DialogResult]::OK -or $dialog.FileNames.Count -eq 0) { Write-Output '__GLOWBOM_PICKER_CANCELED__' exit 0 } $dialog.FileNames | ForEach-Object { Write-Output $_ }`, ) selected, err := runPickerCommand(cmd) if err != nil { return nil, false, err } if selected == "" { return nil, false, errors.New("no file paths returned") } if selected == folderPickerCanceledToken { return nil, true, nil } lines := strings.Split(selected, "\n") paths := make([]string, 0, len(lines)) for _, line := range lines { path := strings.TrimSpace(line) if path == "" { continue } paths = append(paths, path) } if len(paths) == 0 { return nil, false, errors.New("no valid file paths returned") } return paths, false, nil } func runPickerCommand(cmd *exec.Cmd) (string, error) { output, err := cmd.Output() if err != nil { var exitErr *exec.ExitError if errors.As(err, &exitErr) { stderr := strings.TrimSpace(string(exitErr.Stderr)) if stderr != "" { return "", errors.New(stderr) } } return "", err } return strings.TrimSpace(string(output)), nil } func runPickerCommandWithCancel(cmd *exec.Cmd, cancelExitCodes ...int) (string, bool, error) { output, err := cmd.Output() if err != nil { var exitErr *exec.ExitError if errors.As(err, &exitErr) { for _, code := range cancelExitCodes { if exitErr.ExitCode() == code { return "", true, nil } } stderr := strings.TrimSpace(string(exitErr.Stderr)) if stderr != "" { return "", false, errors.New(stderr) } } return "", false, err } selected := strings.TrimSpace(string(output)) if selected == folderPickerCanceledToken { return "", true, nil } return selected, false, nil } func runLinuxPicker(commands []nativePickerCommand, missingMessage string) (string, bool, error) { for _, candidate := range commands { executable, err := exec.LookPath(candidate.Executable) if err != nil { continue } selected, canceled, runErr := runPickerCommandWithCancel( exec.Command(executable, candidate.Args...), candidate.CancelExitCodes..., ) if runErr != nil || canceled { return "", canceled, runErr } return selected, false, nil } return "", false, errors.New(missingMessage) } func defaultPickerStartDir() string { homeDir, err := os.UserHomeDir() if err == nil && strings.TrimSpace(homeDir) != "" { return homeDir } return "." } func inferMimeTypeForPath(path string) string { ext := strings.ToLower(filepath.Ext(path)) if ext == "" { return "application/octet-stream" } if mimeType := mime.TypeByExtension(ext); mimeType != "" { return mimeType } return "application/octet-stream" } ================================================ FILE: backend/opencode_media_postpass.go ================================================ package main import ( "context" "crypto/sha1" "encoding/base64" "encoding/json" "fmt" "io" "log" "net/http" neturl "net/url" "os" "path/filepath" "regexp" "sort" "strconv" "strings" "time" ) const ( maxGeneratedImageBytes = 25 * 1024 * 1024 // 25 MB maxGeneratedVideoBytes = 120 * 1024 * 1024 // 120 MB maxGeneratedAudioBytes = 40 * 1024 * 1024 // 40 MB ) var ( glowbyImagePlaceholderRegex = regexp.MustCompile(`glowbyimage:([^"'<>]+)`) glowbyVideoPlaceholderRegex = regexp.MustCompile(`glowbyvideo:([^"'<>]+)`) glowbyAudioPlaceholderRegex = regexp.MustCompile(`glowbyaudio:([^"'<>]+)`) sensitiveValueRegex = regexp.MustCompile(`(?i)(api[_-]?key|authorization|bearer)\s*[:=]\s*[^,\s]+`) ) type OpenCodeMediaPostPassRequest struct { ProjectPath string `json:"projectPath"` ImageSource string `json:"imageSource,omitempty"` OpenAIKey string `json:"openaiKey,omitempty"` GeminiKey string `json:"geminiKey,omitempty"` XaiKey string `json:"xaiKey,omitempty"` VeoGeminiKey string `json:"veoGeminiKey,omitempty"` ElevenLabsKey string `json:"elevenLabsKey,omitempty"` ElevenLabsVoiceID string `json:"elevenLabsVoiceID,omitempty"` ElevenLabsVoiceModel string `json:"elevenLabsVoiceModel,omitempty"` ReferenceImagePath string `json:"referenceImagePath,omitempty"` ReferenceAssetID string `json:"referenceAssetID,omitempty"` ScanTargets []string `json:"scanTargets,omitempty"` } type OpenCodeMediaPostPassResponse struct { PrototypeChanged bool `json:"prototypeChanged"` GeneratedAssets []OpenCodeMediaAsset `json:"generatedAssets"` ReusedStudioAssets []OpenCodeMediaAsset `json:"reusedStudioAssets"` PlatformCopies []OpenCodePlatformCopy `json:"platformCopies"` Warnings []string `json:"warnings"` PlatformAssetsSynced bool `json:"platformAssetsSynced"` } type OpenCodeMediaAsset struct { Prompt string `json:"prompt"` Placeholder string `json:"placeholder,omitempty"` MediaType string `json:"mediaType"` Filename string `json:"filename"` RelativePath string `json:"relativePath"` SourceService string `json:"sourceService,omitempty"` StudioAssetID string `json:"studioAssetId,omitempty"` } type OpenCodePlatformCopy struct { Platform string `json:"platform"` Source string `json:"source"` Destination string `json:"destination"` } type postPassImageRef struct { asset OpenCodeMediaAsset bytes []byte mimeType string } type postPassVideoPlaceholder struct { token string prompt string fromKey string aspectRatio string } type postPassAudioPlaceholder struct { token string prompt string audioType string voiceID string modelID string durationSeconds float64 promptInfluence *float64 loop bool forceInstrumental bool } type studioAssetRecord struct { ID string `json:"id"` MediaType string `json:"mediaType"` DataBase64 string `json:"dataBase64"` Prompt string `json:"prompt"` SourceService string `json:"sourceService"` } type prototypeAssetsManifest struct { Version string `json:"version"` ExportedAt string `json:"exportedAt"` Assets []prototypeAssetsManifestItem `json:"assets"` } type prototypeAssetsManifestItem struct { Filename string `json:"filename"` Prompt string `json:"prompt"` Dimensions map[string]int `json:"dimensions,omitempty"` SourceService string `json:"sourceService,omitempty"` MediaType string `json:"mediaType,omitempty"` } type platformAssetsMap struct { GeneratedAt string `json:"generatedAt"` Assets []platformAssetsMapRow `json:"assets"` } type platformAssetsMapRow struct { Source string `json:"source"` MediaType string `json:"mediaType"` Destinations []platformAssetsMapTargetRow `json:"destinations"` } type platformAssetsMapTargetRow struct { Platform string `json:"platform"` Path string `json:"path"` } func openCodeMediaPostPassHandler(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } var req OpenCodeMediaPostPassRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { http.Error(w, "Invalid JSON body", http.StatusBadRequest) return } if strings.TrimSpace(req.ProjectPath) == "" { http.Error(w, "projectPath is required", http.StatusBadRequest) return } log.Printf("[OPENCODE][MEDIA] post-pass requested: project=%s, scanTargets=%d", req.ProjectPath, len(req.ScanTargets)) resp, err := runOpenCodeMediaPostPass(r.Context(), req) if err != nil { http.Error(w, sanitizeProviderError(err), http.StatusInternalServerError) return } writeJSON(w, resp) } func runOpenCodeMediaPostPass(ctx context.Context, req OpenCodeMediaPostPassRequest) (*OpenCodeMediaPostPassResponse, error) { resp := &OpenCodeMediaPostPassResponse{ GeneratedAssets: []OpenCodeMediaAsset{}, ReusedStudioAssets: []OpenCodeMediaAsset{}, PlatformCopies: []OpenCodePlatformCopy{}, Warnings: []string{}, } projectPath := strings.TrimSpace(req.ProjectPath) if projectPath == "" { return nil, fmt.Errorf("projectPath is required") } projectAbs, err := filepath.Abs(projectPath) if err != nil { return nil, fmt.Errorf("failed to resolve project path: %w", err) } projectPath = projectAbs if req.ImageSource == "" { req.ImageSource = "Glowby Images (gpt-image-1.5)" } if req.VeoGeminiKey == "" { req.VeoGeminiKey = req.GeminiKey } if strings.TrimSpace(req.ElevenLabsVoiceModel) == "" { req.ElevenLabsVoiceModel = defaultElevenVoiceModel } if len(req.ScanTargets) == 0 { req.ScanTargets = []string{"prototype/index.html"} } if _, err := os.Stat(projectPath); err != nil { return nil, fmt.Errorf("project path not found: %w", err) } studioAssets, studioErr := loadStudioAssets() if studioErr != nil { resp.Warnings = append(resp.Warnings, fmt.Sprintf("Studio assets unavailable: %s", sanitizeProviderError(studioErr))) } referenceImageBase64, _, refErr := resolveReferenceImage(req, projectPath, studioAssets) if refErr != nil { resp.Warnings = append(resp.Warnings, fmt.Sprintf("Reference image unavailable: %s", sanitizeProviderError(refErr))) } imageRefsByPrompt := make(map[string]postPassImageRef) imageRefsByKey := make(map[string]postPassImageRef) videoCache := make(map[string]OpenCodeMediaAsset) audioCache := make(map[string]OpenCodeMediaAsset) if strings.TrimSpace(req.ElevenLabsKey) != "" && strings.TrimSpace(req.ElevenLabsVoiceID) == "" { voices, voiceErr := fetchElevenLabsVoices(strings.TrimSpace(req.ElevenLabsKey)) if voiceErr != nil { resp.Warnings = append(resp.Warnings, fmt.Sprintf("Could not preload ElevenLabs default voice: %s", sanitizeProviderError(voiceErr))) } else if len(voices) > 0 { req.ElevenLabsVoiceID = strings.TrimSpace(voices[0].VoiceID) log.Printf("[OPENCODE][MEDIA][AUDIO] using account default voice_id=%s for post-pass", req.ElevenLabsVoiceID) } } for _, rawTarget := range req.ScanTargets { select { case <-ctx.Done(): return nil, ctx.Err() default: } targetPath, err := resolveScanTargetPath(projectPath, rawTarget) if err != nil { resp.Warnings = append(resp.Warnings, err.Error()) continue } data, err := os.ReadFile(targetPath) if err != nil { resp.Warnings = append(resp.Warnings, fmt.Sprintf("Failed to read %s: %s", rawTarget, sanitizeProviderError(err))) continue } original := string(data) updated := original imagePlaceholders := extractImagePlaceholders(updated) for _, placeholder := range imagePlaceholders { prompt := strings.TrimSpace(placeholder.Prompt) if prompt == "" { continue } ref, ok := imageRefsByPrompt[normalizedLookupKey(prompt)] if !ok { ref, err = materializeImagePlaceholder(req, projectPath, prompt, placeholder.Token, referenceImageBase64, studioAssets, resp) if err != nil { resp.Warnings = append(resp.Warnings, err.Error()) continue } imageRefsByPrompt[normalizedLookupKey(prompt)] = ref registerImageRefKeys(imageRefsByKey, ref) } updated = strings.ReplaceAll(updated, placeholder.Token, "assets/"+ref.asset.Filename) } videoPlaceholders := extractVideoPlaceholders(updated) for _, placeholder := range videoPlaceholders { cacheKey := normalizedLookupKey(fmt.Sprintf("%s|%s|%s", placeholder.prompt, placeholder.fromKey, placeholder.aspectRatio)) if existing, ok := videoCache[cacheKey]; ok { updated = strings.ReplaceAll(updated, placeholder.token, "assets/"+existing.Filename) continue } videoAsset, err := materializeVideoPlaceholder(ctx, req, projectPath, placeholder, imageRefsByKey, studioAssets, resp) if err != nil { resp.Warnings = append(resp.Warnings, err.Error()) continue } videoCache[cacheKey] = videoAsset updated = strings.ReplaceAll(updated, placeholder.token, "assets/"+videoAsset.Filename) } audioPlaceholders := extractAudioPlaceholders(updated) for _, placeholder := range audioPlaceholders { cacheKey := normalizedLookupKey(fmt.Sprintf( "%s|%s|%s|%s|%s|%.3f|%t|%t", placeholder.prompt, placeholder.audioType, placeholder.voiceID, placeholder.modelID, floatPointerKey(placeholder.promptInfluence), placeholder.durationSeconds, placeholder.loop, placeholder.forceInstrumental, )) if existing, ok := audioCache[cacheKey]; ok { updated = strings.ReplaceAll(updated, placeholder.token, "assets/"+existing.Filename) continue } audioAsset, err := materializeAudioPlaceholder(req, projectPath, placeholder, studioAssets, resp) if err != nil { resp.Warnings = append(resp.Warnings, err.Error()) continue } audioCache[cacheKey] = audioAsset updated = strings.ReplaceAll(updated, placeholder.token, "assets/"+audioAsset.Filename) } if updated != original { if err := os.WriteFile(targetPath, []byte(updated), 0644); err != nil { resp.Warnings = append(resp.Warnings, fmt.Sprintf("Failed to update %s: %s", rawTarget, sanitizeProviderError(err))) } else { resp.PrototypeChanged = true } } } allAssets := make([]OpenCodeMediaAsset, 0, len(resp.GeneratedAssets)+len(resp.ReusedStudioAssets)) allAssets = append(allAssets, resp.GeneratedAssets...) allAssets = append(allAssets, resp.ReusedStudioAssets...) if len(allAssets) > 0 { if err := writePrototypeAssetsManifest(projectPath, allAssets, req.ImageSource); err != nil { resp.Warnings = append(resp.Warnings, fmt.Sprintf("Failed to update assets manifest: %s", sanitizeProviderError(err))) } } copies, synced, syncWarnings, err := syncAssetsToPlatforms(projectPath) if err != nil { resp.Warnings = append(resp.Warnings, fmt.Sprintf("Platform sync failed: %s", sanitizeProviderError(err))) } else { resp.PlatformCopies = copies resp.PlatformAssetsSynced = synced resp.Warnings = append(resp.Warnings, syncWarnings...) if synced { resp.PrototypeChanged = true } } if err := writePlatformAssetsMap(projectPath, resp.PlatformCopies); err != nil { resp.Warnings = append(resp.Warnings, fmt.Sprintf("Failed to write platform assets map: %s", sanitizeProviderError(err))) } resp.Warnings = dedupeWarnings(resp.Warnings) return resp, nil } func materializeImagePlaceholder( req OpenCodeMediaPostPassRequest, projectPath string, prompt string, placeholderToken string, referenceImageBase64 string, studioAssets []studioAssetRecord, resp *OpenCodeMediaPostPassResponse, ) (postPassImageRef, error) { if strings.TrimSpace(referenceImageBase64) == "" { if studioAsset, ok := findStudioAssetByPrompt(studioAssets, "image", prompt, req.ImageSource); ok { bytes, mimeType, err := decodeBase64Payload(studioAsset.DataBase64, "image/png") if err == nil { ext := imageExtensionForMimeType(mimeType) filename := deterministicAssetFilename("img", prompt, ext) relativePath, err := writePrototypeAsset(projectPath, filename, bytes, map[string]struct{}{ ".png": {}, ".jpg": {}, ".jpeg": {}, ".webp": {}, }, maxGeneratedImageBytes) if err == nil { asset := OpenCodeMediaAsset{ Prompt: prompt, Placeholder: placeholderToken, MediaType: "image", Filename: filename, RelativePath: relativePath, SourceService: studioAsset.SourceService, StudioAssetID: studioAsset.ID, } resp.ReusedStudioAssets = append(resp.ReusedStudioAssets, asset) return postPassImageRef{asset: asset, bytes: bytes, mimeType: mimeType}, nil } } } } dataURI, sourceService, err := generateImageForPostPass(req, prompt, referenceImageBase64) if err != nil { return postPassImageRef{}, fmt.Errorf("image generation failed for %q: %s", prompt, sanitizeProviderError(err)) } bytes, mimeType, err := decodeBase64Payload(dataURI, "image/png") if err != nil { return postPassImageRef{}, fmt.Errorf("generated image decode failed for %q: %s", prompt, sanitizeProviderError(err)) } ext := imageExtensionForMimeType(mimeType) filename := deterministicAssetFilename("img", prompt, ext) relativePath, err := writePrototypeAsset(projectPath, filename, bytes, map[string]struct{}{ ".png": {}, ".jpg": {}, ".jpeg": {}, ".webp": {}, }, maxGeneratedImageBytes) if err != nil { return postPassImageRef{}, fmt.Errorf("failed to write generated image for %q: %s", prompt, sanitizeProviderError(err)) } asset := OpenCodeMediaAsset{ Prompt: prompt, Placeholder: placeholderToken, MediaType: "image", Filename: filename, RelativePath: relativePath, SourceService: sourceService, } resp.GeneratedAssets = append(resp.GeneratedAssets, asset) return postPassImageRef{asset: asset, bytes: bytes, mimeType: mimeType}, nil } func materializeVideoPlaceholder( ctx context.Context, req OpenCodeMediaPostPassRequest, projectPath string, placeholder postPassVideoPlaceholder, imageRefsByKey map[string]postPassImageRef, studioAssets []studioAssetRecord, resp *OpenCodeMediaPostPassResponse, ) (OpenCodeMediaAsset, error) { if req.VeoGeminiKey == "" { return OpenCodeMediaAsset{}, fmt.Errorf("missing veoGeminiKey for glowbyvideo:%s", placeholder.prompt) } fromRef, err := resolveVideoStartFrame(placeholder.fromKey, imageRefsByKey, studioAssets, req.ImageSource) if err != nil { return OpenCodeMediaAsset{}, fmt.Errorf("video source resolution failed for %q: %s", placeholder.prompt, sanitizeProviderError(err)) } videoBytes, err := generateVeoVideoFromImage(ctx, placeholder.prompt, placeholder.aspectRatio, req.VeoGeminiKey, fromRef.bytes, fromRef.mimeType) if err != nil { return OpenCodeMediaAsset{}, fmt.Errorf("video generation failed for %q: %s", placeholder.prompt, sanitizeProviderError(err)) } filename := deterministicAssetFilename("video", placeholder.prompt, ".mp4") relativePath, err := writePrototypeAsset(projectPath, filename, videoBytes, map[string]struct{}{ ".mp4": {}, }, maxGeneratedVideoBytes) if err != nil { return OpenCodeMediaAsset{}, fmt.Errorf("failed to write generated video for %q: %s", placeholder.prompt, sanitizeProviderError(err)) } asset := OpenCodeMediaAsset{ Prompt: placeholder.prompt, Placeholder: placeholder.token, MediaType: "video", Filename: filename, RelativePath: relativePath, SourceService: "Veo", } resp.GeneratedAssets = append(resp.GeneratedAssets, asset) return asset, nil } func materializeAudioPlaceholder( req OpenCodeMediaPostPassRequest, projectPath string, placeholder postPassAudioPlaceholder, studioAssets []studioAssetRecord, resp *OpenCodeMediaPostPassResponse, ) (OpenCodeMediaAsset, error) { if strings.TrimSpace(placeholder.prompt) == "" { return OpenCodeMediaAsset{}, fmt.Errorf("audio placeholder prompt is empty") } if studioAsset, ok := findStudioAssetByPrompt(studioAssets, "audio", placeholder.prompt, "ElevenLabs"); ok { bytes, mimeType, err := decodeBase64Payload(studioAsset.DataBase64, "audio/mpeg") if err == nil { ext := audioExtensionForMimeType(mimeType) filename := deterministicAssetFilename("audio", placeholder.prompt, ext) relativePath, err := writePrototypeAsset(projectPath, filename, bytes, map[string]struct{}{ ".mp3": {}, ".wav": {}, ".ogg": {}, ".flac": {}, ".m4a": {}, ".aac": {}, }, maxGeneratedAudioBytes) if err == nil { asset := OpenCodeMediaAsset{ Prompt: placeholder.prompt, Placeholder: placeholder.token, MediaType: "audio", Filename: filename, RelativePath: relativePath, SourceService: studioAsset.SourceService, StudioAssetID: studioAsset.ID, } resp.ReusedStudioAssets = append(resp.ReusedStudioAssets, asset) return asset, nil } } } audioBytes, mimeType, sourceService, err := generateElevenLabsAudioForPostPass( placeholder, strings.TrimSpace(req.ElevenLabsKey), strings.TrimSpace(req.ElevenLabsVoiceID), strings.TrimSpace(req.ElevenLabsVoiceModel), ) if err != nil { return OpenCodeMediaAsset{}, fmt.Errorf("audio generation failed for %q: %s", placeholder.prompt, sanitizeProviderError(err)) } ext := audioExtensionForMimeType(mimeType) filename := deterministicAssetFilename("audio", placeholder.prompt, ext) relativePath, err := writePrototypeAsset(projectPath, filename, audioBytes, map[string]struct{}{ ".mp3": {}, ".wav": {}, ".ogg": {}, ".flac": {}, ".m4a": {}, ".aac": {}, }, maxGeneratedAudioBytes) if err != nil { return OpenCodeMediaAsset{}, fmt.Errorf("failed to write generated audio for %q: %s", placeholder.prompt, sanitizeProviderError(err)) } asset := OpenCodeMediaAsset{ Prompt: placeholder.prompt, Placeholder: placeholder.token, MediaType: "audio", Filename: filename, RelativePath: relativePath, SourceService: sourceService, } resp.GeneratedAssets = append(resp.GeneratedAssets, asset) return asset, nil } func generateElevenLabsAudioForPostPass( placeholder postPassAudioPlaceholder, apiKey string, defaultVoiceID string, defaultVoiceModel string, ) ([]byte, string, string, error) { if strings.TrimSpace(apiKey) == "" { return nil, "", "", fmt.Errorf("missing elevenLabsKey for glowbyaudio:%s", placeholder.prompt) } audioType := normalizePostPassAudioType(placeholder.audioType, placeholder.prompt) voiceID := strings.TrimSpace(placeholder.voiceID) if voiceID == "" { voiceID = strings.TrimSpace(defaultVoiceID) } voiceModel := normalizeElevenLabsVoiceModel(placeholder.modelID) if strings.TrimSpace(voiceModel) == "" { voiceModel = normalizeElevenLabsVoiceModel(defaultVoiceModel) } if strings.TrimSpace(voiceModel) == "" { voiceModel = defaultElevenVoiceModel } modelID := strings.TrimSpace(placeholder.modelID) if strings.EqualFold(modelID, "standard") || strings.EqualFold(modelID, "default") { modelID = "" } req := ElevenLabsAudioRequest{ Prompt: placeholder.prompt, AudioType: audioType, VoiceID: voiceID, DurationSeconds: placeholder.durationSeconds, PromptInfluence: placeholder.promptInfluence, Loop: placeholder.loop, ForceInstrumental: placeholder.forceInstrumental, } switch audioType { case "voice": req.VoiceModel = voiceModel case "sound": req.SoundModel = modelID case "music": req.MusicModel = modelID } var ( audioBytes []byte mimeType string err error ) switch audioType { case "voice": log.Printf("[OPENCODE][MEDIA][AUDIO] generating voice prompt=%q voice_id=%s model=%s", req.Prompt, req.VoiceID, req.VoiceModel) audioBytes, mimeType, err = callElevenLabsVoice(req, apiKey) case "sound": log.Printf("[OPENCODE][MEDIA][AUDIO] generating sound prompt=%q model=%s", req.Prompt, req.SoundModel) audioBytes, mimeType, err = callElevenLabsSound(req, apiKey) case "music": log.Printf("[OPENCODE][MEDIA][AUDIO] generating music prompt=%q model=%s", req.Prompt, req.MusicModel) audioBytes, mimeType, err = callElevenLabsMusic(req, apiKey) default: return nil, "", "", fmt.Errorf("unsupported audio type: %s", audioType) } if err != nil { log.Printf("[OPENCODE][MEDIA][AUDIO] generation failed type=%s err=%s", audioType, sanitizeProviderError(err)) return nil, "", "", err } log.Printf("[OPENCODE][MEDIA][AUDIO] generation succeeded type=%s bytes=%d mime=%s", audioType, len(audioBytes), mimeType) sourceService := "ElevenLabs" switch audioType { case "voice": sourceService = "ElevenLabs (Voice)" case "sound": sourceService = "ElevenLabs (Sound FX)" case "music": sourceService = "ElevenLabs (Music)" } return audioBytes, mimeType, sourceService, nil } func generateImageForPostPass(req OpenCodeMediaPostPassRequest, prompt, referenceImageBase64 string) (string, string, error) { source := strings.TrimSpace(req.ImageSource) if source == "" { source = "Glowby Images (gpt-image-1.5)" } lowerSource := strings.ToLower(source) useReference := strings.TrimSpace(referenceImageBase64) != "" switch { case strings.Contains(lowerSource, "gpt-image-1"): if req.OpenAIKey == "" { return "", source, fmt.Errorf("openai key is required for %s", source) } if useReference { dataURI, err := callOpenAIImageGenerationWithReference(prompt, referenceImageBase64, "", "", req.OpenAIKey) return dataURI, source, err } dataURI, err := callOpenAIImageGeneration(prompt, "", "", req.OpenAIKey) return dataURI, source, err case strings.Contains(lowerSource, "nano banana"): if req.GeminiKey == "" { return "", source, fmt.Errorf("gemini key is required for %s", source) } if useReference { dataURI, err := callGeminiImageGenerationWithReference(prompt, referenceImageBase64, "", "", req.GeminiKey) return dataURI, source, err } dataURI, err := callGeminiImageGeneration(prompt, "", "", req.GeminiKey) return dataURI, source, err case strings.Contains(lowerSource, "grok imagine image"), strings.Contains(lowerSource, "grok-imagine-image"), strings.Contains(lowerSource, "grok 2 image gen"): if req.XaiKey == "" { return "", source, fmt.Errorf("xai key is required for %s", source) } if useReference { if dataURI, err := callGrokImageGenerationWithReference(prompt, referenceImageBase64, req.XaiKey, ""); err == nil { return dataURI, source, nil } } dataURI, err := callGrokImageGeneration(prompt, req.XaiKey, "") return dataURI, source, err default: if req.OpenAIKey != "" { if useReference { dataURI, err := callOpenAIImageGenerationWithReference(prompt, referenceImageBase64, "", "", req.OpenAIKey) return dataURI, "Glowby Images (gpt-image-1.5)", err } dataURI, err := callOpenAIImageGeneration(prompt, "", "", req.OpenAIKey) return dataURI, "Glowby Images (gpt-image-1.5)", err } if req.GeminiKey != "" { if useReference { dataURI, err := callGeminiImageGenerationWithReference(prompt, referenceImageBase64, "", "", req.GeminiKey) return dataURI, "Glowby Images (Nano Banana 2)", err } dataURI, err := callGeminiImageGeneration(prompt, "", "", req.GeminiKey) return dataURI, "Glowby Images (Nano Banana 2)", err } if req.XaiKey != "" { dataURI, err := callGrokImageGeneration(prompt, req.XaiKey, "") return dataURI, "Glowby Images (Grok Imagine Image Pro)", err } return "", source, fmt.Errorf("no image provider key available") } } func generateVeoVideoFromImage(ctx context.Context, prompt, aspectRatio, geminiKey string, imageBytes []byte, mimeType string) ([]byte, error) { if geminiKey == "" { return nil, fmt.Errorf("gemini key is required for Veo generation") } if len(imageBytes) == 0 { return nil, fmt.Errorf("image bytes are required for Veo generation") } if aspectRatio == "" { aspectRatio = "16:9" } request := VeoGenerationRequest{ Prompt: prompt, Images: []VeoImageInput{ { Data: base64.StdEncoding.EncodeToString(imageBytes), MimeType: mimeType, }, }, AspectRatio: aspectRatio, UseKeyframes: false, GeminiKey: geminiKey, } startResp, err := startVeoVideoGeneration(request) if err != nil { return nil, err } deadline := time.Now().Add(10 * time.Minute) for { select { case <-ctx.Done(): return nil, ctx.Err() default: } if time.Now().After(deadline) { return nil, fmt.Errorf("video generation timed out") } pollResp, err := pollVeoOperation(startResp.OperationID, geminiKey) if err != nil { return nil, err } if pollResp.Error != "" { return nil, fmt.Errorf("%s", pollResp.Error) } if pollResp.Done { if pollResp.Status != "completed" || pollResp.VideoURL == "" { return nil, fmt.Errorf("video generation finished without output") } return downloadVeoVideoBinary(pollResp.VideoURL, geminiKey) } time.Sleep(8 * time.Second) } } func downloadVeoVideoBinary(videoURL, apiKey string) ([]byte, error) { parsed, err := neturl.Parse(videoURL) if err != nil { return nil, fmt.Errorf("invalid video url: %w", err) } query := parsed.Query() if query.Get("key") == "" { query.Set("key", apiKey) } parsed.RawQuery = query.Encode() req, err := http.NewRequest(http.MethodGet, parsed.String(), nil) if err != nil { return nil, err } resp, err := http.DefaultClient.Do(req) if err != nil { return nil, err } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { body, _ := io.ReadAll(io.LimitReader(resp.Body, 2048)) return nil, fmt.Errorf("video download failed (%d): %s", resp.StatusCode, strings.TrimSpace(string(body))) } data, err := io.ReadAll(io.LimitReader(resp.Body, maxGeneratedVideoBytes+1)) if err != nil { return nil, err } if len(data) > maxGeneratedVideoBytes { return nil, fmt.Errorf("video exceeds maximum allowed size") } return data, nil } func writePrototypeAssetsManifest(projectPath string, assets []OpenCodeMediaAsset, defaultImageSource string) error { manifestPath, err := safeProjectPath(projectPath, "prototype", "assets.json") if err != nil { return err } manifest := prototypeAssetsManifest{ Version: "1.0", ExportedAt: time.Now().UTC().Format(time.RFC3339), Assets: []prototypeAssetsManifestItem{}, } if existingData, err := os.ReadFile(manifestPath); err == nil { _ = json.Unmarshal(existingData, &manifest) if manifest.Version == "" { manifest.Version = "1.0" } if manifest.Assets == nil { manifest.Assets = []prototypeAssetsManifestItem{} } } byFilename := make(map[string]prototypeAssetsManifestItem) for _, item := range manifest.Assets { byFilename[item.Filename] = item } for _, asset := range assets { sourceService := asset.SourceService if sourceService == "" { if asset.MediaType == "video" { sourceService = "Veo" } else if asset.MediaType == "audio" { sourceService = "ElevenLabs" } else { sourceService = defaultImageSource } } byFilename[asset.Filename] = prototypeAssetsManifestItem{ Filename: asset.Filename, Prompt: asset.Prompt, SourceService: sourceService, MediaType: asset.MediaType, } } manifest.Assets = make([]prototypeAssetsManifestItem, 0, len(byFilename)) for _, item := range byFilename { manifest.Assets = append(manifest.Assets, item) } sort.Slice(manifest.Assets, func(i, j int) bool { return manifest.Assets[i].Filename < manifest.Assets[j].Filename }) payload, err := json.MarshalIndent(manifest, "", " ") if err != nil { return err } return os.WriteFile(manifestPath, payload, 0644) } func writePlatformAssetsMap(projectPath string, copies []OpenCodePlatformCopy) error { mapPath, err := safeProjectPath(projectPath, "prototype", "platform_assets_map.json") if err != nil { return err } rowsBySource := make(map[string]*platformAssetsMapRow) for _, copy := range copies { row, ok := rowsBySource[copy.Source] if !ok { row = &platformAssetsMapRow{ Source: copy.Source, MediaType: classifyMediaTypeByExt(filepath.Ext(copy.Source)), Destinations: []platformAssetsMapTargetRow{}, } rowsBySource[copy.Source] = row } row.Destinations = append(row.Destinations, platformAssetsMapTargetRow{ Platform: copy.Platform, Path: copy.Destination, }) } rows := make([]platformAssetsMapRow, 0, len(rowsBySource)) for _, row := range rowsBySource { sort.Slice(row.Destinations, func(i, j int) bool { if row.Destinations[i].Platform == row.Destinations[j].Platform { return row.Destinations[i].Path < row.Destinations[j].Path } return row.Destinations[i].Platform < row.Destinations[j].Platform }) rows = append(rows, *row) } sort.Slice(rows, func(i, j int) bool { return rows[i].Source < rows[j].Source }) payload, err := json.MarshalIndent(platformAssetsMap{ GeneratedAt: time.Now().UTC().Format(time.RFC3339), Assets: rows, }, "", " ") if err != nil { return err } return os.WriteFile(mapPath, payload, 0644) } func syncAssetsToPlatforms(projectPath string) ([]OpenCodePlatformCopy, bool, []string, error) { assetsDir, err := safeProjectPath(projectPath, "prototype", "assets") if err != nil { return nil, false, nil, err } if _, err := os.Stat(assetsDir); err != nil { if os.IsNotExist(err) { return []OpenCodePlatformCopy{}, false, []string{}, nil } return nil, false, nil, err } type platformTarget struct { name string imagePath string videoPath string audioPath string enabled bool special string } appleRoot, _ := safeProjectPath(projectPath, "apple", "Custom", "Assets.xcassets") androidRoot, _ := safeProjectPath(projectPath, "android", "app", "src", "main", "res") webRoot, _ := safeProjectPath(projectPath, "web", "public") godotRoot, _ := safeProjectPath(projectPath, "godot", "assets") targets := []platformTarget{ { name: "apple", enabled: directoryExists(appleRoot), special: "apple", }, { name: "android", imagePath: filepath.Join(androidRoot, "drawable"), videoPath: filepath.Join(androidRoot, "raw"), audioPath: filepath.Join(androidRoot, "raw"), enabled: directoryExists(androidRoot), }, { name: "web", imagePath: filepath.Join(webRoot, "assets", "images"), videoPath: filepath.Join(webRoot, "assets", "videos"), audioPath: filepath.Join(webRoot, "assets", "audio"), enabled: directoryExists(webRoot), }, { name: "godot", imagePath: filepath.Join(godotRoot, "sprites"), videoPath: filepath.Join(godotRoot, "videos"), audioPath: filepath.Join(godotRoot, "audio"), enabled: directoryExists(godotRoot), }, } synced := false warnings := []string{} copies := []OpenCodePlatformCopy{} err = filepath.WalkDir(assetsDir, func(path string, d os.DirEntry, walkErr error) error { if walkErr != nil { return walkErr } if d.IsDir() { return nil } ext := strings.ToLower(filepath.Ext(path)) mediaType := classifyMediaTypeByExt(ext) if mediaType == "" { return nil } relSource, err := filepath.Rel(projectPath, path) if err != nil { return err } relSource = filepath.ToSlash(relSource) for _, target := range targets { if !target.enabled { continue } var destinationPath string if target.special == "apple" { destinationPath, err = copyToAppleAssetCatalog(path, appleRoot, mediaType) if err != nil { warnings = append(warnings, fmt.Sprintf("Apple sync failed for %s: %s", relSource, sanitizeProviderError(err))) continue } } else { baseName := resourceSafeName(strings.TrimSuffix(filepath.Base(path), filepath.Ext(path))) var platformDir string if mediaType == "video" { platformDir = target.videoPath } else if mediaType == "audio" { platformDir = target.audioPath } else { platformDir = target.imagePath } if err := os.MkdirAll(platformDir, 0755); err != nil { warnings = append(warnings, fmt.Sprintf("%s sync failed for %s: %s", strings.Title(target.name), relSource, sanitizeProviderError(err))) continue } var fileName string if mediaType == "video" { fileName = baseName + ".mp4" } else if mediaType == "audio" { fileName = baseName + ext } else { fileName = baseName + ext } destinationPath = filepath.Join(platformDir, fileName) if err := copyFile(path, destinationPath, maxAssetBytesForMediaType(mediaType)); err != nil { warnings = append(warnings, fmt.Sprintf("%s sync failed for %s: %s", strings.Title(target.name), relSource, sanitizeProviderError(err))) continue } } relDest, relErr := filepath.Rel(projectPath, destinationPath) if relErr != nil { warnings = append(warnings, fmt.Sprintf("sync path error for %s: %s", relSource, sanitizeProviderError(relErr))) continue } synced = true copies = append(copies, OpenCodePlatformCopy{ Platform: target.name, Source: relSource, Destination: filepath.ToSlash(relDest), }) } return nil }) if err != nil { return nil, synced, warnings, err } sort.Slice(copies, func(i, j int) bool { if copies[i].Platform == copies[j].Platform { if copies[i].Source == copies[j].Source { return copies[i].Destination < copies[j].Destination } return copies[i].Source < copies[j].Source } return copies[i].Platform < copies[j].Platform }) return copies, synced, dedupeWarnings(warnings), nil } func copyToAppleAssetCatalog(sourcePath, assetCatalogRoot, mediaType string) (string, error) { ext := strings.ToLower(filepath.Ext(sourcePath)) baseName := strings.TrimSuffix(filepath.Base(sourcePath), ext) setName := resourceSafeName(baseName) var setDir string var outputName string var contents map[string]interface{} if mediaType == "video" || mediaType == "audio" { setDir = filepath.Join(assetCatalogRoot, setName+".dataset") if mediaType == "video" { outputName = setName + ".mp4" } else { outputName = setName + ext } contents = map[string]interface{}{ "data": []map[string]string{ { "idiom": "universal", "filename": outputName, }, }, "info": map[string]interface{}{ "author": "xcode", "version": 1, }, } } else { setDir = filepath.Join(assetCatalogRoot, setName+".imageset") outputName = setName + ext contents = map[string]interface{}{ "images": []map[string]string{ { "idiom": "universal", "filename": outputName, }, }, "info": map[string]interface{}{ "author": "xcode", "version": 1, }, } } if err := os.MkdirAll(setDir, 0755); err != nil { return "", err } targetPath := filepath.Join(setDir, outputName) if err := copyFile(sourcePath, targetPath, maxAssetBytesForMediaType(mediaType)); err != nil { return "", err } contentsPath := filepath.Join(setDir, "Contents.json") payload, err := json.MarshalIndent(contents, "", " ") if err != nil { return "", err } if err := os.WriteFile(contentsPath, payload, 0644); err != nil { return "", err } return targetPath, nil } func materializeFromStudioAsset(asset studioAssetRecord, mediaType string, prompt string, placeholder string, projectPath string, sourceService string, maxBytes int, allowed map[string]struct{}) (OpenCodeMediaAsset, []byte, string, error) { bytes, mimeType, err := decodeBase64Payload(asset.DataBase64, "application/octet-stream") if err != nil { return OpenCodeMediaAsset{}, nil, "", err } ext := ".bin" if mediaType == "image" { ext = imageExtensionForMimeType(mimeType) } else if mediaType == "video" { ext = ".mp4" } else if mediaType == "audio" { ext = audioExtensionForMimeType(mimeType) } filename := deterministicAssetFilename(mediaType, prompt, ext) relativePath, err := writePrototypeAsset(projectPath, filename, bytes, allowed, maxBytes) if err != nil { return OpenCodeMediaAsset{}, nil, "", err } return OpenCodeMediaAsset{ Prompt: prompt, Placeholder: placeholder, MediaType: mediaType, Filename: filename, RelativePath: relativePath, SourceService: sourceService, StudioAssetID: asset.ID, }, bytes, mimeType, nil } func resolveVideoStartFrame(fromKey string, imageRefsByKey map[string]postPassImageRef, studioAssets []studioAssetRecord, imageSource string) (postPassImageRef, error) { normalized := normalizedLookupKey(fromKey) if ref, ok := imageRefsByKey[normalized]; ok { return ref, nil } if studioAsset, ok := findStudioAssetByKey(studioAssets, "image", fromKey, imageSource); ok { bytes, mimeType, err := decodeBase64Payload(studioAsset.DataBase64, "image/png") if err != nil { return postPassImageRef{}, err } filename := deterministicAssetFilename("img", studioAsset.Prompt, imageExtensionForMimeType(mimeType)) return postPassImageRef{ asset: OpenCodeMediaAsset{ Prompt: studioAsset.Prompt, MediaType: "image", Filename: filename, RelativePath: filepath.ToSlash(filepath.Join("prototype", "assets", filename)), SourceService: studioAsset.SourceService, StudioAssetID: studioAsset.ID, }, bytes: bytes, mimeType: mimeType, }, nil } return postPassImageRef{}, fmt.Errorf("from:%s does not match any image generated in this pass or Studio image", fromKey) } func registerImageRefKeys(index map[string]postPassImageRef, ref postPassImageRef) { index[normalizedLookupKey(ref.asset.Prompt)] = ref index[normalizedLookupKey(strings.TrimSuffix(ref.asset.Filename, filepath.Ext(ref.asset.Filename)))] = ref index[normalizedLookupKey(resourceSafeName(ref.asset.Prompt))] = ref } type imagePlaceholder struct { Token string Prompt string } func extractImagePlaceholders(content string) []imagePlaceholder { matches := glowbyImagePlaceholderRegex.FindAllStringSubmatch(content, -1) result := []imagePlaceholder{} seen := make(map[string]struct{}) for _, match := range matches { if len(match) < 2 { continue } token := strings.TrimSpace(match[0]) prompt := strings.TrimSpace(match[1]) if token == "" || prompt == "" { continue } if _, ok := seen[token]; ok { continue } seen[token] = struct{}{} result = append(result, imagePlaceholder{Token: token, Prompt: prompt}) } return result } func extractVideoPlaceholders(content string) []postPassVideoPlaceholder { matches := glowbyVideoPlaceholderRegex.FindAllStringSubmatch(content, -1) result := []postPassVideoPlaceholder{} seen := make(map[string]struct{}) for _, match := range matches { if len(match) < 2 { continue } token := strings.TrimSpace(match[0]) payload := strings.TrimSpace(match[1]) if token == "" || payload == "" { continue } if _, ok := seen[token]; ok { continue } seen[token] = struct{}{} placeholder := parseGlowbyVideoPayload(token, payload) if placeholder.prompt == "" { continue } result = append(result, placeholder) } return result } func parseGlowbyVideoPayload(token, payload string) postPassVideoPlaceholder { parts := strings.Split(payload, "|") placeholder := postPassVideoPlaceholder{ token: token, prompt: strings.TrimSpace(parts[0]), aspectRatio: "16:9", } for _, part := range parts[1:] { part = strings.TrimSpace(part) lowerPart := strings.ToLower(part) if strings.HasPrefix(lowerPart, "from:") { placeholder.fromKey = strings.TrimSpace(part[len("from:"):]) continue } if strings.HasPrefix(lowerPart, "aspect:") { placeholder.aspectRatio = normalizeAspectRatio(strings.TrimSpace(part[len("aspect:"):])) } } return placeholder } func extractAudioPlaceholders(content string) []postPassAudioPlaceholder { matches := glowbyAudioPlaceholderRegex.FindAllStringSubmatch(content, -1) result := []postPassAudioPlaceholder{} seen := make(map[string]struct{}) for _, match := range matches { if len(match) < 2 { continue } token := strings.TrimSpace(match[0]) payload := strings.TrimSpace(match[1]) if token == "" || payload == "" { continue } if _, ok := seen[token]; ok { continue } seen[token] = struct{}{} placeholder := parseGlowbyAudioPayload(token, payload) if placeholder.prompt == "" { continue } result = append(result, placeholder) } return result } func parseGlowbyAudioPayload(token, payload string) postPassAudioPlaceholder { parts := strings.Split(payload, "|") placeholder := postPassAudioPlaceholder{ token: token, prompt: strings.TrimSpace(parts[0]), audioType: inferAudioTypeFromPrompt(strings.TrimSpace(parts[0])), } for _, part := range parts[1:] { part = strings.TrimSpace(part) if part == "" { continue } lowerPart := strings.ToLower(part) switch { case strings.HasPrefix(lowerPart, "type:"): placeholder.audioType = normalizePostPassAudioType(strings.TrimSpace(part[len("type:"):]), placeholder.prompt) case strings.HasPrefix(lowerPart, "voice:"): placeholder.voiceID = strings.TrimSpace(part[len("voice:"):]) case strings.HasPrefix(lowerPart, "voiceid:"): placeholder.voiceID = strings.TrimSpace(part[len("voiceid:"):]) case strings.HasPrefix(lowerPart, "voice_id:"): placeholder.voiceID = strings.TrimSpace(part[len("voice_id:"):]) case strings.HasPrefix(lowerPart, "model:"): placeholder.modelID = strings.TrimSpace(part[len("model:"):]) case strings.HasPrefix(lowerPart, "modelid:"): placeholder.modelID = strings.TrimSpace(part[len("modelid:"):]) case strings.HasPrefix(lowerPart, "model_id:"): placeholder.modelID = strings.TrimSpace(part[len("model_id:"):]) case strings.HasPrefix(lowerPart, "duration:"): if seconds, err := strconv.ParseFloat(strings.TrimSpace(part[len("duration:"):]), 64); err == nil && seconds > 0 { placeholder.durationSeconds = seconds } case strings.HasPrefix(lowerPart, "durationseconds:"): if seconds, err := strconv.ParseFloat(strings.TrimSpace(part[len("durationseconds:"):]), 64); err == nil && seconds > 0 { placeholder.durationSeconds = seconds } case strings.HasPrefix(lowerPart, "promptinfluence:"): if influence, err := strconv.ParseFloat(strings.TrimSpace(part[len("promptinfluence:"):]), 64); err == nil { placeholder.promptInfluence = &influence } case strings.HasPrefix(lowerPart, "influence:"): if influence, err := strconv.ParseFloat(strings.TrimSpace(part[len("influence:"):]), 64); err == nil { placeholder.promptInfluence = &influence } case strings.HasPrefix(lowerPart, "loop:"): placeholder.loop = parseBoolOption(strings.TrimSpace(part[len("loop:"):])) case strings.HasPrefix(lowerPart, "instrumental:"): placeholder.forceInstrumental = parseBoolOption(strings.TrimSpace(part[len("instrumental:"):])) case strings.HasPrefix(lowerPart, "forceinstrumental:"): placeholder.forceInstrumental = parseBoolOption(strings.TrimSpace(part[len("forceinstrumental:"):])) } } placeholder.audioType = normalizePostPassAudioType(placeholder.audioType, placeholder.prompt) return placeholder } func normalizePostPassAudioType(audioType string, prompt string) string { normalized := normalizeAudioType(audioType) if normalized == "" { return inferAudioTypeFromPrompt(prompt) } switch normalized { case "voice", "sound", "music": return normalized default: return inferAudioTypeFromPrompt(prompt) } } func inferAudioTypeFromPrompt(prompt string) string { lower := strings.ToLower(strings.TrimSpace(prompt)) if lower == "" { return "voice" } voiceHints := []string{"voice", "voiceover", "narration", "narrator", "spoken", "dialogue", "read aloud", "tts"} for _, hint := range voiceHints { if strings.Contains(lower, hint) { return "voice" } } musicHints := []string{"music", "song", "soundtrack", "background track", "melody", "instrumental", "beat"} for _, hint := range musicHints { if strings.Contains(lower, hint) { return "music" } } soundHints := []string{ "sound effect", "sfx", "fx", "effect", "ambient", "foley", "explosion", "whoosh", "footstep", "door slam", "meow", "bark", "woof", "chirp", "scream", "thunder", "rain", "wind", "gunshot", "impact", } for _, hint := range soundHints { if strings.Contains(lower, hint) { return "sound" } } return "voice" } func parseBoolOption(value string) bool { switch strings.ToLower(strings.TrimSpace(value)) { case "1", "true", "yes", "y", "on": return true default: return false } } func floatPointerKey(value *float64) string { if value == nil { return "" } return fmt.Sprintf("%.3f", *value) } func normalizeAspectRatio(value string) string { switch strings.TrimSpace(value) { case "16:9", "9:16", "1:1", "4:3", "3:4": return value default: return "16:9" } } func resolveReferenceImage(req OpenCodeMediaPostPassRequest, projectPath string, studioAssets []studioAssetRecord) (string, string, error) { if strings.TrimSpace(req.ReferenceImagePath) != "" { refPath := strings.TrimSpace(req.ReferenceImagePath) var absPath string var err error if filepath.IsAbs(refPath) { absPath = refPath } else { absPath, err = safeProjectPath(projectPath, refPath) if err != nil { return "", "", err } } data, err := os.ReadFile(absPath) if err != nil { return "", "", err } if len(data) > maxGeneratedImageBytes { return "", "", fmt.Errorf("reference image is too large") } mimeType := detectMimeType(data, "image/png") return base64.StdEncoding.EncodeToString(data), mimeType, nil } if strings.TrimSpace(req.ReferenceAssetID) != "" { assetID := normalizedLookupKey(req.ReferenceAssetID) for _, asset := range studioAssets { if normalizedLookupKey(asset.ID) != assetID { continue } if asset.DataBase64 == "" { return "", "", fmt.Errorf("reference asset has no image data") } bytes, mimeType, err := decodeBase64Payload(asset.DataBase64, "image/png") if err != nil { return "", "", err } return base64.StdEncoding.EncodeToString(bytes), mimeType, nil } return "", "", fmt.Errorf("reference asset not found in Studio") } return "", "", nil } func loadStudioAssets() ([]studioAssetRecord, error) { userConfigDir, err := os.UserConfigDir() if err != nil { return nil, err } assetsDir := filepath.Join(userConfigDir, "Glowbom", "Studio", "Assets") entries, err := os.ReadDir(assetsDir) if err != nil { if os.IsNotExist(err) { return []studioAssetRecord{}, nil } return nil, err } sort.Slice(entries, func(i, j int) bool { return entries[i].Name() > entries[j].Name() }) records := []studioAssetRecord{} for _, entry := range entries { if entry.IsDir() || !strings.HasSuffix(strings.ToLower(entry.Name()), ".json") { continue } path := filepath.Join(assetsDir, entry.Name()) data, err := os.ReadFile(path) if err != nil { continue } var record studioAssetRecord if err := json.Unmarshal(data, &record); err != nil { continue } if strings.TrimSpace(record.ID) == "" || strings.TrimSpace(record.Prompt) == "" { continue } records = append(records, record) } return records, nil } func findStudioAssetByPrompt(assets []studioAssetRecord, mediaType, prompt, preferredSource string) (studioAssetRecord, bool) { normalizedPrompt := normalizedLookupKey(prompt) normalizedSource := normalizedLookupKey(preferredSource) var fallback studioAssetRecord foundFallback := false for _, asset := range assets { if normalizedLookupKey(asset.MediaType) != normalizedLookupKey(mediaType) { continue } if normalizedLookupKey(asset.Prompt) != normalizedPrompt { continue } if asset.DataBase64 == "" { continue } if normalizedSource != "" && normalizedLookupKey(asset.SourceService) == normalizedSource { return asset, true } if !foundFallback { fallback = asset foundFallback = true } } return fallback, foundFallback } func findStudioAssetByKey(assets []studioAssetRecord, mediaType, key, preferredSource string) (studioAssetRecord, bool) { normalizedKey := normalizedLookupKey(key) normalizedSource := normalizedLookupKey(preferredSource) var fallback studioAssetRecord foundFallback := false for _, asset := range assets { if normalizedLookupKey(asset.MediaType) != normalizedLookupKey(mediaType) { continue } if asset.DataBase64 == "" { continue } promptKey := normalizedLookupKey(asset.Prompt) derivedKey := normalizedLookupKey(resourceSafeName(asset.Prompt)) idKey := normalizedLookupKey(asset.ID) if normalizedKey != promptKey && normalizedKey != derivedKey && normalizedKey != idKey { continue } if normalizedSource != "" && normalizedLookupKey(asset.SourceService) == normalizedSource { return asset, true } if !foundFallback { fallback = asset foundFallback = true } } return fallback, foundFallback } func resolveScanTargetPath(projectPath, rawTarget string) (string, error) { target := strings.TrimSpace(rawTarget) if target == "" { target = "prototype/index.html" } if filepath.IsAbs(target) { absTarget, err := filepath.Abs(target) if err != nil { return "", err } if !isPathWithin(projectPath, absTarget) { return "", fmt.Errorf("scan target escapes project root: %s", rawTarget) } return absTarget, nil } return safeProjectPath(projectPath, target) } func writePrototypeAsset(projectPath, filename string, data []byte, allowedExtensions map[string]struct{}, maxSize int) (string, error) { assetsDir, err := safeProjectPath(projectPath, "prototype", "assets") if err != nil { return "", err } if err := os.MkdirAll(assetsDir, 0755); err != nil { return "", err } targetPath, err := safeProjectPath(projectPath, "prototype", "assets", filename) if err != nil { return "", err } ext := strings.ToLower(filepath.Ext(targetPath)) if _, ok := allowedExtensions[ext]; !ok { return "", fmt.Errorf("extension %s is not allowed", ext) } if len(data) > maxSize { return "", fmt.Errorf("asset exceeds maximum size") } if err := os.WriteFile(targetPath, data, 0644); err != nil { return "", err } rel, err := filepath.Rel(projectPath, targetPath) if err != nil { return "", err } return filepath.ToSlash(rel), nil } func copyFile(sourcePath, destinationPath string, maxSize int64) error { info, err := os.Stat(sourcePath) if err != nil { return err } if info.Size() > maxSize { return fmt.Errorf("source file exceeds max size") } data, err := os.ReadFile(sourcePath) if err != nil { return err } if int64(len(data)) > maxSize { return fmt.Errorf("source file exceeds max size") } return os.WriteFile(destinationPath, data, 0644) } func safeProjectPath(projectPath string, pathSegments ...string) (string, error) { baseAbs, err := filepath.Abs(projectPath) if err != nil { return "", err } all := append([]string{baseAbs}, pathSegments...) target := filepath.Join(all...) targetAbs, err := filepath.Abs(target) if err != nil { return "", err } if !isPathWithin(baseAbs, targetAbs) { return "", fmt.Errorf("path escapes project root: %s", filepath.Join(pathSegments...)) } return targetAbs, nil } func isPathWithin(basePath, targetPath string) bool { rel, err := filepath.Rel(basePath, targetPath) if err != nil { return false } rel = filepath.Clean(rel) return rel == "." || (!strings.HasPrefix(rel, ".."+string(os.PathSeparator)) && rel != "..") } func decodeBase64Payload(value string, fallbackMime string) ([]byte, string, error) { trimmed := strings.TrimSpace(value) if trimmed == "" { return nil, "", fmt.Errorf("empty payload") } mimeType := fallbackMime base64Payload := trimmed if strings.HasPrefix(trimmed, "data:") { parts := strings.SplitN(trimmed, ",", 2) if len(parts) != 2 { return nil, "", fmt.Errorf("invalid data URI") } meta := strings.TrimPrefix(parts[0], "data:") if idx := strings.Index(meta, ";"); idx >= 0 { meta = meta[:idx] } if strings.TrimSpace(meta) != "" { mimeType = meta } base64Payload = parts[1] } data, err := base64.StdEncoding.DecodeString(base64Payload) if err != nil { data, err = base64.StdEncoding.DecodeString(strings.TrimSpace(base64Payload)) if err != nil { return nil, "", err } } if mimeType == "" || mimeType == "application/octet-stream" { mimeType = detectMimeType(data, fallbackMime) } return data, mimeType, nil } func detectMimeType(data []byte, fallback string) string { if len(data) == 0 { return fallback } detected := http.DetectContentType(data) if detected == "" { return fallback } if strings.HasPrefix(detected, "application/octet-stream") { return fallback } return detected } func imageExtensionForMimeType(mimeType string) string { switch strings.ToLower(strings.TrimSpace(mimeType)) { case "image/jpeg", "image/jpg": return ".jpg" case "image/webp": return ".webp" default: return ".png" } } func audioExtensionForMimeType(mimeType string) string { switch strings.ToLower(strings.TrimSpace(mimeType)) { case "audio/wav", "audio/wave", "audio/x-wav": return ".wav" case "audio/ogg": return ".ogg" case "audio/flac": return ".flac" case "audio/mp4", "audio/x-m4a": return ".m4a" case "audio/aac", "audio/x-aac": return ".aac" default: return ".mp3" } } func classifyMediaTypeByExt(ext string) string { switch strings.ToLower(strings.TrimSpace(ext)) { case ".png", ".jpg", ".jpeg", ".webp", ".gif", ".svg": return "image" case ".mp4", ".webm", ".mov": return "video" case ".mp3", ".wav", ".ogg", ".flac", ".m4a", ".aac": return "audio" default: return "" } } func maxAssetBytesForMediaType(mediaType string) int64 { switch strings.ToLower(strings.TrimSpace(mediaType)) { case "image": return maxGeneratedImageBytes case "audio": return maxGeneratedAudioBytes default: return maxGeneratedVideoBytes } } func deterministicAssetFilename(prefix, prompt, ext string) string { cleanPrefix := resourceSafeName(prefix) if cleanPrefix == "" { cleanPrefix = "asset" } cleanPrompt := resourceSafeName(prompt) if cleanPrompt == "" { cleanPrompt = "item" } if len(cleanPrompt) > 36 { cleanPrompt = cleanPrompt[:36] } hash := sha1.Sum([]byte(strings.ToLower(strings.TrimSpace(prompt)))) shortHash := fmt.Sprintf("%x", hash[:4]) return fmt.Sprintf("%s_%s_%s%s", cleanPrefix, cleanPrompt, shortHash, ext) } func resourceSafeName(value string) string { value = strings.ToLower(strings.TrimSpace(value)) if value == "" { return "asset" } builder := strings.Builder{} lastUnderscore := false for _, r := range value { if (r >= 'a' && r <= 'z') || (r >= '0' && r <= '9') { builder.WriteRune(r) lastUnderscore = false continue } if !lastUnderscore { builder.WriteRune('_') lastUnderscore = true } } result := strings.Trim(builder.String(), "_") if result == "" { result = "asset" } if result[0] >= '0' && result[0] <= '9' { result = "asset_" + result } return result } func normalizedLookupKey(value string) string { return strings.TrimSpace(strings.ToLower(value)) } func sanitizeProviderError(err error) string { if err == nil { return "" } msg := strings.TrimSpace(err.Error()) if msg == "" { return "unknown error" } msg = sensitiveValueRegex.ReplaceAllString(msg, "$1:[redacted]") msg = strings.ReplaceAll(msg, "\n", " ") msg = strings.ReplaceAll(msg, "\r", " ") msg = strings.TrimSpace(msg) if len(msg) > 220 { msg = msg[:220] + "..." } return msg } func dedupeWarnings(warnings []string) []string { seen := make(map[string]struct{}) result := []string{} for _, warning := range warnings { clean := strings.TrimSpace(warning) if clean == "" { continue } if _, ok := seen[clean]; ok { continue } seen[clean] = struct{}{} result = append(result, clean) } return result } func directoryExists(path string) bool { info, err := os.Stat(path) return err == nil && info.IsDir() } ================================================ FILE: backend/opencode_project_history.go ================================================ package main import ( "encoding/json" "log" "net/http" "os" "path/filepath" "sort" "strings" "time" ) type openCodeProjectHistoryAttachmentResponse struct { Path string `json:"path"` Name string `json:"name"` Filename string `json:"filename"` SizeBytes int64 `json:"sizeBytes"` MimeType string `json:"mimeType,omitempty"` MediaType string `json:"mediaType,omitempty"` RelativePath string `json:"relativePath,omitempty"` } type openCodeProjectHistoryEntryResponse struct { ID string `json:"id"` Timestamp string `json:"timestamp"` Instructions string `json:"instructions"` TaskType string `json:"taskType"` Status string `json:"status,omitempty"` OutputSummary string `json:"outputSummary,omitempty"` FolderName string `json:"folderName"` MissingAttachmentCount int `json:"missingAttachmentCount,omitempty"` Attachments []openCodeProjectHistoryAttachmentResponse `json:"attachments,omitempty"` } type openCodeProjectHistoryResponse struct { Success bool `json:"success"` Path string `json:"path,omitempty"` Entries []openCodeProjectHistoryEntryResponse `json:"entries,omitempty"` Error string `json:"error,omitempty"` } func openCodeProjectHistoryHandler(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodGet { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } projectPath, err := readProjectPathFromRequest(r) if err != nil { w.WriteHeader(http.StatusBadRequest) writeJSON(w, openCodeProjectHistoryResponse{ Success: false, Error: err.Error(), }) return } normalizedPath, err := normalizeExistingDirectoryPath(projectPath) if err != nil { w.WriteHeader(http.StatusBadRequest) writeJSON(w, openCodeProjectHistoryResponse{ Success: false, Error: err.Error(), }) return } paths := GetProjectPaths(normalizedPath) if _, err := os.Stat(paths.Manifest); os.IsNotExist(err) { w.WriteHeader(http.StatusBadRequest) writeJSON(w, openCodeProjectHistoryResponse{ Success: false, Error: "Not a Glowbom project (missing glowbom.json)", }) return } entries, err := loadProjectHistoryEntries(normalizedPath) if err != nil { w.WriteHeader(http.StatusInternalServerError) writeJSON(w, openCodeProjectHistoryResponse{ Success: false, Path: normalizedPath, Error: err.Error(), }) return } writeJSON(w, openCodeProjectHistoryResponse{ Success: true, Path: normalizedPath, Entries: entries, }) } func loadProjectHistoryEntries(projectPath string) ([]openCodeProjectHistoryEntryResponse, error) { historyRoot := filepath.Join(projectPath, "history") entries, err := os.ReadDir(historyRoot) if err != nil { if os.IsNotExist(err) { return []openCodeProjectHistoryEntryResponse{}, nil } return nil, err } type sortableHistoryEntry struct { entry openCodeProjectHistoryEntryResponse sortTime time.Time folderName string } loaded := make([]sortableHistoryEntry, 0, len(entries)) for _, entry := range entries { if !entry.IsDir() { continue } folderName := strings.TrimSpace(entry.Name()) if folderName == "" { continue } entryDir := filepath.Join(historyRoot, folderName) entryPath := filepath.Join(entryDir, "entry.json") data, err := os.ReadFile(entryPath) if err != nil { if os.IsNotExist(err) { continue } log.Printf("[OPENCODE] Warning: failed reading history entry %s: %v", entryPath, err) continue } var record agentHistoryEntryRecord if err := json.Unmarshal(data, &record); err != nil { log.Printf("[OPENCODE] Warning: failed decoding history entry %s: %v", entryPath, err) continue } sortTime := historyEntrySortTime(record.Timestamp, folderName) timestamp := strings.TrimSpace(record.Timestamp) if timestamp == "" && !sortTime.IsZero() { timestamp = sortTime.UTC().Format(time.RFC3339) } attachments := make([]openCodeProjectHistoryAttachmentResponse, 0, len(record.Attachments)) missingAttachmentCount := 0 for _, attachment := range record.Attachments { filename := strings.TrimSpace(attachment.Filename) if filename == "" { continue } archivedPath := filepath.Join(entryDir, filename) info, statErr := os.Stat(archivedPath) if statErr != nil || info.IsDir() { missingAttachmentCount += 1 continue } sizeBytes := attachment.FileSizeBytes if sizeBytes <= 0 { sizeBytes = info.Size() } mimeType := strings.TrimSpace(attachment.MimeType) if mimeType == "" { mimeType = inferMimeTypeForFilename(filename) } mediaType := strings.TrimSpace(attachment.MediaType) if mediaType == "" { mediaType = inferHistoryMediaType(mimeType, filename) } attachments = append(attachments, openCodeProjectHistoryAttachmentResponse{ Path: archivedPath, Name: filename, Filename: filename, SizeBytes: sizeBytes, MimeType: mimeType, MediaType: mediaType, RelativePath: filepath.ToSlash(filepath.Join("history", folderName, filename)), }) } taskType := strings.TrimSpace(record.TaskType) if taskType == "" { taskType = "refine" } loaded = append(loaded, sortableHistoryEntry{ entry: openCodeProjectHistoryEntryResponse{ ID: strings.TrimSpace(record.ID), Timestamp: timestamp, Instructions: strings.TrimSpace(record.Instructions), TaskType: taskType, Status: normalizeHistoryStatus(record.Status), OutputSummary: strings.TrimSpace(record.OutputSummary), FolderName: folderName, MissingAttachmentCount: missingAttachmentCount, Attachments: attachments, }, sortTime: sortTime, folderName: folderName, }) } sort.Slice(loaded, func(i, j int) bool { left := loaded[i] right := loaded[j] if left.sortTime.Equal(right.sortTime) { return left.folderName > right.folderName } return left.sortTime.After(right.sortTime) }) result := make([]openCodeProjectHistoryEntryResponse, 0, len(loaded)) for _, item := range loaded { result = append(result, item.entry) } return result, nil } func historyEntrySortTime(timestamp string, folderName string) time.Time { trimmedTimestamp := strings.TrimSpace(timestamp) if trimmedTimestamp != "" { if parsed, err := time.Parse(time.RFC3339, trimmedTimestamp); err == nil { return parsed } } prefix := folderName if underscore := strings.Index(prefix, "_"); underscore >= 0 { if second := strings.Index(prefix[underscore+1:], "_"); second >= 0 { prefix = prefix[:underscore+1+second] } } if parsed, err := time.Parse("2006-01-02_150405", prefix); err == nil { return parsed.UTC() } return time.Time{} } ================================================ FILE: backend/opencode_project_open.go ================================================ package main import ( "encoding/json" "errors" "fmt" "net/http" "os" "os/exec" "path/filepath" "runtime" "strings" ) const ( openCodeIDEFinder = "finder" openCodeIDEXcode = "xcode" openCodeIDEAndroidStudio = "android-studio" openCodeIDEVSCode = "vscode" ) type openCodeProjectIDERequest struct { Path string `json:"path"` } type openCodeProjectIDEAction struct { IDE string `json:"ide"` Label string `json:"label"` Available bool `json:"available"` Path string `json:"path,omitempty"` Reason string `json:"reason,omitempty"` } type openCodeProjectIDEStatusResponse struct { Success bool `json:"success"` Path string `json:"path,omitempty"` Actions []openCodeProjectIDEAction `json:"actions,omitempty"` Error string `json:"error,omitempty"` } type openCodeProjectOpenRequest struct { Path string `json:"path"` IDE string `json:"ide"` } type openCodeProjectOpenResponse struct { Success bool `json:"success"` IDE string `json:"ide,omitempty"` OpenedPath string `json:"openedPath,omitempty"` Error string `json:"error,omitempty"` } type openCodeLaunchCommand struct { Executable string Args []string } func openCodeProjectIDEStatusHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method != http.MethodGet && r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } projectPath, err := readProjectPathFromRequest(r) if err != nil { w.WriteHeader(http.StatusBadRequest) _ = json.NewEncoder(w).Encode(openCodeProjectIDEStatusResponse{ Success: false, Error: err.Error(), }) return } normalizedPath, err := normalizeExistingDirectoryPath(projectPath) if err != nil { w.WriteHeader(http.StatusBadRequest) _ = json.NewEncoder(w).Encode(openCodeProjectIDEStatusResponse{ Success: false, Error: err.Error(), }) return } actions := inspectProjectIDEActions(normalizedPath) _ = json.NewEncoder(w).Encode(openCodeProjectIDEStatusResponse{ Success: true, Path: normalizedPath, Actions: actions, }) } func openCodeProjectOpenHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } var req openCodeProjectOpenRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { w.WriteHeader(http.StatusBadRequest) _ = json.NewEncoder(w).Encode(openCodeProjectOpenResponse{ Success: false, Error: "Invalid JSON body", }) return } normalizedPath, err := normalizeExistingDirectoryPath(req.Path) if err != nil { w.WriteHeader(http.StatusBadRequest) _ = json.NewEncoder(w).Encode(openCodeProjectOpenResponse{ Success: false, Error: err.Error(), }) return } ide := strings.TrimSpace(strings.ToLower(req.IDE)) openedPath, openErr := openProjectInIDE(normalizedPath, ide) if openErr != nil { statusCode := http.StatusInternalServerError if isPlatformUnsupportedOpenError(openErr) { statusCode = http.StatusNotImplemented } if errors.Is(openErr, os.ErrNotExist) || strings.Contains(strings.ToLower(openErr.Error()), "not found") { statusCode = http.StatusBadRequest } if strings.Contains(strings.ToLower(openErr.Error()), "unsupported ide") { statusCode = http.StatusBadRequest } w.WriteHeader(statusCode) _ = json.NewEncoder(w).Encode(openCodeProjectOpenResponse{ Success: false, IDE: ide, Error: openErr.Error(), }) return } _ = json.NewEncoder(w).Encode(openCodeProjectOpenResponse{ Success: true, IDE: ide, OpenedPath: openedPath, }) } func readProjectPathFromRequest(r *http.Request) (string, error) { if r.Method == http.MethodGet { path := strings.TrimSpace(r.URL.Query().Get("path")) if path == "" { return "", errors.New("path query parameter required") } return path, nil } var req openCodeProjectIDERequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { return "", errors.New("Invalid JSON body") } path := strings.TrimSpace(req.Path) if path == "" { return "", errors.New("path is required") } return path, nil } func normalizeExistingDirectoryPath(path string) (string, error) { trimmed := strings.TrimSpace(path) if trimmed == "" { return "", errors.New("path is required") } cleaned := filepath.Clean(trimmed) absolute, err := filepath.Abs(cleaned) if err != nil { return "", fmt.Errorf("failed to resolve path: %w", err) } info, err := os.Stat(absolute) if err != nil { if os.IsNotExist(err) { return "", errors.New("project path not found") } return "", fmt.Errorf("failed to access project path: %w", err) } if !info.IsDir() { return "", errors.New("project path must be a directory") } return absolute, nil } func inspectProjectIDEActions(projectPath string) []openCodeProjectIDEAction { return []openCodeProjectIDEAction{ inspectFinderAction(projectPath), inspectXcodeAction(projectPath), inspectAndroidStudioAction(projectPath), inspectVSCodeAction(projectPath), } } func inspectFinderAction(projectPath string) openCodeProjectIDEAction { const label = "Open Folder" if !projectDirectoryExists(projectPath) { return openCodeProjectIDEAction{ IDE: openCodeIDEFinder, Label: label, Available: false, Path: projectPath, Reason: "Project folder not found.", } } if _, ok := folderOpenLaunchCommand(); !ok { return openCodeProjectIDEAction{ IDE: openCodeIDEFinder, Label: label, Available: false, Path: projectPath, Reason: folderOpenUnavailableReason(), } } return openCodeProjectIDEAction{ IDE: openCodeIDEFinder, Label: label, Available: true, Path: projectPath, Reason: folderOpenReason(), } } func inspectXcodeAction(projectPath string) openCodeProjectIDEAction { const label = "Open in Xcode" applePath := destinationPathForProject(projectPath, []string{ "apple", "ios", "ipados", "macos", "visionos", "watchos", "tvos", }, "apple") if runtime.GOOS != "darwin" { return openCodeProjectIDEAction{ IDE: openCodeIDEXcode, Label: label, Available: false, Path: applePath, Reason: "Xcode is only available on macOS.", } } if !projectDirectoryExists(applePath) { return openCodeProjectIDEAction{ IDE: openCodeIDEXcode, Label: label, Available: false, Path: applePath, Reason: "No Apple project output folder found.", } } if workspaceOrProject := preferredXcodePath(applePath); workspaceOrProject != "" { return openCodeProjectIDEAction{ IDE: openCodeIDEXcode, Label: label, Available: true, Path: workspaceOrProject, Reason: "Detected Xcode workspace/project.", } } return openCodeProjectIDEAction{ IDE: openCodeIDEXcode, Label: label, Available: true, Path: applePath, Reason: "No .xcworkspace/.xcodeproj found yet; folder will open.", } } func inspectAndroidStudioAction(projectPath string) openCodeProjectIDEAction { const label = "Open in Android Studio" androidPath := destinationPathForProject(projectPath, []string{ "android", "wearos", "androidtv", "androidauto", }, "android") if !projectDirectoryExists(androidPath) { return openCodeProjectIDEAction{ IDE: openCodeIDEAndroidStudio, Label: label, Available: false, Path: androidPath, Reason: "No Android project output folder found.", } } if _, ok := androidStudioLaunchCommand(); ok { return openCodeProjectIDEAction{ IDE: openCodeIDEAndroidStudio, Label: label, Available: true, Path: androidPath, Reason: "Detected Android Studio launcher for this platform.", } } if _, ok := folderOpenLaunchCommand(); ok { return openCodeProjectIDEAction{ IDE: openCodeIDEAndroidStudio, Label: label, Available: true, Path: androidPath, Reason: "Android Studio launcher not found; folder will open instead.", } } return openCodeProjectIDEAction{ IDE: openCodeIDEAndroidStudio, Label: label, Available: false, Path: androidPath, Reason: "No Android Studio launcher or folder opener found for this platform.", } } func inspectVSCodeAction(projectPath string) openCodeProjectIDEAction { const label = "Open in VS Code" webPath := destinationPathForProject(projectPath, []string{"web"}, "web") if !projectDirectoryExists(webPath) { return openCodeProjectIDEAction{ IDE: openCodeIDEVSCode, Label: label, Available: false, Path: webPath, Reason: "No Web project output folder found.", } } if _, ok := vsCodeLaunchCommand(); ok { return openCodeProjectIDEAction{ IDE: openCodeIDEVSCode, Label: label, Available: true, Path: webPath, Reason: "Detected VS Code launcher for this platform.", } } if _, ok := folderOpenLaunchCommand(); ok { return openCodeProjectIDEAction{ IDE: openCodeIDEVSCode, Label: label, Available: true, Path: webPath, Reason: "VS Code launcher not found; folder will open instead.", } } return openCodeProjectIDEAction{ IDE: openCodeIDEVSCode, Label: label, Available: false, Path: webPath, Reason: "No VS Code launcher or folder opener found for this platform.", } } func destinationPathForProject(projectPath string, outputDirs []string, fallback string) string { for _, dirName := range outputDirs { candidate := filepath.Join(projectPath, dirName) if projectDirectoryExists(candidate) { return candidate } } return filepath.Join(projectPath, fallback) } func preferredXcodePath(basePath string) string { entries, err := os.ReadDir(basePath) if err != nil { return "" } for _, entry := range entries { name := entry.Name() if strings.HasSuffix(name, ".xcworkspace") { return filepath.Join(basePath, name) } } for _, entry := range entries { name := entry.Name() if strings.HasSuffix(name, ".xcodeproj") { return filepath.Join(basePath, name) } } return "" } func projectDirectoryExists(path string) bool { info, err := os.Stat(path) return err == nil && info.IsDir() } func applicationExists(path string) bool { info, err := os.Stat(path) return err == nil && info.IsDir() } func openProjectInIDE(projectPath, ide string) (string, error) { switch ide { case openCodeIDEFinder: return openProjectFolder(projectPath) case openCodeIDEXcode: return openInXcode(projectPath) case openCodeIDEAndroidStudio: return openInAndroidStudio(projectPath) case openCodeIDEVSCode: return openInVSCode(projectPath) default: return "", fmt.Errorf("unsupported IDE: %s", ide) } } func openProjectFolder(projectPath string) (string, error) { if !projectDirectoryExists(projectPath) { return "", errors.New("Project folder not found") } if err := openFolderWithSystemDefault(projectPath); err != nil { return "", err } return projectPath, nil } func openInXcode(projectPath string) (string, error) { if runtime.GOOS != "darwin" { return "", errors.New("Xcode opening is only available on macOS.") } applePath := destinationPathForProject(projectPath, []string{ "apple", "ios", "ipados", "macos", "visionos", "watchos", "tvos", }, "apple") if !projectDirectoryExists(applePath) { return "", errors.New("Apple output folder not found") } openPath := preferredXcodePath(applePath) if openPath == "" { openPath = applePath } if err := runMacOpenCommand(openPath); err != nil { return "", err } return openPath, nil } func openInAndroidStudio(projectPath string) (string, error) { androidPath := destinationPathForProject(projectPath, []string{ "android", "wearos", "androidtv", "androidauto", }, "android") if !projectDirectoryExists(androidPath) { return "", errors.New("Android output folder not found") } if command, ok := androidStudioLaunchCommand(); ok { if err := runLaunchCommand(command, androidPath); err != nil { return "", err } return androidPath, nil } if err := openFolderWithSystemDefault(androidPath); err != nil { return "", err } return androidPath, nil } func openInVSCode(projectPath string) (string, error) { webPath := destinationPathForProject(projectPath, []string{"web"}, "web") if !projectDirectoryExists(webPath) { return "", errors.New("Web output folder not found") } if command, ok := vsCodeLaunchCommand(); ok { if err := runLaunchCommand(command, webPath); err != nil { return "", err } return webPath, nil } if err := openFolderWithSystemDefault(webPath); err != nil { return "", err } return webPath, nil } func runMacOpenWithApp(appPath, targetPath string) error { openExecutable := resolveLaunchExecutable("open") if openExecutable == "" { return errors.New("open command not found") } return runLaunchCommand(openCodeLaunchCommand{ Executable: openExecutable, Args: []string{"-a", appPath}, }, targetPath) } func runMacOpenCommand(targetPath string) error { openExecutable := resolveLaunchExecutable("open") if openExecutable == "" { return errors.New("open command not found") } return runLaunchCommand(openCodeLaunchCommand{ Executable: openExecutable, }, targetPath) } func folderOpenLaunchCommand() (openCodeLaunchCommand, bool) { switch runtime.GOOS { case "darwin": if openExecutable := resolveLaunchExecutable("open"); openExecutable != "" { return openCodeLaunchCommand{Executable: openExecutable}, true } case "windows": if explorerExecutable := resolveLaunchExecutable("explorer.exe"); explorerExecutable != "" { return openCodeLaunchCommand{Executable: explorerExecutable}, true } case "linux": if xdgOpen := resolveLaunchExecutable("xdg-open"); xdgOpen != "" { return openCodeLaunchCommand{Executable: xdgOpen}, true } if gio := resolveLaunchExecutable("gio"); gio != "" { return openCodeLaunchCommand{ Executable: gio, Args: []string{"open"}, }, true } } return openCodeLaunchCommand{}, false } func androidStudioLaunchCommand() (openCodeLaunchCommand, bool) { switch runtime.GOOS { case "darwin": if applicationExists("/Applications/Android Studio.app") { if openExecutable := resolveLaunchExecutable("open"); openExecutable != "" { return openCodeLaunchCommand{ Executable: openExecutable, Args: []string{"-a", "/Applications/Android Studio.app"}, }, true } } case "windows": candidates := []string{"studio64.exe", "studio.exe", "studio64", "studio"} if programFiles := os.Getenv("ProgramFiles"); programFiles != "" { candidates = append(candidates, filepath.Join(programFiles, "Android", "Android Studio", "bin", "studio64.exe"), filepath.Join(programFiles, "Android", "Android Studio", "bin", "studio.exe"), ) } if localAppData := os.Getenv("LocalAppData"); localAppData != "" { candidates = append(candidates, filepath.Join(localAppData, "Programs", "Android Studio", "bin", "studio64.exe"), filepath.Join(localAppData, "Programs", "Android Studio", "bin", "studio.exe"), ) } if executable := firstResolvedExecutable(candidates); executable != "" { return openCodeLaunchCommand{Executable: executable}, true } case "linux": if executable := firstResolvedExecutable([]string{ "android-studio", "studio.sh", "studio", "/opt/android-studio/bin/studio.sh", "/usr/local/android-studio/bin/studio.sh", "/snap/bin/android-studio", }); executable != "" { return openCodeLaunchCommand{Executable: executable}, true } } return openCodeLaunchCommand{}, false } func vsCodeLaunchCommand() (openCodeLaunchCommand, bool) { switch runtime.GOOS { case "darwin": if applicationExists("/Applications/Visual Studio Code.app") { if openExecutable := resolveLaunchExecutable("open"); openExecutable != "" { return openCodeLaunchCommand{ Executable: openExecutable, Args: []string{"-a", "/Applications/Visual Studio Code.app"}, }, true } } case "windows": candidates := []string{"code.cmd", "code.exe", "code"} if localAppData := os.Getenv("LocalAppData"); localAppData != "" { candidates = append(candidates, filepath.Join(localAppData, "Programs", "Microsoft VS Code", "Code.exe"), ) } if programFiles := os.Getenv("ProgramFiles"); programFiles != "" { candidates = append(candidates, filepath.Join(programFiles, "Microsoft VS Code", "Code.exe"), ) } if programFilesX86 := os.Getenv("ProgramFiles(x86)"); programFilesX86 != "" { candidates = append(candidates, filepath.Join(programFilesX86, "Microsoft VS Code", "Code.exe"), ) } if executable := firstResolvedExecutable(candidates); executable != "" { return openCodeLaunchCommand{Executable: executable}, true } case "linux": if executable := firstResolvedExecutable([]string{ "code", "code-insiders", "codium", "code-oss", }); executable != "" { return openCodeLaunchCommand{Executable: executable}, true } } return openCodeLaunchCommand{}, false } func folderOpenReason() string { switch runtime.GOOS { case "darwin": return "Open project folder in Finder." case "windows": return "Open project folder in File Explorer." case "linux": return "Open project folder in your file manager." default: return "Open project folder." } } func folderOpenUnavailableReason() string { switch runtime.GOOS { case "darwin", "windows", "linux": return "No supported folder opener found for this platform." default: return "Project folder opening is not available on this platform." } } func openFolderWithSystemDefault(targetPath string) error { command, ok := folderOpenLaunchCommand() if !ok { return errors.New("Project opening is not available on this platform.") } return runLaunchCommand(command, targetPath) } func runLaunchCommand(command openCodeLaunchCommand, targetPath string) error { args := append([]string{}, command.Args...) args = append(args, targetPath) cmd := exec.Command(command.Executable, args...) output, err := cmd.CombinedOutput() if err != nil { message := strings.TrimSpace(string(output)) if message != "" { return fmt.Errorf("failed to open path: %s", message) } return fmt.Errorf("failed to open path: %w", err) } return nil } func resolveLaunchExecutable(candidate string) string { if strings.TrimSpace(candidate) == "" { return "" } if filepath.IsAbs(candidate) || strings.ContainsAny(candidate, `/\`) { info, err := os.Stat(candidate) if err == nil && !info.IsDir() { return candidate } return "" } resolved, err := exec.LookPath(candidate) if err != nil { return "" } return resolved } func firstResolvedExecutable(candidates []string) string { for _, candidate := range candidates { if executable := resolveLaunchExecutable(candidate); executable != "" { return executable } } return "" } func isPlatformUnsupportedOpenError(err error) bool { message := strings.ToLower(strings.TrimSpace(err.Error())) return strings.Contains(message, "only available on") || strings.Contains(message, "not available on this platform") } ================================================ FILE: backend/opencode_zen.go ================================================ package main import ( "bufio" "bytes" "encoding/json" "errors" "fmt" "io" "net/http" "strings" "time" ) const openCodeZenChatCompletionsURL = "https://opencode.ai/zen/v1/chat/completions" const ( openCodeZenChatMaxTokens = 4096 openCodeZenDrawToCodeMaxTokens = 16384 openCodeZenDefaultTemperature = 0.6 openCodeZenHeaderTimeout = 90 * time.Second ) var openCodeZenHTTPClient = newOpenCodeZenHTTPClient() type openCodeZenAPIError struct { Status int Model string Message string } func (e *openCodeZenAPIError) Error() string { if strings.TrimSpace(e.Message) != "" { return e.Message } return fmt.Sprintf("OpenCode Zen API error (%d) for %s", e.Status, e.Model) } func newOpenCodeZenHTTPClient() *http.Client { if base, ok := http.DefaultTransport.(*http.Transport); ok { transport := base.Clone() transport.ResponseHeaderTimeout = openCodeZenHeaderTimeout return &http.Client{Transport: transport} } return &http.Client{Timeout: openCodeZenHeaderTimeout} } func openCodeZenModelCandidates(modelID string, allowCrossModelFallback bool) []string { normalized := normalizeOpenCodeZenModelID(modelID) candidates := []string{normalized} if allowCrossModelFallback { switch normalized { case "glm-5-free", "minimax-m2.5-free", "big-pickle": // Free-tier fallback that is currently the most stable in practice. candidates = append(candidates, "kimi-k2.5-free") } } seen := make(map[string]struct{}) out := make([]string, 0, len(candidates)) for _, c := range candidates { c = strings.TrimSpace(c) if c == "" { continue } if _, ok := seen[c]; ok { continue } seen[c] = struct{}{} out = append(out, c) } return out } func openCodeZenShouldTryFallbackModel(err error) bool { var apiErr *openCodeZenAPIError if errors.As(err, &apiErr) { switch apiErr.Status { case http.StatusTooManyRequests, http.StatusRequestTimeout, http.StatusBadGateway, http.StatusServiceUnavailable, http.StatusGatewayTimeout: return true } if strings.Contains(strings.ToLower(apiErr.Message), "rate limit") { return true } if strings.Contains(strings.ToLower(apiErr.Message), "timeout") { return true } return false } lower := strings.ToLower(err.Error()) return strings.Contains(lower, "rate limit") || strings.Contains(lower, "timeout") || strings.Contains(lower, "deadline exceeded") || strings.Contains(lower, "temporarily unavailable") } func openCodeZenExtractProviderErrorMessage(bodyText string) string { trimmed := strings.TrimSpace(bodyText) if trimmed == "" { return "" } extractFromObject := func(obj map[string]interface{}) string { if errVal, ok := obj["error"]; ok { switch e := errVal.(type) { case string: if strings.TrimSpace(e) != "" { return strings.TrimSpace(e) } case map[string]interface{}: if msg, ok := e["message"].(string); ok && strings.TrimSpace(msg) != "" { return strings.TrimSpace(msg) } if msg, ok := e["type"].(string); ok && strings.TrimSpace(msg) != "" { return strings.TrimSpace(msg) } } } if msg, ok := obj["message"].(string); ok && strings.TrimSpace(msg) != "" { return strings.TrimSpace(msg) } return "" } lines := strings.Split(trimmed, "\n") for _, rawLine := range lines { line := strings.TrimSpace(rawLine) if line == "" { continue } if strings.HasPrefix(strings.ToLower(line), "data:") { line = strings.TrimSpace(line[5:]) } var obj map[string]interface{} if err := json.Unmarshal([]byte(line), &obj); err == nil { if msg := extractFromObject(obj); msg != "" { return msg } } } var obj map[string]interface{} if err := json.Unmarshal([]byte(trimmed), &obj); err == nil { if msg := extractFromObject(obj); msg != "" { return msg } } if idx := strings.Index(strings.ToLower(trimmed), "\ndata:"); idx >= 0 { trimmed = strings.TrimSpace(trimmed[:idx]) } if len(trimmed) > 400 { return trimmed[:400] + "..." } return trimmed } func openCodeZenStatusError(status int, model, bodyText string) error { providerMessage := openCodeZenExtractProviderErrorMessage(bodyText) if providerMessage == "" { providerMessage = fmt.Sprintf("HTTP %d", status) } lower := strings.ToLower(providerMessage) if status == http.StatusTooManyRequests || strings.Contains(lower, "rate limit") { return &openCodeZenAPIError{ Status: http.StatusTooManyRequests, Model: model, Message: fmt.Sprintf("OpenCode Zen rate limit for %s: %s", model, providerMessage), } } if status == http.StatusUnauthorized || status == http.StatusForbidden { return &openCodeZenAPIError{ Status: status, Model: model, Message: fmt.Sprintf("OpenCode Zen authentication failed for %s: %s", model, providerMessage), } } if status == http.StatusRequestTimeout || status == http.StatusBadGateway || status == http.StatusServiceUnavailable || status == http.StatusGatewayTimeout || strings.Contains(lower, "timeout") { return &openCodeZenAPIError{ Status: status, Model: model, Message: fmt.Sprintf("OpenCode Zen temporary timeout for %s: %s", model, providerMessage), } } return &openCodeZenAPIError{ Status: status, Model: model, Message: fmt.Sprintf("OpenCode Zen API error (%d) for %s: %s", status, model, providerMessage), } } func setOpenCodeZenRequestHeaders(req *http.Request, apiKey string, accept string) { req.Header.Set("Accept", accept) req.Header.Set("Content-Type", "application/json") req.Header.Set("Authorization", "Bearer "+apiKey) } func openCodeZenAPIModelID(modelID string) string { // Zen OpenAI-compatible endpoints expect bare model ids (for example "kimi-k2.5"), // not OpenCode config ids like "opencode/kimi-k2.5". return normalizeOpenCodeZenModelID(modelID) } func callOpenCodeZenDrawToCodeApiFull(imageBase64, userPrompt, template, imageSource, apiKey, openCodeZenModel string) (*R1Response, error) { if strings.TrimSpace(apiKey) == "" { return &R1Response{ AIResponse: "No OpenCode Zen API key provided. Please add your key in Settings.", TokenUsage: map[string]int{"inputTokens": 0, "outputTokens": 0, "totalTokens": 0}, Cost: 0, }, nil } messages := buildOpenCodeZenDrawToCodeMessages(imageBase64, userPrompt, template, imageSource, openCodeZenModel, apiKey) aiResp, inputTokens, outputTokens, err := callOpenCodeZenChatCompletions(messages, apiKey, openCodeZenDrawToCodeMaxTokens, openCodeZenDefaultTemperature, openCodeZenModel, true, true) if err != nil { return nil, err } return &R1Response{ AIResponse: aiResp, TokenUsage: map[string]int{ "inputTokens": inputTokens, "outputTokens": outputTokens, "totalTokens": inputTokens + outputTokens, }, Cost: 0, }, nil } func callOpenCodeZenDrawToCodeStreaming(w http.ResponseWriter, imageBase64, userPrompt, template, imageSource, apiKey, openCodeZenModel string) error { if strings.TrimSpace(apiKey) == "" { return fmt.Errorf("no OpenCode Zen API key provided") } messages := buildOpenCodeZenDrawToCodeMessages(imageBase64, userPrompt, template, imageSource, openCodeZenModel, apiKey) return callOpenCodeZenChatCompletionsStreaming(w, messages, apiKey, openCodeZenDrawToCodeMaxTokens, openCodeZenDefaultTemperature, openCodeZenModel, true, true) } func callOpenCodeZenApiGo(prevMsgs []ChatMessage, newMsg, apiKey, openCodeZenModel, attachmentBase64, attachmentMime string) (*R1Response, error) { if strings.TrimSpace(apiKey) == "" { return &R1Response{ AIResponse: "No OpenCode Zen API key provided. Please add your key in Settings.", TokenUsage: map[string]int{"inputTokens": 0, "outputTokens": 0, "totalTokens": 0}, Cost: 0, }, nil } messages := buildOpenCodeZenChatMessages(prevMsgs, newMsg, openCodeZenModel, attachmentBase64, attachmentMime) aiResp, inputTokens, outputTokens, err := callOpenCodeZenChatCompletions(messages, apiKey, openCodeZenChatMaxTokens, openCodeZenDefaultTemperature, openCodeZenModel, false, false) if err != nil { return nil, err } return &R1Response{ AIResponse: aiResp, TokenUsage: map[string]int{ "inputTokens": inputTokens, "outputTokens": outputTokens, "totalTokens": inputTokens + outputTokens, }, Cost: 0, }, nil } func callOpenCodeZenChatStreaming(w http.ResponseWriter, prevMsgs []ChatMessage, newMsg, apiKey, openCodeZenModel, attachmentBase64, attachmentMime string) error { if strings.TrimSpace(apiKey) == "" { return fmt.Errorf("no OpenCode Zen API key provided") } messages := buildOpenCodeZenChatMessages(prevMsgs, newMsg, openCodeZenModel, attachmentBase64, attachmentMime) return callOpenCodeZenChatCompletionsStreaming(w, messages, apiKey, openCodeZenChatMaxTokens, openCodeZenDefaultTemperature, openCodeZenModel, false, false) } func buildOpenCodeZenChatMessages(prevMsgs []ChatMessage, newMsg, openCodeZenModel, attachmentBase64, attachmentMime string) []map[string]interface{} { systemMsg := defaultSystemPrompt for _, m := range prevMsgs { if m.Role == "system" { systemMsg = m.Content } } messages := []map[string]interface{}{ { "role": "system", "content": systemMsg, }, } for _, m := range prevMsgs { if m.Role == "user" || m.Role == "assistant" { messages = append(messages, map[string]interface{}{ "role": m.Role, "content": m.Content, }) } } userContent := interface{}(newMsg) trimmedAttachment := strings.TrimSpace(attachmentBase64) trimmedMime := strings.TrimSpace(attachmentMime) if trimmedAttachment != "" && trimmedMime != "" { resolvedModel := normalizeOpenCodeZenModelID(openCodeZenModel) if openCodeZenModelSupportsImageInput(resolvedModel) && strings.HasPrefix(strings.ToLower(trimmedMime), "image/") { userContent = []interface{}{ map[string]interface{}{ "type": "text", "text": newMsg, }, map[string]interface{}{ "type": "image_url", "image_url": map[string]interface{}{ "url": openCodeZenAttachmentDataURI(trimmedAttachment, trimmedMime), }, }, } fmt.Printf("[OpenCode Zen DEBUG] inline image attachment enabled model=%s mime=%s\n", resolvedModel, trimmedMime) } else { fmt.Printf("[OpenCode Zen DEBUG] attachment ignored for model=%s mime=%q\n", resolvedModel, trimmedMime) } } messages = append(messages, map[string]interface{}{ "role": "user", "content": userContent, }) return messages } func callOpenCodeZenChatCompletions(messages []map[string]interface{}, apiKey string, maxTokens int, temperature float64, openCodeZenModel string, enforceNoEmbeddedImageData bool, allowCrossModelFallback bool) (string, int, int, error) { candidates := openCodeZenModelCandidates(openCodeZenModel, allowCrossModelFallback) var lastErr error for idx, candidate := range candidates { content, inputTokens, outputTokens, err := callOpenCodeZenChatCompletionsSingle(messages, apiKey, maxTokens, temperature, candidate, enforceNoEmbeddedImageData) if err == nil { if idx > 0 { fmt.Printf("[OpenCode Zen] fallback model used original=%s fallback=%s\n", normalizeOpenCodeZenModelID(openCodeZenModel), candidate) } return content, inputTokens, outputTokens, nil } lastErr = err if idx < len(candidates)-1 && openCodeZenShouldTryFallbackModel(err) { fmt.Printf("[OpenCode Zen WARN] model=%s failed (%v); trying fallback model=%s\n", candidate, err, candidates[idx+1]) continue } return "", 0, 0, err } if lastErr == nil { lastErr = fmt.Errorf("OpenCode Zen request failed") } return "", 0, 0, lastErr } func callOpenCodeZenChatCompletionsSingle(messages []map[string]interface{}, apiKey string, maxTokens int, temperature float64, zenModelToUse string, enforceNoEmbeddedImageData bool) (string, int, int, error) { resolvedModel := normalizeOpenCodeZenModelID(zenModelToUse) apiModel := openCodeZenAPIModelID(resolvedModel) hasImage := openCodeZenMessagesContainImage(messages) logOpenCodeZenRequestSummary(apiModel, false, hasImage, maxTokens, messages) reqBody := map[string]interface{}{ "model": apiModel, "max_tokens": maxTokens, "temperature": temperature, "messages": messages, } if prettyBody, err := json.MarshalIndent(reqBody, "", " "); err == nil { fmt.Printf("[OpenCode Zen DEBUG] request body stream=false >>>\n%s\n<<< END OpenCode Zen request body\n", string(prettyBody)) } jsonBytes, _ := json.Marshal(reqBody) req, err := http.NewRequest("POST", openCodeZenChatCompletionsURL, bytes.NewReader(jsonBytes)) if err != nil { return "", 0, 0, err } setOpenCodeZenRequestHeaders(req, apiKey, "application/json") resp, err := openCodeZenHTTPClient.Do(req) if err != nil { return "", 0, 0, err } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { body, _ := io.ReadAll(resp.Body) bodyText := strings.TrimSpace(string(body)) fmt.Printf("[OpenCode Zen ERROR] model=%s stream=false status=%d hasImage=%v body=%s\n", apiModel, resp.StatusCode, hasImage, truncateForLog(bodyText)) return "", 0, 0, openCodeZenStatusError(resp.StatusCode, apiModel, bodyText) } var completion struct { Error interface{} `json:"error"` Choices []struct { Message struct { Content interface{} `json:"content"` ReasoningContent interface{} `json:"reasoning_content"` Reasoning interface{} `json:"reasoning"` } `json:"message"` ReasoningContent interface{} `json:"reasoning_content"` Reasoning interface{} `json:"reasoning"` FinishReason interface{} `json:"finish_reason"` } `json:"choices"` Usage struct { PromptTokens int `json:"prompt_tokens"` CompletionTokens int `json:"completion_tokens"` } `json:"usage"` } if err := json.NewDecoder(resp.Body).Decode(&completion); err != nil { return "", 0, 0, fmt.Errorf("failed to parse OpenCode Zen response: %w", err) } if len(completion.Choices) == 0 { if completion.Error != nil { raw, _ := json.Marshal(map[string]interface{}{"error": completion.Error}) return "", 0, 0, openCodeZenStatusError(http.StatusBadGateway, apiModel, string(raw)) } return "", 0, 0, fmt.Errorf("no choices in OpenCode Zen response") } content := fireworkContentToText(completion.Choices[0].Message.Content) reasoning := fireworkContentToText(completion.Choices[0].Message.ReasoningContent) if strings.TrimSpace(reasoning) == "" { reasoning = fireworkContentToText(completion.Choices[0].ReasoningContent) } if strings.TrimSpace(reasoning) == "" { reasoning = openRouterReasoningToText(completion.Choices[0].Message.Reasoning) } if strings.TrimSpace(reasoning) == "" { reasoning = openRouterReasoningToText(completion.Choices[0].Reasoning) } if !enforceNoEmbeddedImageData && strings.TrimSpace(reasoning) != "" { content = "" + strings.TrimSpace(reasoning) + "" + content } if enforceNoEmbeddedImageData { content = normalizeFireworksDrawToCodeOutput(content) if reason, blocked := detectFireworksEmbeddedImagePayload(content); blocked { return "", 0, 0, embeddedImagePayloadError(reason) } } finishReason := normalizeFinishReason(completion.Choices[0].FinishReason) if finishReason != "" { fmt.Printf("[OpenCode Zen] completion finish_reason=%s model=%s stream=false\n", finishReason, apiModel) } if strings.EqualFold(finishReason, "length") { fmt.Printf("[OpenCode Zen WARN] completion reached max_tokens=%d model=%s stream=false\n", maxTokens, apiModel) } inputTokens := completion.Usage.PromptTokens outputTokens := completion.Usage.CompletionTokens if inputTokens == 0 && outputTokens == 0 { inputTokens = estimateTokenCountForMessages(messages) outputTokens = estimateTokenCount(content) } return content, inputTokens, outputTokens, nil } func callOpenCodeZenChatCompletionsStreaming(w http.ResponseWriter, messages []map[string]interface{}, apiKey string, maxTokens int, temperature float64, openCodeZenModel string, enforceNoEmbeddedImageData bool, allowCrossModelFallback bool) error { candidates := openCodeZenModelCandidates(openCodeZenModel, allowCrossModelFallback) var lastErr error for idx, candidate := range candidates { err := callOpenCodeZenChatCompletionsStreamingSingle(w, messages, apiKey, maxTokens, temperature, candidate, enforceNoEmbeddedImageData) if err == nil { if idx > 0 { fmt.Printf("[OpenCode Zen] fallback model used original=%s fallback=%s\n", normalizeOpenCodeZenModelID(openCodeZenModel), candidate) } return nil } lastErr = err if idx < len(candidates)-1 && openCodeZenShouldTryFallbackModel(err) { fmt.Printf("[OpenCode Zen WARN] stream model=%s failed (%v); trying fallback model=%s\n", candidate, err, candidates[idx+1]) continue } return err } if lastErr == nil { lastErr = fmt.Errorf("OpenCode Zen stream request failed") } return lastErr } func callOpenCodeZenChatCompletionsStreamingSingle(w http.ResponseWriter, messages []map[string]interface{}, apiKey string, maxTokens int, temperature float64, zenModelToUse string, enforceNoEmbeddedImageData bool) error { resolvedModel := normalizeOpenCodeZenModelID(zenModelToUse) apiModel := openCodeZenAPIModelID(resolvedModel) hasImage := openCodeZenMessagesContainImage(messages) logOpenCodeZenRequestSummary(apiModel, true, hasImage, maxTokens, messages) reqBody := map[string]interface{}{ "model": apiModel, "max_tokens": maxTokens, "temperature": temperature, "messages": messages, "stream": true, } if prettyBody, err := json.MarshalIndent(reqBody, "", " "); err == nil { fmt.Printf("[OpenCode Zen DEBUG] request body stream=true >>>\n%s\n<<< END OpenCode Zen request body\n", string(prettyBody)) } jsonBytes, _ := json.Marshal(reqBody) req, err := http.NewRequest("POST", openCodeZenChatCompletionsURL, bytes.NewReader(jsonBytes)) if err != nil { return err } setOpenCodeZenRequestHeaders(req, apiKey, "text/event-stream, application/json") resp, err := openCodeZenHTTPClient.Do(req) if err != nil { return err } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { body, _ := io.ReadAll(resp.Body) bodyText := strings.TrimSpace(string(body)) fmt.Printf("[OpenCode Zen ERROR] model=%s stream=true status=%d hasImage=%v body=%s\n", apiModel, resp.StatusCode, hasImage, truncateForLog(bodyText)) return openCodeZenStatusError(resp.StatusCode, apiModel, bodyText) } contentType := strings.ToLower(strings.TrimSpace(resp.Header.Get("Content-Type"))) fmt.Printf("[OpenCode Zen] stream response model=%s hasImage=%v contentType=%q\n", apiModel, hasImage, contentType) if !strings.Contains(contentType, "text/event-stream") { body, _ := io.ReadAll(resp.Body) bodyText := strings.TrimSpace(string(body)) fmt.Printf("[OpenCode Zen] stream fallback model=%s hasImage=%v contentType=%q body=%s\n", apiModel, hasImage, contentType, truncateForLog(bodyText)) var completion struct { Error interface{} `json:"error"` Choices []struct { Message struct { Content interface{} `json:"content"` ReasoningContent interface{} `json:"reasoning_content"` Reasoning interface{} `json:"reasoning"` } `json:"message"` ReasoningContent interface{} `json:"reasoning_content"` Reasoning interface{} `json:"reasoning"` FinishReason interface{} `json:"finish_reason"` } `json:"choices"` Usage struct { PromptTokens int `json:"prompt_tokens"` CompletionTokens int `json:"completion_tokens"` } `json:"usage"` } if err := json.Unmarshal(body, &completion); err != nil { return fmt.Errorf("OpenCode Zen stream fallback parse error: %w", err) } if len(completion.Choices) == 0 { if completion.Error != nil { raw, _ := json.Marshal(map[string]interface{}{"error": completion.Error}) return openCodeZenStatusError(http.StatusBadGateway, apiModel, string(raw)) } return fmt.Errorf("OpenCode Zen stream fallback returned no choices") } content := fireworkContentToText(completion.Choices[0].Message.Content) reasoning := fireworkContentToText(completion.Choices[0].Message.ReasoningContent) if strings.TrimSpace(reasoning) == "" { reasoning = fireworkContentToText(completion.Choices[0].ReasoningContent) } if strings.TrimSpace(reasoning) == "" { reasoning = openRouterReasoningToText(completion.Choices[0].Message.Reasoning) } if strings.TrimSpace(reasoning) == "" { reasoning = openRouterReasoningToText(completion.Choices[0].Reasoning) } if !enforceNoEmbeddedImageData && strings.TrimSpace(reasoning) != "" { content = "" + strings.TrimSpace(reasoning) + "" + content } if enforceNoEmbeddedImageData { content = normalizeFireworksDrawToCodeOutput(content) if reason, blocked := detectFireworksEmbeddedImagePayload(content); blocked { return embeddedImagePayloadError(reason) } } if strings.TrimSpace(content) == "" { return fmt.Errorf("OpenCode Zen stream fallback returned empty content") } if err := emitFireworksStreamChunk(w, content); err != nil { return err } finishReason := "" if len(completion.Choices) > 0 { finishReason = normalizeFinishReason(completion.Choices[0].FinishReason) } if strings.EqualFold(finishReason, "length") { fmt.Printf("[OpenCode Zen WARN] stream fallback reached max_tokens=%d model=%s\n", maxTokens, apiModel) } promptTokens := completion.Usage.PromptTokens completionTokens := completion.Usage.CompletionTokens if promptTokens == 0 && completionTokens == 0 { promptTokens = estimateTokenCountForMessages(messages) completionTokens = estimateTokenCount(content) } return emitFireworksStreamDone(w, promptTokens, completionTokens) } reader := bufio.NewReader(resp.Body) var responseBuilder strings.Builder promptTokens := 0 completionTokens := 0 dataEvents := 0 parseErrors := 0 finishReasonLength := false seenFinishReason := "" rollingTail := "" normalizedEmitted := 0 var reasoningBuilder strings.Builder var reasoningSent bool var reasoningStartTimeSet bool var reasoningStartTimestamp int64 var reasoningDurationSent bool lastThinkingStep := "" for { line, err := reader.ReadString('\n') if len(line) > 0 { trimmedLine := strings.TrimSpace(line) if strings.HasPrefix(trimmedLine, "data:") { dataEvents++ dataStr := strings.TrimSpace(trimmedLine[5:]) if dataStr == "" { continue } if dataStr == "[DONE]" { break } var chunk struct { Choices []struct { Delta struct { Content interface{} `json:"content"` ReasoningContent interface{} `json:"reasoning_content"` Reasoning interface{} `json:"reasoning"` } `json:"delta"` Message struct { Content interface{} `json:"content"` ReasoningContent interface{} `json:"reasoning_content"` Reasoning interface{} `json:"reasoning"` } `json:"message"` ReasoningContent interface{} `json:"reasoning_content"` Reasoning interface{} `json:"reasoning"` FinishReason interface{} `json:"finish_reason"` } `json:"choices"` Usage struct { PromptTokens int `json:"prompt_tokens"` CompletionTokens int `json:"completion_tokens"` } `json:"usage"` } if unmarshalErr := json.Unmarshal([]byte(dataStr), &chunk); unmarshalErr != nil { parseErrors++ if parseErrors <= 3 { fmt.Printf("[OpenCode Zen WARN] stream chunk parse failed model=%s hasImage=%v err=%v raw=%s\n", apiModel, hasImage, unmarshalErr, truncateForLog(dataStr)) } continue } if chunk.Usage.PromptTokens > 0 { promptTokens = chunk.Usage.PromptTokens completionTokens = chunk.Usage.CompletionTokens } if len(chunk.Choices) == 0 { continue } reasoningChunk := fireworkContentToText(chunk.Choices[0].Delta.ReasoningContent) if strings.TrimSpace(reasoningChunk) == "" { reasoningChunk = fireworkContentToText(chunk.Choices[0].Message.ReasoningContent) } if strings.TrimSpace(reasoningChunk) == "" { reasoningChunk = fireworkContentToText(chunk.Choices[0].ReasoningContent) } if strings.TrimSpace(reasoningChunk) == "" { reasoningChunk = openRouterReasoningToText(chunk.Choices[0].Delta.Reasoning) } if strings.TrimSpace(reasoningChunk) == "" { reasoningChunk = openRouterReasoningToText(chunk.Choices[0].Message.Reasoning) } if strings.TrimSpace(reasoningChunk) == "" { reasoningChunk = openRouterReasoningToText(chunk.Choices[0].Reasoning) } if !enforceNoEmbeddedImageData && strings.TrimSpace(reasoningChunk) != "" { if !reasoningStartTimeSet { reasoningStartTimeSet = true reasoningStartTimestamp = time.Now().UnixMilli() placeholderStep := "Thinking..." thinkingStepData := map[string]string{"thinkingStep": placeholderStep} thinkingStepBytes, _ := json.Marshal(thinkingStepData) fmt.Fprintf(w, "data: %s\n\n", thinkingStepBytes) if f, ok := w.(http.Flusher); ok { f.Flush() } lastThinkingStep = placeholderStep } reasoningBuilder.WriteString(reasoningChunk) stepTitle := extractFireworksThinkingStepTitle(reasoningBuilder.String()) if isMeaningfulThinkingStepTitle(stepTitle) && stepTitle != lastThinkingStep { thinkingStepData := map[string]string{"thinkingStep": stepTitle} thinkingStepBytes, _ := json.Marshal(thinkingStepData) fmt.Fprintf(w, "data: %s\n\n", thinkingStepBytes) if f, ok := w.(http.Flusher); ok { f.Flush() } lastThinkingStep = stepTitle } } reason := normalizeFinishReason(chunk.Choices[0].FinishReason) if reason != "" { seenFinishReason = reason if strings.EqualFold(reason, "length") { finishReasonLength = true } } content := fireworkContentToText(chunk.Choices[0].Delta.Content) if strings.TrimSpace(content) == "" { content = fireworkContentToText(chunk.Choices[0].Message.Content) } if strings.TrimSpace(content) == "" { continue } if !enforceNoEmbeddedImageData && !reasoningSent && reasoningBuilder.Len() > 0 { thinkingText := "" + strings.TrimSpace(reasoningBuilder.String()) + "" if err := emitFireworksStreamChunk(w, thinkingText); err != nil { return err } reasoningSent = true } if enforceNoEmbeddedImageData { candidate := rollingTail + content if reason, blocked := detectFireworksEmbeddedImagePayload(candidate); blocked { return embeddedImagePayloadError(reason) } if len(candidate) > 4096 { rollingTail = candidate[len(candidate)-4096:] } else { rollingTail = candidate } } responseBuilder.WriteString(content) chunkToEmit := content if enforceNoEmbeddedImageData { normalizedCurrent := normalizeFireworksDrawToCodeOutput(responseBuilder.String()) safeLen := len(normalizedCurrent) - fireworksStreamNormalizeHoldback if safeLen < 0 { safeLen = 0 } if safeLen > normalizedEmitted { chunkToEmit = normalizedCurrent[normalizedEmitted:safeLen] normalizedEmitted = safeLen } else { chunkToEmit = "" } } if chunkToEmit != "" { if err := emitFireworksStreamChunk(w, chunkToEmit); err != nil { return err } } if !enforceNoEmbeddedImageData && !reasoningDurationSent && reasoningStartTimeSet { durationSeconds := float64(time.Now().UnixMilli()-reasoningStartTimestamp) / 1000.0 metaData := map[string]interface{}{ "meta": map[string]float64{ "thinkingSeconds": durationSeconds, }, } metaBytes, _ := json.Marshal(metaData) fmt.Fprintf(w, "data: %s\n\n", metaBytes) if f, ok := w.(http.Flusher); ok { f.Flush() } reasoningDurationSent = true } } } if err != nil { if err == io.EOF { break } return err } } finalContent := responseBuilder.String() if enforceNoEmbeddedImageData { finalContent = normalizeFireworksDrawToCodeOutput(finalContent) if normalizedEmitted < len(finalContent) { if err := emitFireworksStreamChunk(w, finalContent[normalizedEmitted:]); err != nil { return err } normalizedEmitted = len(finalContent) } responseBuilder.Reset() responseBuilder.WriteString(finalContent) } if promptTokens == 0 && completionTokens == 0 { promptTokens = estimateTokenCountForMessages(messages) completionTokens = estimateTokenCount(responseBuilder.String()) } if strings.TrimSpace(responseBuilder.String()) == "" { return fmt.Errorf("OpenCode Zen stream ended without content (model=%s, hasImage=%v, events=%d)", apiModel, hasImage, dataEvents) } if !enforceNoEmbeddedImageData && !reasoningDurationSent && reasoningStartTimeSet { durationSeconds := float64(time.Now().UnixMilli()-reasoningStartTimestamp) / 1000.0 metaData := map[string]interface{}{ "meta": map[string]float64{ "thinkingSeconds": durationSeconds, }, } metaBytes, _ := json.Marshal(metaData) fmt.Fprintf(w, "data: %s\n\n", metaBytes) if f, ok := w.(http.Flusher); ok { f.Flush() } } if enforceNoEmbeddedImageData { if reason, blocked := detectFireworksEmbeddedImagePayload(responseBuilder.String()); blocked { return embeddedImagePayloadError(reason) } } if seenFinishReason != "" { fmt.Printf("[OpenCode Zen] stream finish_reason=%s model=%s\n", seenFinishReason, apiModel) } if finishReasonLength { fmt.Printf("[OpenCode Zen WARN] stream reached max_tokens=%d model=%s\n", maxTokens, apiModel) } fmt.Printf("[OpenCode Zen] stream complete model=%s hasImage=%v events=%d parseErrors=%d chars=%d\n", apiModel, hasImage, dataEvents, parseErrors, responseBuilder.Len()) return emitFireworksStreamDone(w, promptTokens, completionTokens) } func openCodeZenMessagesContainImage(messages []map[string]interface{}) bool { for _, msg := range messages { content, ok := msg["content"] if !ok { continue } parts, ok := content.([]interface{}) if !ok { continue } for _, part := range parts { partMap, ok := part.(map[string]interface{}) if !ok { continue } if partType, _ := partMap["type"].(string); strings.EqualFold(partType, "image_url") { return true } } } return false } func openCodeZenModelSupportsImageInput(modelID string) bool { resolved := strings.ToLower(strings.TrimSpace(normalizeOpenCodeZenModelID(modelID))) switch resolved { case "kimi-k2.5", "kimi-k2.5-free": return true default: return false } } func openCodeZenAttachmentDataURI(attachmentBase64, attachmentMime string) string { trimmed := strings.TrimSpace(attachmentBase64) if strings.HasPrefix(strings.ToLower(trimmed), "data:") { return trimmed } mime := strings.TrimSpace(attachmentMime) if mime == "" { mime = "image/jpeg" } return fmt.Sprintf("data:%s;base64,%s", mime, trimmed) } func buildOpenCodeZenDrawToCodeMessages(imageBase64, userPrompt, template, imageSource, openCodeZenModel, apiKey string) []map[string]interface{} { effectiveImageSource := imageSource if !strings.EqualFold(strings.TrimSpace(effectiveImageSource), "Glowby Images") { effectiveImageSource = "Glowby Images" fmt.Printf("[OpenCode Zen DEBUG] forcing imageSource to Glowby Images for safe placeholder output (was=%q)\n", imageSource) } resolvedModel := normalizeOpenCodeZenModelID(openCodeZenModel) systemPrompt := getSystemPrompt(template, effectiveImageSource) systemPrompt += " Replace @tailwind placeholders with the Tailwind CSS CDN link to load the real framework." systemPrompt += " Glowby Images mode is strict: NEVER embed image bytes in output. NEVER output data: URIs, base64 blobs, blob: URLs, object URLs, or inline binary arrays." systemPrompt += " Use glowbyimage: placeholders ONLY. Every must start with src='about:blank', then JavaScript assigns .src from a glowbyimage variable." systemPrompt += " If you are uncertain about an image, create another descriptive glowbyimage: placeholder instead of embedding bytes." systemPrompt += " Return a COMPLETE, valid HTML document from through . Never truncate output." systemPrompt += " Do NOT minify. Format output for humans with consistent indentation and spacing in CSS/JS (example: transition: all 0.3s ease; and color stops like #1a1a2e 0%)." systemPrompt += " Never put JavaScript code on the same line as // comments. If comments are used, they must be standalone lines." systemPrompt += " Glowby image wiring contract: in one plain

    Profile Information

    Profile Photo Placeholder
    ================================================ FILE: legacy/app/ios/.gitignore ================================================ *.mode1v3 *.mode2v3 *.moved-aside *.pbxuser *.perspectivev3 **/*sync/ .sconsign.dblite .tags* **/.vagrant/ **/DerivedData/ Icon? **/Pods/ **/.symlinks/ profile xcuserdata **/.generated/ Flutter/App.framework Flutter/Flutter.framework Flutter/Flutter.podspec Flutter/Generated.xcconfig Flutter/app.flx Flutter/app.zip Flutter/flutter_assets/ Flutter/flutter_export_environment.sh ServiceDefinitions.json Runner/GeneratedPluginRegistrant.* # Exceptions to above rules. !default.mode1v3 !default.mode2v3 !default.pbxuser !default.perspectivev3 ================================================ FILE: legacy/app/ios/Flutter/.last_build_id ================================================ 9d7ae77f231555adfd08a323be129284 ================================================ FILE: legacy/app/ios/Flutter/AppFrameworkInfo.plist ================================================ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleExecutable App CFBundleIdentifier io.flutter.flutter.app CFBundleInfoDictionaryVersion 6.0 CFBundleName App CFBundlePackageType FMWK CFBundleShortVersionString 1.0 CFBundleSignature ???? CFBundleVersion 1.0 MinimumOSVersion 14.0 ================================================ FILE: legacy/app/ios/Flutter/Debug.xcconfig ================================================ #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Generated.xcconfig" ================================================ FILE: legacy/app/ios/Flutter/Release.xcconfig ================================================ #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Generated.xcconfig" ================================================ FILE: legacy/app/ios/Podfile ================================================ # Uncomment this line to define a global platform for your project # platform :ios, '12.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' project 'Runner', { 'Debug' => :debug, 'Profile' => :release, 'Release' => :release, } def flutter_root generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) unless File.exist?(generated_xcode_build_settings_path) raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" end File.foreach(generated_xcode_build_settings_path) do |line| matches = line.match(/FLUTTER_ROOT\=(.*)/) return matches[1].strip if matches end raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" end require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) flutter_ios_podfile_setup target 'Runner' do use_frameworks! use_modular_headers! flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) end post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) end end ================================================ FILE: legacy/app/ios/Runner/AppDelegate.swift ================================================ import UIKit import Flutter @UIApplicationMain @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } } ================================================ FILE: legacy/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json ================================================ { "images" : [ { "filename" : "40.png", "idiom" : "iphone", "scale" : "2x", "size" : "20x20" }, { "filename" : "60.png", "idiom" : "iphone", "scale" : "3x", "size" : "20x20" }, { "filename" : "29.png", "idiom" : "iphone", "scale" : "1x", "size" : "29x29" }, { "filename" : "58.png", "idiom" : "iphone", "scale" : "2x", "size" : "29x29" }, { "filename" : "87.png", "idiom" : "iphone", "scale" : "3x", "size" : "29x29" }, { "filename" : "80.png", "idiom" : "iphone", "scale" : "2x", "size" : "40x40" }, { "filename" : "120.png", "idiom" : "iphone", "scale" : "3x", "size" : "40x40" }, { "filename" : "57.png", "idiom" : "iphone", "scale" : "1x", "size" : "57x57" }, { "filename" : "114.png", "idiom" : "iphone", "scale" : "2x", "size" : "57x57" }, { "filename" : "120.png", "idiom" : "iphone", "scale" : "2x", "size" : "60x60" }, { "filename" : "180.png", "idiom" : "iphone", "scale" : "3x", "size" : "60x60" }, { "filename" : "20.png", "idiom" : "ipad", "scale" : "1x", "size" : "20x20" }, { "filename" : "40.png", "idiom" : "ipad", "scale" : "2x", "size" : "20x20" }, { "filename" : "29.png", "idiom" : "ipad", "scale" : "1x", "size" : "29x29" }, { "filename" : "58.png", "idiom" : "ipad", "scale" : "2x", "size" : "29x29" }, { "filename" : "40.png", "idiom" : "ipad", "scale" : "1x", "size" : "40x40" }, { "filename" : "80.png", "idiom" : "ipad", "scale" : "2x", "size" : "40x40" }, { "filename" : "50.png", "idiom" : "ipad", "scale" : "1x", "size" : "50x50" }, { "filename" : "100.png", "idiom" : "ipad", "scale" : "2x", "size" : "50x50" }, { "filename" : "72.png", "idiom" : "ipad", "scale" : "1x", "size" : "72x72" }, { "filename" : "144.png", "idiom" : "ipad", "scale" : "2x", "size" : "72x72" }, { "filename" : "76.png", "idiom" : "ipad", "scale" : "1x", "size" : "76x76" }, { "filename" : "152.png", "idiom" : "ipad", "scale" : "2x", "size" : "76x76" }, { "filename" : "167.png", "idiom" : "ipad", "scale" : "2x", "size" : "83.5x83.5" }, { "filename" : "1024.png", "idiom" : "ios-marketing", "scale" : "1x", "size" : "1024x1024" }, { "filename" : "16.png", "idiom" : "mac", "scale" : "1x", "size" : "16x16" }, { "filename" : "32.png", "idiom" : "mac", "scale" : "2x", "size" : "16x16" }, { "filename" : "32.png", "idiom" : "mac", "scale" : "1x", "size" : "32x32" }, { "filename" : "64.png", "idiom" : "mac", "scale" : "2x", "size" : "32x32" }, { "filename" : "128.png", "idiom" : "mac", "scale" : "1x", "size" : "128x128" }, { "filename" : "256.png", "idiom" : "mac", "scale" : "2x", "size" : "128x128" }, { "filename" : "256.png", "idiom" : "mac", "scale" : "1x", "size" : "256x256" }, { "filename" : "512.png", "idiom" : "mac", "scale" : "2x", "size" : "256x256" }, { "filename" : "512.png", "idiom" : "mac", "scale" : "1x", "size" : "512x512" }, { "filename" : "1024.png", "idiom" : "mac", "scale" : "2x", "size" : "512x512" }, { "filename" : "48.png", "idiom" : "watch", "role" : "notificationCenter", "scale" : "2x", "size" : "24x24", "subtype" : "38mm" }, { "filename" : "55.png", "idiom" : "watch", "role" : "notificationCenter", "scale" : "2x", "size" : "27.5x27.5", "subtype" : "42mm" }, { "filename" : "58.png", "idiom" : "watch", "role" : "companionSettings", "scale" : "2x", "size" : "29x29" }, { "filename" : "87.png", "idiom" : "watch", "role" : "companionSettings", "scale" : "3x", "size" : "29x29" }, { "filename" : "66.png", "idiom" : "watch", "role" : "notificationCenter", "scale" : "2x", "size" : "33x33", "subtype" : "45mm" }, { "filename" : "80.png", "idiom" : "watch", "role" : "appLauncher", "scale" : "2x", "size" : "40x40", "subtype" : "38mm" }, { "filename" : "88.png", "idiom" : "watch", "role" : "appLauncher", "scale" : "2x", "size" : "44x44", "subtype" : "40mm" }, { "filename" : "92.png", "idiom" : "watch", "role" : "appLauncher", "scale" : "2x", "size" : "46x46", "subtype" : "41mm" }, { "filename" : "100.png", "idiom" : "watch", "role" : "appLauncher", "scale" : "2x", "size" : "50x50", "subtype" : "44mm" }, { "filename" : "102.png", "idiom" : "watch", "role" : "appLauncher", "scale" : "2x", "size" : "51x51", "subtype" : "45mm" }, { "filename" : "108 1.png", "idiom" : "watch", "role" : "appLauncher", "scale" : "2x", "size" : "54x54", "subtype" : "49mm" }, { "filename" : "172.png", "idiom" : "watch", "role" : "quickLook", "scale" : "2x", "size" : "86x86", "subtype" : "38mm" }, { "filename" : "196.png", "idiom" : "watch", "role" : "quickLook", "scale" : "2x", "size" : "98x98", "subtype" : "42mm" }, { "filename" : "216.png", "idiom" : "watch", "role" : "quickLook", "scale" : "2x", "size" : "108x108", "subtype" : "44mm" }, { "filename" : "234.png", "idiom" : "watch", "role" : "quickLook", "scale" : "2x", "size" : "117x117", "subtype" : "45mm" }, { "filename" : "258.png", "idiom" : "watch", "role" : "quickLook", "scale" : "2x", "size" : "129x129", "subtype" : "49mm" }, { "filename" : "1024 1.png", "idiom" : "watch-marketing", "scale" : "1x", "size" : "1024x1024" } ], "info" : { "author" : "xcode", "version" : 1 } } ================================================ FILE: legacy/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json ================================================ { "images" : [ { "idiom" : "universal", "filename" : "LaunchImage.png", "scale" : "1x" }, { "idiom" : "universal", "filename" : "LaunchImage@2x.png", "scale" : "2x" }, { "idiom" : "universal", "filename" : "LaunchImage@3x.png", "scale" : "3x" } ], "info" : { "version" : 1, "author" : "xcode" } } ================================================ FILE: legacy/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md ================================================ # Launch Screen Assets You can customize the launch screen with your own desired assets by replacing the image files in this directory. You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. ================================================ FILE: legacy/app/ios/Runner/Base.lproj/LaunchScreen.storyboard ================================================ ================================================ FILE: legacy/app/ios/Runner/Base.lproj/Main.storyboard ================================================ ================================================ FILE: legacy/app/ios/Runner/Glowby.swift ================================================ import UIKit import RealityKit import ARKit class GlowbyARView: UIView, ARSessionDelegate { var arView: ARView! override init(frame: CGRect) { super.init(frame: frame) print("Initializing GlowbyARView with frame: \(frame)") let arFrame = CGRect(x: frame.width / 2, y: 0, width: frame.width / 2, height: frame.height) // Only cover half the screen arView = ARView(frame: arFrame) // Set the frame to the passed value arView.session.delegate = self // Set the delegate to receive AR session updates arView.autoresizingMask = [.flexibleWidth, .flexibleHeight] self.addSubview(arView) // Start the AR session with a world tracking configuration let configuration = ARWorldTrackingConfiguration() configuration.planeDetection = [.horizontal, .vertical] // Add if you want to detect planes arView.session.run(configuration) // Setup RealityKit scene here let anchor = AnchorEntity(world: SIMD3(x: 0.2, y: 0, z: 0)) // Position the cube 20cm to the right of the origin let mesh = MeshResource.generateBox(size: 0.1) // Create a 10cm cube let material = SimpleMaterial(color: .blue, isMetallic: true) let cube = ModelEntity(mesh: mesh, materials: [material]) anchor.addChild(cube) arView.scene.anchors.append(anchor) } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } // ARSessionDelegate method func session(_ session: ARSession, didFailWithError error: Error) { // Handle session failures print("AR Session Failure: \(error.localizedDescription)") } func sessionWasInterrupted(_ session: ARSession) { // Handle session interruptions print("AR Session was interrupted") } func sessionInterruptionEnded(_ session: ARSession) { // Handle session interruption ends print("AR Session interruption ended") } } ================================================ FILE: legacy/app/ios/Runner/Info.plist ================================================ CADisableMinimumFrameDurationOnPhone CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName Glowby CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName Glowby CFBundlePackageType APPL CFBundleShortVersionString $(FLUTTER_BUILD_NAME) CFBundleSignature ???? CFBundleVersion $(FLUTTER_BUILD_NUMBER) LSRequiresIPhoneOS UIApplicationSupportsIndirectInputEvents UILaunchStoryboardName LaunchScreen UIMainStoryboardFile Main UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UISupportedInterfaceOrientations~ipad UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIViewControllerBasedStatusBarAppearance NSPhotoLibraryUsageDescription Why your app needs access to the photo library NSCameraUsageDescription Why your app needs access to the camera NSMicrophoneUsageDescription Why your app needs access to the microphone, if you intend to record videos ================================================ FILE: legacy/app/ios/Runner/Runner-Bridging-Header.h ================================================ #import "GeneratedPluginRegistrant.h" ================================================ FILE: legacy/app/ios/Runner.xcodeproj/project.pbxproj ================================================ // !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 54; objects = { /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 89B40D862B6DEB3200CD9DB4 /* Glowby.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89B40D852B6DEB3200CD9DB4 /* Glowby.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; E7CDAFAA274C398F1C14F40B /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4AD225B15388956E76152E56 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ 9705A1C41CF9048500538489 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 1A8E959293667E82CDD1EE63 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 4AD225B15388956E76152E56 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 89B40D852B6DEB3200CD9DB4 /* Glowby.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Glowby.swift; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; A15B301BDAB53725E88102AC /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; C8255EE9360D41A7D72D78A7 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( E7CDAFAA274C398F1C14F40B /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 7629E09BA388E84ED45E1A2A /* Pods */ = { isa = PBXGroup; children = ( A15B301BDAB53725E88102AC /* Pods-Runner.debug.xcconfig */, C8255EE9360D41A7D72D78A7 /* Pods-Runner.release.xcconfig */, 1A8E959293667E82CDD1EE63 /* Pods-Runner.profile.xcconfig */, ); path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 9740EEB21CF90195004384FC /* Debug.xcconfig */, 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 9740EEB31CF90195004384FC /* Generated.xcconfig */, ); name = Flutter; sourceTree = ""; }; 97C146E51CF9000F007C117D = { isa = PBXGroup; children = ( 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 7629E09BA388E84ED45E1A2A /* Pods */, B596A8251815CD55A37C1C72 /* Frameworks */, ); sourceTree = ""; }; 97C146EF1CF9000F007C117D /* Products */ = { isa = PBXGroup; children = ( 97C146EE1CF9000F007C117D /* Runner.app */, ); name = Products; sourceTree = ""; }; 97C146F01CF9000F007C117D /* Runner */ = { isa = PBXGroup; children = ( 97C146FA1CF9000F007C117D /* Main.storyboard */, 97C146FD1CF9000F007C117D /* Assets.xcassets */, 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 97C147021CF9000F007C117D /* Info.plist */, 97C146F11CF9000F007C117D /* Supporting Files */, 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, 89B40D852B6DEB3200CD9DB4 /* Glowby.swift */, 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, ); path = Runner; sourceTree = ""; }; 97C146F11CF9000F007C117D /* Supporting Files */ = { isa = PBXGroup; children = ( ); name = "Supporting Files"; sourceTree = ""; }; B596A8251815CD55A37C1C72 /* Frameworks */ = { isa = PBXGroup; children = ( 4AD225B15388956E76152E56 /* Pods_Runner.framework */, ); name = Frameworks; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ 97C146ED1CF9000F007C117D /* Runner */ = { isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( 11084A4A0C3D78A6DABF2A30 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 165465ABC4E76E3BB5704A6C /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); dependencies = ( ); name = Runner; productName = Runner; productReference = 97C146EE1CF9000F007C117D /* Runner.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { LastUpgradeCheck = 1430; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { CreatedOnToolsVersion = 7.3.1; LastSwiftMigration = 1100; }; }; }; buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; compatibilityVersion = "Xcode 9.3"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, Base, ); mainGroup = 97C146E51CF9000F007C117D; productRefGroup = 97C146EF1CF9000F007C117D /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 97C146ED1CF9000F007C117D /* Runner */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 97C146EC1CF9000F007C117D /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ 11084A4A0C3D78A6DABF2A30 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( ); inputPaths = ( "${PODS_PODFILE_DIR_PATH}/Podfile.lock", "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( ); outputPaths = ( "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; 165465ABC4E76E3BB5704A6C /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputPaths = ( "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); name = "Run Script"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 97C146EA1CF9000F007C117D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, 89B40D862B6DEB3200CD9DB4 /* Glowby.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ 97C146FA1CF9000F007C117D /* Main.storyboard */ = { isa = PBXVariantGroup; children = ( 97C146FB1CF9000F007C117D /* Base */, ); name = Main.storyboard; sourceTree = ""; }; 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { isa = PBXVariantGroup; children = ( 97C147001CF9000F007C117D /* Base */, ); name = LaunchScreen.storyboard; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ 249021D3217E4FDB00AE95B9 /* Profile */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; 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_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[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; 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; IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Profile; }; 249021D4217E4FDB00AE95B9 /* Profile */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 6; DEVELOPMENT_TEAM = 6RKHK382W9; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = Glowby; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools"; IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Flutter", ); MARKETING_VERSION = 1.1.0; PRODUCT_BUNDLE_IDENTIFIER = com.glowbom.glowby.genius; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 2; VERSIONING_SYSTEM = "apple-generic"; }; name = Profile; }; 97C147031CF9000F007C117D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; 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_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[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = 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; IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 97C147041CF9000F007C117D /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; 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_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[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; 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; IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 97C147061CF9000F007C117D /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 6; DEVELOPMENT_TEAM = 6RKHK382W9; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = Glowby; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools"; IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Flutter", ); MARKETING_VERSION = 1.1.0; PRODUCT_BUNDLE_IDENTIFIER = com.glowbom.glowby.genius; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 2; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; }; 97C147071CF9000F007C117D /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 6; DEVELOPMENT_TEAM = 6RKHK382W9; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = Glowby; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools"; IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Flutter", ); MARKETING_VERSION = 1.1.0; PRODUCT_BUNDLE_IDENTIFIER = com.glowbom.glowby.genius; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 2; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { isa = XCConfigurationList; buildConfigurations = ( 97C147031CF9000F007C117D /* Debug */, 97C147041CF9000F007C117D /* Release */, 249021D3217E4FDB00AE95B9 /* Profile */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { isa = XCConfigurationList; buildConfigurations = ( 97C147061CF9000F007C117D /* Debug */, 97C147071CF9000F007C117D /* Release */, 249021D4217E4FDB00AE95B9 /* Profile */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; rootObject = 97C146E61CF9000F007C117D /* Project object */; } ================================================ FILE: legacy/app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata ================================================ ================================================ FILE: legacy/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist ================================================ IDEDidComputeMac32BitWarning ================================================ FILE: legacy/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings ================================================ PreviewsEnabled ================================================ FILE: legacy/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme ================================================ ================================================ FILE: legacy/app/ios/Runner.xcworkspace/contents.xcworkspacedata ================================================ ================================================ FILE: legacy/app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist ================================================ IDEDidComputeMac32BitWarning ================================================ FILE: legacy/app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings ================================================ PreviewsEnabled ================================================ FILE: legacy/app/lib/main.dart ================================================ // Importing required packages import 'package:flutter/material.dart'; import 'views/screens/talk_screen.dart'; // Entry point of the application // runApp starts the Flutter app by inflating the given widget and attaching it to the screen void main() => runApp(const TalkApp()); ================================================ FILE: legacy/app/lib/models/ai.dart ================================================ import 'dart:math'; import 'package:glowby/services/hugging_face_api.dart'; import 'package:glowby/services/pulze_ai_api.dart'; import '../services/openai_api.dart'; import '../utils/timestamp.dart'; import '../views/widgets/message.dart'; import 'package:async/async.dart'; import 'package:flutter/foundation.dart'; /// A class representing the AI chatbot that processes and responds to user messages. class Ai { final List>? _questions; final String? _name; CancelableOperation? networkOperation; CancelableOperation? getCurrentNetworkOperation() { return networkOperation; } static const String defaultUserId = '007'; Ai(this._name, this._questions); /// Processes the user's message and returns an AI-generated response. /// /// [message] is the input message from the user. Future> message( String message, { List> previousMessages = const [], bool aiEnabled = true, }) async { List> foundQuestions = _findMatchingQuestions(message); if (foundQuestions.isNotEmpty) { return _generateResponseMessage(foundQuestions); } // Call the OpenAI API if no matching questions are found locally if (aiEnabled && OpenAiApi.oat().isNotEmpty) { networkOperation = OpenAiApi.getResponseFromOpenAI(message, previousMessages: previousMessages); String response = await networkOperation!.value; String poweredTitle = OpenAiApi.model == 'gpt-4' ? 'Powered by GPT-4' : OpenAiApi.model == 'gpt-3.5-turbo' ? 'Powered by GPT-3.5' : OpenAiApi.model == 'gpt-4o' ? 'Powered by GPT-4o' : OpenAiApi.model == 'huggingface' ? HuggingFaceApi.model() : OpenAiApi.model == 'pulzeai' ? PulzeAiApi.lastUsedModel() : ''; return [ Message( text: response, createdAt: Timestamp.now(), userId: defaultUserId, username: _name == '' ? 'AI' : poweredTitle == '' ? _name : ('$_name ($poweredTitle)'), ), ]; } return []; } /// Calculate the Jaro similarity between two strings. /// /// The Jaro similarity is a measure of the similarity between two strings. /// The higher the Jaro similarity score, the more similar the two strings are, /// with 1 being an exact match and 0 being no similarity. /// /// - `s1`: The first string to compare. /// - `s2`: The second string to compare. /// /// Returns a double representing the Jaro similarity score. double jaroSimilarity(String s1, String s2) { // Maximum distance to consider for matching characters. int maxDistance = (s1.length / 2).floor() - 1; // Arrays to keep track of which characters in each string are matches. List matches1 = List.filled(s1.length, false); List matches2 = List.filled(s2.length, false); // Number of matching characters and transpositions. int matches = 0; int transpositions = 0; // First pass: find matching characters. for (int i = 0; i < s1.length; i++) { // Determine the range of indices to check for matching characters in s2. int start = max(0, i - maxDistance); int end = min(i + maxDistance + 1, s2.length); for (int j = start; j < end; j++) { // Skip if already matched or not equal. if (matches2[j]) continue; // Mark as matched. if (s1[i] != s2[j]) continue; matches1[i] = true; matches2[j] = true; matches++; break; } } // If no matches were found, the similarity is 0. if (matches == 0) return 0.0; // Second pass: count transpositions. int k = 0; for (int i = 0; i < s1.length; i++) { // Skip non-matching characters. if (!matches1[i]) continue; // Find the next match in s2. while (!matches2[k]) { k++; } // Count transposition if the characters don't match. if (s1[i] != s2[k]) transpositions++; k++; } // Calculate the Jaro similarity. double m = matches.toDouble(); return (m / s1.length + m / s2.length + (m - transpositions / 2) / m) / 3; } double jaroWinkler(String s1, String s2, {double p = 0.1}) { double jaro = jaroSimilarity(s1, s2); int prefix = 0; for (int i = 0; i < min(s1.length, s2.length); i++) { if (s1[i] == s2[i]) { prefix++; } else { break; } } return jaro + prefix * p * (1 - jaro); } /// Searches the AI's question database for matching questions based on the user's input. /// /// [message] is the sanitized input message from the user. List> _findMatchingQuestions(String message) { List> foundQuestions = []; var userMessage = _sanitizeMessage(message); for (var questionMap in _questions!) { var question = _sanitizeMessage(questionMap['description'].toString()); if (question == userMessage) { foundQuestions.add(questionMap); break; // Exit the loop early as we have found an exact match } } if (foundQuestions.isEmpty) { foundQuestions = _searchForQuestions(userMessage); } return foundQuestions; } /// Sanitizes the input message by removing special characters and converting it to lowercase. /// /// [message] is the raw input message. String _sanitizeMessage(String message) { return message.replaceAll('?', '').toLowerCase(); } /// Searches the AI's question database for questions that contain the user's input message. /// /// [userMessage] is the sanitized input message from the user. List> _searchForQuestions(String userMessage) { List> foundQuestions = []; double similarityThreshold = 0.98; // You can adjust this value to fine-tune the matching algorithm for (var questionMap in _questions!) { var question = _sanitizeMessage(questionMap['description'].toString()); double similarity = jaroWinkler(userMessage, question); if (similarity >= similarityThreshold) { foundQuestions.add(questionMap); } } // Sort the found questions by their similarity in descending order foundQuestions.sort((a, b) { var aQuestion = _sanitizeMessage(a['description'].toString()); var bQuestion = _sanitizeMessage(b['description'].toString()); return jaroWinkler(userMessage, bQuestion) .compareTo(jaroWinkler(userMessage, aQuestion)); }); return foundQuestions; } /// Generates a response message based on the list of matching questions. /// /// [foundQuestions] is the list of questions that match the user's input message. Future> _generateResponseMessage( List> foundQuestions) async { try { Random rnd = Random(DateTime.now().millisecondsSinceEpoch); List messages = []; for (Map questionMap in foundQuestions) { messages.addAll(questionMap['buttonsTexts'] as Iterable); } int index = rnd.nextInt(messages.length); return [ Message( text: messages[index], createdAt: Timestamp.now(), userId: defaultUserId, username: _name == '' ? 'AI' : _name, ), ]; } catch (e) { if (kDebugMode) { print('Error generating response message: $e'); } } return []; } } ================================================ FILE: legacy/app/lib/services/hugging_face_api.dart ================================================ import 'dart:convert'; import 'package:flutter/foundation.dart'; import 'package:http/http.dart' as http; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; class HuggingFaceApi { static final HuggingFaceApi _instance = HuggingFaceApi._privateConstructor(); factory HuggingFaceApi() => _instance; HuggingFaceApi._privateConstructor(); String _apiKey = ''; static String _template = '''[ { "generated_text": "***" } ] '''; static String _model = 'google/flan-t5-large'; static String _systemMessage = ''; static bool _sendMessages = false; static const String _apiKeyKey = 'huggingface_api_key'; static const String _templateKey = 'huggingface_template'; static const String _modelKey = 'huggingface_model'; static const String _systemMessageKey = 'huggingface_system_message'; static const String _sendMessagesKey = 'huggingface_send_messages'; static const FlutterSecureStorage _secureStorage = FlutterSecureStorage(); static String oat() => HuggingFaceApi()._oat(); static void setOat(String value) => HuggingFaceApi()._setOat(value); static void resetOat() => HuggingFaceApi()._resetOat(); void _resetOat() { _apiKey = ''; } String _oat() => _apiKey; Future _setOat(String value) async { _apiKey = value; await _secureStorage.write(key: 'huggingface_api_key', value: _apiKey); } static Future loadOat() async { try { setOat(await _secureStorage.read(key: _apiKeyKey) ?? ''); _template = await _secureStorage.read(key: _templateKey) ?? '''[ { "generated_text": "***" } ] '''; _model = await _secureStorage.read(key: _modelKey) ?? 'google/flan-t5-large'; _systemMessage = await _secureStorage.read(key: _systemMessageKey) ?? ''; _sendMessages = await _secureStorage.read(key: _sendMessagesKey) == 'true'; } catch (e) { if (kDebugMode) { print('Error loading OAT: $e'); } } } static bool sendMessages() { return _sendMessages; } static Future setSendMessages(bool sendMessages) async { _sendMessages = sendMessages; await _secureStorage .write(key: _sendMessagesKey, value: _sendMessages.toString()) .then((value) => null); } static String systemMessage() { return _systemMessage; } static void setSystemMessage(systemMessage) { _systemMessage = systemMessage; _secureStorage.write(key: _systemMessageKey, value: _systemMessage); } static String model() { return _model; } static void setModel(model) { _model = model; _secureStorage.write(key: _modelKey, value: _model); } static String template() { return _template; } static void setTemplate(template) { _template = template; _secureStorage.write(key: _templateKey, value: _template); } static String? _findValueByTemplate(dynamic value, dynamic template) { if (value is List && template is List) { return _processListByTemplate(value, template); } else if (value is Map && template is Map) { return _processMapByTemplate( value as Map, template as Map); } else if (template == "***") { return value.toString(); } return null; } static String? _processListByTemplate( List valueList, List templateList) { if (valueList.length != templateList.length) return null; for (int i = 0; i < valueList.length; i++) { final result = _findValueByTemplate(valueList[i], templateList[i]); if (result != null) { return result; } } return null; } static String? _processMapByTemplate( Map valueMap, Map templateMap) { for (var key in templateMap.keys) { final result = _findValueByTemplate(valueMap[key], templateMap[key]); if (result != null) { return result; } } return null; } static Future generate(String text) async { return await _generate(_model, text, _template); } // Examples: // generate('facebook/bart-large-cnn', 'What\'s the best way to play a guitar?', '[{"summary_text": "***"}]'); // generate('google/flan-t5-large', 'What\'s the best way to play a guitar?', '[{"generated_text": "***"}]'); static Future _generate( String modelId, String text, String template) async { if (!_isValidTokenAndModel(modelId)) { return 'Invalid token or model ID'; } final response = await _makeRequest(modelId, text); return _processResponse(response, template); } static bool _isValidTokenAndModel(String modelId) { return oat() != '' && modelId != ''; } static Future _makeRequest(String modelId, String text) async { final queryUrl = 'https://api-inference.huggingface.co/models/$modelId'; final headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer ${oat()}', }; final body = jsonEncode({ 'inputs': _systemMessage.isEmpty ? text : '$text [System message]: $_systemMessage', }); try { return await http.post(Uri.parse(queryUrl), headers: headers, body: body); } on http.ClientException catch (e) { // Handle the exception related to the HTTP client if (kDebugMode) { print('ClientException occurred: $e'); } // Consider re-throwing the exception or returning an error response } catch (e) { // Handle other types of exceptions if (kDebugMode) { print('An error occurred: $e'); } // Consider re-throwing the exception or returning an error response } // If an error occurs, you might want to return a default response: return http.Response('{"error": "An unexpected error occurred."}', 500); } static String? _processResponse(http.Response response, String template) { if (response.statusCode != 200) { return 'Error processing request'; } final jsonResponse = jsonDecode(response.body); final templateJson = jsonDecode(template); return _findValueByTemplate(jsonResponse, templateJson); } } ================================================ FILE: legacy/app/lib/services/openai_api.dart ================================================ import 'dart:convert'; import 'package:flutter/foundation.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:http/http.dart' as http; import 'package:async/async.dart'; import 'package:glowby/services/hugging_face_api.dart'; import 'package:glowby/services/pulze_ai_api.dart'; class OpenAiApi { static final OpenAiApi _instance = OpenAiApi._privateConstructor(); factory OpenAiApi() => _instance; OpenAiApi._privateConstructor(); String _apiKey = ''; static int _totalTokensUsed = 0; static String oat() => OpenAiApi()._oat(); static void setOat(String value) => OpenAiApi()._setOat(value); static void resetOat() => OpenAiApi()._resetOat(); void _resetOat() { _apiKey = ''; } String _oat() => _apiKey; Future _setOat(String value) async { _apiKey = value; await _secureStorage.write(key: _apiKeyKey, value: _apiKey); } static String defaultSystemPrompt = 'You are Glowby, super helpful, nice, and humorous AI assistant ready to help with anything. I like to joke around.'; static String defaultSystemPromptComplexTask = 'You are Glowby, an AI assistant designed to break down complex tasks into a manageable 5-step plan. For each step, you offer the user 3 options to choose from. Once the user selects an option, you proceed to the next step based on their choice. After the user has chosen an option for the fifth step, you provide them with a customized, actionable plan based on their previous responses. You only reveal the current step and options to ensure an engaging, interactive experience.'; static String model = 'gpt-4o'; //'gpt-4'; static String selectedLanguage = 'en-US'; static String systemPrompt = defaultSystemPrompt; static const String _apiKeyKey = 'openai_api_key'; static const String _modelKey = 'openai_model'; static const String _selectedLanguageKey = 'selected_language'; static const String _systemPromptKey = 'openai_system_prompt'; static const FlutterSecureStorage _secureStorage = FlutterSecureStorage(); static Future loadOat() async { try { setOat(await _secureStorage.read(key: _apiKeyKey) ?? ''); model = (await _secureStorage.read(key: _modelKey)) ?? 'gpt-4o'; selectedLanguage = (await _secureStorage.read(key: _selectedLanguageKey)) ?? 'en-US'; systemPrompt = (await _secureStorage.read(key: _systemPromptKey)) ?? defaultSystemPrompt; } catch (e) { if (kDebugMode) { print('Error loading OAT: $e'); } } await HuggingFaceApi.loadOat(); await PulzeAiApi.loadOat(); } static Future setModel(String value) async { model = value; await _secureStorage.write(key: _modelKey, value: model); } static Future setSystemPrompt(String value) async { systemPrompt = value; await _secureStorage.write(key: _systemPromptKey, value: systemPrompt); } static Future setSelectedLanguage(String value) async { selectedLanguage = value; await _secureStorage.write( key: _selectedLanguageKey, value: selectedLanguage); } static Future generateImageUrl(String description) async { // Check if the description is safe /*bool descriptionIsSafe = await isInputSafe(description); if (!descriptionIsSafe) { throw Exception( 'The input provided is not considered safe. Please provide a different input.'); }*/ final apiKey = OpenAiApi.oat(); const queryUrl = 'https://api.openai.com/v1/images/generations'; final headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer $apiKey', }; final body = jsonEncode({ 'prompt': description, 'n': 1, 'size': '512x512', }); if (kDebugMode) { print('Request URL: $queryUrl'); } final response = await http.post(Uri.parse(queryUrl), headers: headers, body: body); if (kDebugMode) { print('Response Status Code: ${response.statusCode}'); print('Response Body: ${response.body}'); } if (response.statusCode == 200) { final jsonResponse = jsonDecode(response.body); final imageUrl = jsonResponse['data'][0]['url']; if (kDebugMode) { print('Generated Image URL: $imageUrl'); } return imageUrl; } else { throw Exception('Failed to generate image'); } } static Future isInputSafe(String input) async { if (kDebugMode) { print('isInputSafe called with input: $input'); } // Replace this URL with your AWS Lambda function URL const lambdaUrl = 'YOUR_LAMBDA_FUNCTION_URL'; final headers = { 'Content-Type': 'application/json', }; final data = { 'input': input, }; try { if (kDebugMode) { print('calling lambda function with input: $input and url: $lambdaUrl'); } final response = await http.post( Uri.parse(lambdaUrl), headers: headers, body: jsonEncode(data), ); if (kDebugMode) { print('isInputSafe response status code: ${response.statusCode}'); print('isInputSafe response headers: ${response.headers}'); print('isInputSafe response body: ${response.body}'); } if (response.statusCode == 200) { final responseBody = jsonDecode(response.body); bool moderationStatus = responseBody['isSafe']; return moderationStatus; } else { if (kDebugMode) { print('isInputSafe error: Status code ${response.statusCode}'); } throw Exception('Failed to get response from Lambda function.'); } } catch (e) { if (kDebugMode) { print('isInputSafe exception: $e'); } rethrow; } } static int getAdjustedMaxTokens(String inputText, {int defaultMaxTokens = 300}) { List keywords = [ 'code', 'snippet', 'class', 'function', 'method', 'generate', 'create', 'build', 'implement', 'algorithm', 'example', 'template', 'sample', 'skeleton', 'structure', ]; bool containsKeyword(String text, List keywords) { return keywords.any((keyword) => text.toLowerCase().contains(keyword)); } // Increase max tokens if the input text contains any of the keywords if (containsKeyword(inputText, keywords)) { return defaultMaxTokens * 3; // Example: increase max tokens by a factor of 3 } return defaultMaxTokens; } static CancelableOperation getResponseFromOpenAI( String message, { List> previousMessages = const [], int maxTries = 1, String? customSystemPrompt, }) { // Create a cancelable completer final completer = CancelableCompleter(); // if previousMessages is not empty, remove the first one as it consist on the current message if (previousMessages.isNotEmpty) { previousMessages.removeAt(0); } if (OpenAiApi.model == 'pulzeai') { _getResponseFromPulzeAI( message, completer, previousMessages: previousMessages, ); } else if (OpenAiApi.model == 'huggingface') { _getResponseFromHuggingFace( message, completer, previousMessages: previousMessages, ); } else { // Wrap the _getResponseFromOpenAI with the cancelable completer _getResponseFromOpenAI( message, completer, previousMessages: previousMessages, maxTries: maxTries, customSystemPrompt: customSystemPrompt, ); } return completer.operation; } static String formatPrevMessages( List> previousMessages) { return previousMessages.map((message) { return "${message['role']}: ${message['content']}"; }).join(', '); } static Future _getResponseFromHuggingFace( String message, CancelableCompleter completer, { List> previousMessages = const [], }) async { String? finalResponse = ''; if (HuggingFaceApi.oat() != '') { //print(previousMessages); String formattedPrevMessages = formatPrevMessages(previousMessages); if (previousMessages.isNotEmpty && HuggingFaceApi.sendMessages()) { finalResponse = await HuggingFaceApi.generate( '$message previousMessages: $formattedPrevMessages'); } else { finalResponse = await HuggingFaceApi.generate(message); } //print('finalResponse: $finalResponse'); if (finalResponse != null) { finalResponse = finalResponse .replaceAll('assistant: ', '') .replaceAll('previousMessages: ', '') .replaceAll('user: ', '') .replaceAll('[System message]: ', ''); } } else { finalResponse = 'Please enter your Hugging Face Access Token in the settings.'; } completer.complete(finalResponse); // Explicitly return null to avoid return; } static Future _getResponseFromPulzeAI( String message, CancelableCompleter completer, { List> previousMessages = const [], }) async { String? finalResponse = ''; if (PulzeAiApi.oat() != '') { //print(previousMessages); String formattedPrevMessages = formatPrevMessages(previousMessages); if (previousMessages.isNotEmpty && PulzeAiApi.sendMessages()) { finalResponse = await PulzeAiApi.generate( '$message previousMessages: $formattedPrevMessages'); } else { finalResponse = await PulzeAiApi.generate(message); } //print('finalResponse: $finalResponse'); if (finalResponse != null) { finalResponse = finalResponse .replaceAll('assistant: ', '') .replaceAll('previousMessages: ', '') .replaceAll('user: ', '') .replaceAll('[System message]: ', ''); } } else { finalResponse = 'Please enter your Puzle AI Access Token in the settings.'; } completer.complete(finalResponse); // Explicitly return null to avoid return; } static Future _getResponseFromOpenAI( String message, CancelableCompleter completer, {List> previousMessages = const [], int maxTries = 1, String? customSystemPrompt}) async { String finalResponse = ''; String inputMessage = message; int tries = 0; // Check if the message is safe /*bool messageIsSafe = await isInputSafe(inputMessage); if (!messageIsSafe) { finalResponse = 'Sorry, the input provided is not considered safe. Please provide a different input.'; completer.complete(finalResponse); return; }*/ final apiKey = OpenAiApi.oat(); while (tries < maxTries) { if (kDebugMode) { print('inputMessage = $inputMessage'); } const apiUrl = 'https://api.openai.com/v1/chat/completions'; final headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer $apiKey', }; final adjustedMaxTokens = getAdjustedMaxTokens(inputMessage); final data = { 'model': model, 'messages': [ {'role': 'system', 'content': customSystemPrompt ?? systemPrompt}, ...previousMessages, {'role': 'user', 'content': inputMessage} ], 'max_tokens': adjustedMaxTokens, 'n': 1, 'stop': null, 'temperature': 1, }; try { final response = await http.post( Uri.parse(apiUrl), headers: headers, body: jsonEncode(data), ); if (response.statusCode == 200) { final responseBody = jsonDecode(utf8.decode(response.bodyBytes)); String receivedResponse = responseBody['choices'][0]['message'] ['content'] .toString() .trim(); // Add the current received response to the final response finalResponse += receivedResponse; // Add the tokens used in this response to the total tokens used int tokensUsed = responseBody['usage']['total_tokens']; _totalTokensUsed += tokensUsed; // Calculate the cost of the tokens used double cost = tokensUsed * 0.002 / 1000; if (kDebugMode) { // Print the tokens used and the cost to the console print('Tokens used in this response: $tokensUsed'); print('Cost of this response: \$${cost.toStringAsFixed(5)}'); print('Total tokens used so far: $_totalTokensUsed'); } double totalCost = _totalTokensUsed * 0.002 / 1000; if (kDebugMode) { print('Total cost so far: \$${totalCost.toStringAsFixed(5)}'); } // Check if the received response was cut-off if (responseBody['choices'][0]['finish_reason'] == 'length') { // Use the last part of the received response as input for the next request inputMessage += receivedResponse; int maxLength = 1024 * 10; // You can set this to a desired limit if (inputMessage.length > maxLength) { inputMessage = inputMessage.substring(inputMessage.length - maxLength); } tries++; } else { break; } } else { throw Exception('Failed to get response from OpenAI API.'); } } catch (e) { if (tries + 1 < maxTries) { tries++; // You can add a delay before retrying the request. await Future.delayed(const Duration(seconds: 2)); } else { finalResponse = 'Sorry, there was an error processing your request. Please try again later.'; if (kDebugMode) { print('Error: $e'); } break; } } } completer.complete(finalResponse); // Explicitly return null to avoid return; } // Draw to Code Functionality Future getHtmlFromOpenAI( String imageBase64, String userPrompt) async { if (_apiKey == '') { return 'Enter API key in settings'; } const systemPrompt = """ You are a skilled web developer with expertise in Tailwind CSS. A user will provide a low-fidelity wireframe along with descriptive notes. Your task is to create a high-fidelity, responsive HTML webpage using Tailwind CSS and JavaScript, embedded within a single HTML file. - Embed additional CSS and JavaScript directly in the HTML file. - For images, use placeholders from Unsplash or solid color rectangles. - Draw inspiration for fonts, colors, and layouts from user-provided style references or wireframes. - For any previous design iterations, use the provided HTML to refine the design further. - Apply creative improvements to enhance the design. - Load JavaScript dependencies through JavaScript modules and unpkg.com. The final output should be a single HTML file, starting with "". Avoid markdown, excessive newlines, and the character sequence "```". """; // The system prompt final openAIKey = _apiKey; // Replace with your actual API key if (openAIKey.isEmpty) { return ''; } final url = Uri.parse("https://api.openai.com/v1/chat/completions"); var request = http.Request("POST", url) ..headers.addAll({ 'Content-Type': 'application/json', 'Authorization': 'Bearer $openAIKey', }) ..body = jsonEncode({ "model": "gpt-4-vision-preview", "temperature": 0, "max_tokens": 4096, "messages": [ {"role": "system", "content": systemPrompt}, { "role": "user", "content": [ {"type": "text", "text": userPrompt}, { "type": "image_url", "image_url": {"url": "data:image/jpeg;base64,$imageBase64"} } ] } ], }); try { final response = await http.Response.fromStream(await request.send()); if (response.statusCode == 200) { final decodedResponse = jsonDecode(response.body); // Assuming 'html' is part of the response JSON structure String html = decodedResponse['choices']?.first['message']['content'] ?? ''; // Additional logic to handle the HTML content goes here return html; } else { // Handle the error, maybe throw an exception if (kDebugMode) { print('Failed to get HTML from OpenAI: ${response.body}'); } return ''; } } catch (e) { if (kDebugMode) { print('Caught error: $e'); } return ''; } } } ================================================ FILE: legacy/app/lib/services/pulze_ai_api.dart ================================================ import 'dart:convert'; import 'package:flutter/foundation.dart'; import 'package:http/http.dart' as http; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; class PulzeAiApi { static final PulzeAiApi _instance = PulzeAiApi._privateConstructor(); factory PulzeAiApi() => _instance; PulzeAiApi._privateConstructor(); String _apiKey = ''; static String oat() => PulzeAiApi()._oat(); static void setOat(String value) => PulzeAiApi()._setOat(value); static void resetOat() => PulzeAiApi()._resetOat(); void _resetOat() { _apiKey = ''; } String _oat() => _apiKey; Future _setOat(String value) async { _apiKey = value; await _secureStorage.write(key: _apiKeyKey, value: _apiKey); } static String _template = '''[ { "generated_text": "***" } ] '''; static String _model = 'pulze-v0'; static String _lastUsedModel = 'pulze-v0'; static String _systemMessage = ''; static bool _sendMessages = false; static const String _apiKeyKey = 'pulze_ai_api_key'; static const String _templateKey = 'pulze_ai_template'; static const String _modelKey = 'pulze_ai_model'; static const String _systemMessageKey = 'pulze_ai_system_message'; static const String _sendMessagesKey = 'pulze_ai_send_messages'; static const FlutterSecureStorage _secureStorage = FlutterSecureStorage(); static Future loadOat() async { try { setOat(await _secureStorage.read(key: _apiKeyKey) ?? ''); _template = await _secureStorage.read(key: _templateKey) ?? '''[ { "generated_text": "***" } ] '''; _model = await _secureStorage.read(key: _modelKey) ?? 'pulze-v0'; _systemMessage = await _secureStorage.read(key: _systemMessageKey) ?? ''; _sendMessages = await _secureStorage.read(key: _sendMessagesKey) == 'true'; } catch (e) { if (kDebugMode) { print('Error loading OAT: $e'); } } } static bool sendMessages() { return _sendMessages; } static Future setSendMessages(bool sendMessages) async { _sendMessages = sendMessages; await _secureStorage.write( key: _sendMessagesKey, value: _sendMessages.toString()); } static String systemMessage() { return _systemMessage; } static void setSystemMessage(systemMessage) { _systemMessage = systemMessage; _secureStorage.write(key: _systemMessageKey, value: _systemMessage); } static String model() { return _model; } static String lastUsedModel() { return _lastUsedModel; } static void setModel(model) { _model = model; _secureStorage.write(key: _modelKey, value: _model); } static String template() { return _template; } static void setTemplate(template) { _template = template; _secureStorage.write(key: _templateKey, value: _template); } static Future generate(String text) async { return await _generate(_model, text, _template); } static Future _generate( String modelId, String text, String template) async { if (PulzeAiApi.oat() == '') { return 'Please enter your Pulze AI Access Token in the settings.'; } final apiKey = PulzeAiApi.oat(); const queryUrl = 'https://api.pulze.ai/v1/completions/'; final headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer $apiKey', 'Pulze-Labels': '{"hello": "world"}', // Added Pulze-Labels header }; final body = jsonEncode({ 'model': modelId, // Specify the model 'prompt': _systemMessage == '' ? text : '$text [System message]: $_systemMessage', 'max_tokens': 300, // Added max_tokens 'temperature': 0, // Added temperature }); try { if (kDebugMode) { print('Request URL: $queryUrl'); } var response = await http.post(Uri.parse(queryUrl), headers: headers, body: body); if (kDebugMode) { print('Response Status Code: ${response.statusCode}'); print('Response Body: ${response.body}'); } // If there's a redirect, follow it if (response.statusCode == 307) { var newUri = response.headers['location']; if (kDebugMode) { print('New Uri: $newUri'); } if (newUri != null) { response = await http.get(Uri.parse(newUri)); } if (kDebugMode) { print('Response Status Code: ${response.statusCode}'); print('Response Body: ${response.body}'); } } if (response.statusCode == 200) { final responseBody = jsonDecode(utf8.decode(response.bodyBytes)); // Extracting the model information String modelInfo = responseBody['metadata']['model']['model']; _lastUsedModel = modelInfo; String receivedResponse = responseBody['choices'][0]['text'].toString().trim(); // Add the current received response to the final response final generatedText = receivedResponse; if (kDebugMode) { print('Generated Text: $generatedText'); print('Model Info: $modelInfo'); } return generatedText; } else { return 'Sorry, there was an error processing your request. Please try again later.'; } } catch (e) { if (kDebugMode) { print('An exception occurred: $e'); } return 'An error occurred while processing your request.'; } } } ================================================ FILE: legacy/app/lib/utils/color_utils.dart ================================================ import 'dart:math'; import 'package:flutter/material.dart'; /// Adjusts a color value by increasing its brightness towards white based on a given factor. /// /// This function modifies a single RGB component (red, green, or blue) by applying a tinting factor. /// It lightens the component by a percentage that moves it closer to 255 (white). The factor /// should be between 0.0 (no change) and 1.0 (full white). /// /// - `value`: An integer representing the color value of a single RGB component. /// - `factor`: A double representing the factor by which the color value is to be increased. /// /// Returns an integer representing the new color value after applying the tint factor, ensuring /// it is within the valid range of 0 to 255. int tintValue(int value, double factor) => max(0, min((value + ((255 - value) * factor)).round(), 255)); /// Lightens a given color by mixing it with white based on a provided factor. /// /// The `tintColor` function takes an original color and a factor, then computes /// a lighter version of the original color. The factor determines how much white /// is mixed with the original color, with 1.0 being fully white and 0 having no effect. /// /// - `color`: The `Color` object that is to be tinted. /// - `factor`: A double value between 0.0 and 1.0 that represents the intensity of the tint. /// The closer the factor is to 1.0, the lighter the tint will be. /// /// Returns a new `Color` object representing the tinted color. Color tintColor(Color color, double factor) => Color.fromRGBO( tintValue(color.red, factor), tintValue(color.green, factor), tintValue(color.blue, factor), 1); /// Calculates a shaded color value by decreasing its luminance. /// /// This function takes a color value (0-255) and a factor (0.0-1.0) and darkens /// the color by the factor provided. The factor represents the percentage of /// change towards black, with 1.0 being completely black. /// /// - `value`: The base color value to be shaded. /// - `factor`: The factor by which the color is to be darkened. A factor of 0.1 /// darkens the color by 10%, for example. /// /// Returns an integer representing the shaded color value, ensuring it remains /// within the valid color value range of 0 to 255. int shadeValue(int value, double factor) => max(0, min(value - (value * factor).round(), 255)); Color shadeColor(Color color, double factor) => Color.fromRGBO( shadeValue(color.red, factor), shadeValue(color.green, factor), shadeValue(color.blue, factor), 1); /// Generates a `MaterialColor` based on a single `Color`. /// /// This function takes a `Color` and a luminance factor to produce different shades. /// It creates a `MaterialColor` which allows for color consistency across different UI elements. /// /// The shades are generated by tinting (lightening) and shading (darkening) the base color. /// Tints are produced by adding the factor to the base color, moving towards white. /// Shades are produced by subtracting the factor from the base color, moving towards black. /// /// Each tint or shade is defined for the material design color swatch. /// /// - `color`: The base color from which the swatch will be generated. /// /// Returns a `MaterialColor` object allowing for consistent color theming. MaterialColor generateMaterialColor(Color color) { return MaterialColor(color.value, { 50: tintColor(color, 0.9), 100: tintColor(color, 0.8), 200: tintColor(color, 0.6), 300: tintColor(color, 0.4), 400: tintColor(color, 0.2), 500: color, 600: shadeColor(color, 0.1), 700: shadeColor(color, 0.2), 800: shadeColor(color, 0.3), 900: shadeColor(color, 0.4), }); } ================================================ FILE: legacy/app/lib/utils/text_to_speech.dart ================================================ import 'dart:async'; import 'package:flutter_tts/flutter_tts.dart'; class TextToSpeech { static const String typingIndicator = 'typing...'; static const double defaultSpeechRate = 1.0; static const double reducedSpeechRate = 0.85; final FlutterTts _flutterTts = FlutterTts(); static final Map _languageCodes = { 'American English': 'en-US', 'American Spanish': 'es-US', 'Arabic': 'ar-SA', 'Argentinian Spanish': 'es-AR', 'Australian English': 'en-AU', 'Brazilian Portuguese': 'pt-BR', 'British English': 'en-GB', 'Bulgarian': 'bg-BG', 'Canadian French': 'fr-CA', 'Chinese (Simplified)': 'zh-CN', 'Chinese (Traditional)': 'zh-TW', 'Czech': 'cs-CZ', 'Danish': 'da-DK', 'Dutch': 'nl-NL', 'English': 'en-US', 'Finnish': 'fi-FI', 'French': 'fr-FR', 'German': 'de-DE', 'Greek': 'el-GR', 'Hebrew (Israel)': 'he-IL', 'Hungarian': 'hu-HU', 'Indonesian': 'id-ID', 'Italian': 'it-IT', 'Japanese': 'ja-JP', 'Korean': 'ko-KR', 'Mexican Spanish': 'es-MX', 'Norwegian': 'nb-NO', 'Polish': 'pl-PL', 'Portuguese': 'pt-PT', 'Romanian': 'ro-RO', 'Russian': 'ru-RU', 'Slovak': 'sk-SK', 'Spanish': 'es-ES', 'Swedish': 'sv-SE', 'Thai': 'th-TH', 'Turkish': 'tr-TR', 'Ukrainian': 'uk-UA', 'Vietnamese': 'vi-VN', }; Future setSpeechRate(currentLanguage) async { if (currentLanguage.contains('en') || currentLanguage.contains('ru') || currentLanguage.contains('pt') || currentLanguage.contains('pl')) { await _flutterTts.setSpeechRate(defaultSpeechRate); } else { await _flutterTts.setSpeechRate(reducedSpeechRate); } } static Map get languageCodes => _languageCodes; static String? lastLanguage; Future speakText(String text, {String language = 'en-US'}) async { if (text == typingIndicator) { return; } bool containsLanguageCode = _languageCodes.keys.any((key) => text.contains('$key:')); Completer completer = Completer(); _flutterTts.setCompletionHandler(() { completer.complete(); }); if (!containsLanguageCode) { await _flutterTts.setLanguage(language); await setSpeechRate(language); await _flutterTts.speak(text); await completer.future; } else { // Speak the initial text in the default language RegExp exp = RegExp(r'\d+\.\s'); Iterable matches = exp.allMatches(text); String initialText = text.substring(0, matches.first.start); if (initialText.isNotEmpty) { await _flutterTts.setLanguage(language); await setSpeechRate(language); await _flutterTts.speak(initialText); await completer.future; completer = Completer(); } List lines = text.split('\n'); for (String line in lines) { String currentLanguage = language; for (final entry in _languageCodes.entries) { if (line.contains('${entry.key}:')) { // Speak the part before the colon with the default language. String beforeColon = line.split('${entry.key}:')[0]; if (beforeColon != '') { await _flutterTts.setLanguage(currentLanguage); await setSpeechRate(currentLanguage); await _flutterTts.speak('$beforeColon ${entry.key}'); await completer.future; completer = Completer(); } // Speak the part after the colon with the appropriate language. String afterColon = line.split('${entry.key}:')[1]; currentLanguage = entry.value; await _flutterTts.setLanguage(currentLanguage); await setSpeechRate(currentLanguage); await _flutterTts.speak(afterColon); await completer.future; completer = Completer(); break; } } } } } } ================================================ FILE: legacy/app/lib/utils/timestamp.dart ================================================ // Copyright 2018, the Chromium project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. const int _kThousand = 1000; const int _kMillion = 1000000; const int _kBillion = 1000000000; void _check(bool expr, String name, int value) { if (!expr) { throw ArgumentError("Timestamp $name out of range: $value"); } } /// A Timestamp represents a point in time independent of any time zone or calendar, /// represented as seconds and fractions of seconds at nanosecond resolution in UTC /// Epoch time. It is encoded using the Proleptic Gregorian Calendar which extends /// the Gregorian calendar backwards to year one. It is encoded assuming all minutes /// are 60 seconds long, i.e. leap seconds are "smeared" so that no leap second table /// is needed for interpretation. Range is from 0001-01-01T00:00:00Z to /// 9999-12-31T23:59:59.999999999Z. By restricting to that range, we ensure that we /// can convert to and from RFC 3339 date strings. /// /// For more information, see [the reference timestamp definition](https://github.com/google/protobuf/blob/master/src/google/protobuf/timestamp.proto) class Timestamp implements Comparable { /// Creates a [Timestamp] Timestamp(this._seconds, this._nanoseconds) { _validateRange(_seconds, _nanoseconds); } /// Create a [Timestamp] fromMillisecondsSinceEpoch factory Timestamp.fromMillisecondsSinceEpoch(int milliseconds) { final int seconds = (milliseconds / _kThousand).floor(); final int nanoseconds = (milliseconds - seconds * _kThousand) * _kMillion; return Timestamp(seconds, nanoseconds); } /// Create a [Timestamp] fromMicrosecondsSinceEpoch factory Timestamp.fromMicrosecondsSinceEpoch(int microseconds) { final int seconds = (microseconds / _kMillion).floor(); final int nanoseconds = (microseconds - seconds * _kMillion) * _kThousand; return Timestamp(seconds, nanoseconds); } /// Create a [Timestamp] from [DateTime] instance factory Timestamp.fromDate(DateTime date) { return Timestamp.fromMicrosecondsSinceEpoch(date.microsecondsSinceEpoch); } /// Create a [Timestamp] from [DateTime].now() factory Timestamp.now() { return Timestamp.fromMicrosecondsSinceEpoch( DateTime.now().microsecondsSinceEpoch); } final int _seconds; final int _nanoseconds; static const int _kStartOfTime = -62135596800; static const int _kEndOfTime = 253402300800; // ignore: public_member_api_docs int get seconds => _seconds; // ignore: public_member_api_docs int get nanoseconds => _nanoseconds; // ignore: public_member_api_docs int get millisecondsSinceEpoch => (seconds * _kThousand + nanoseconds / _kMillion).floor(); // ignore: public_member_api_docs int get microsecondsSinceEpoch => (seconds * _kMillion + nanoseconds / _kThousand).floor(); /// Converts [Timestamp] to [DateTime] DateTime toDate() { return DateTime.fromMicrosecondsSinceEpoch(microsecondsSinceEpoch); } @override int get hashCode => Object.hash(seconds, nanoseconds); @override bool operator ==(Object o) => o is Timestamp && o.seconds == seconds && o.nanoseconds == nanoseconds; @override int compareTo(Timestamp other) { if (seconds == other.seconds) { return nanoseconds.compareTo(other.nanoseconds); } return seconds.compareTo(other.seconds); } @override String toString() { return "Timestamp(seconds=$seconds, nanoseconds=$nanoseconds)"; } static void _validateRange(int seconds, int nanoseconds) { _check(nanoseconds >= 0, 'nanoseconds', nanoseconds); _check(nanoseconds < _kBillion, 'nanoseconds', nanoseconds); _check(seconds >= _kStartOfTime, 'seconds', seconds); _check(seconds < _kEndOfTime, 'seconds', seconds); } } ================================================ FILE: legacy/app/lib/utils/utils.dart ================================================ import 'dart:convert'; import 'dart:ui' as ui; import 'dart:math'; import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; import 'package:url_launcher/url_launcher_string.dart'; import 'utils_stub.dart' if (dart.library.html) 'utils_web.dart' if (dart.library.io) 'utils_desktop.dart'; abstract class Utils { static Future downloadImage(String url, String description) async => UtilsPlatform.downloadImage(url, description); static Future pickImage() async => UtilsPlatform.pickImage(); static Future startFilePicker() async => UtilsPlatform.startFilePicker(); static Future initializeState(dynamic f) async => UtilsPlatform.initializeState(f); static Future recordVoice(String lang) async => UtilsPlatform.recordVoice(lang); static Future convertToBase64JpegWeb( List points, ui.Image? image, int width, int height) async => UtilsPlatform.convertToBase64JpegWeb(points, image, width, height); static Future launchURL(String url) async { if (await canLaunchUrlString(url)) { await launchUrlString(url); } else { throw Exception('Could not launch $url'); } } // List of image command patterns static final List imageCommandPatterns = [ r'\b(draw|paint|generate|create|show) (me )?(a |an )?(pic|picture|image|illustration|drawing)\b', r'\b(draw|paint|generate|create|show) this (for me)?\b', r'\b(can you )?(please )?(draw|paint|generate|create|show) (me )?(a |an )?(pic|picture|image|illustration|drawing)\b', r'\b(i want to see|show me) (a |an )?(pic|picture|image|illustration|drawing) of\b', ]; // Function to test if any command patterns match the user input static bool isImageGenerationCommand(String input) { return imageCommandPatterns.any((pattern) { RegExp regex = RegExp(pattern, caseSensitive: false); return regex.hasMatch(input); }); } static String? getMatchingPattern(String input) { for (var pattern in imageCommandPatterns) { RegExp regex = RegExp(pattern, caseSensitive: false); if (regex.hasMatch(input)) { return pattern; } } return null; } static Future getImageDataFromUrl(String url) async { try { final response = await http.get(Uri.parse(url)); if (response.statusCode == 200) { final imageData = response.bodyBytes; final base64Image = base64Encode(imageData); return base64Image; } else { throw Exception('Failed to download image: ${response.statusCode}'); } } catch (e) { throw Exception('Failed to save image: ${e.toString()}'); } } static List imageReadyMessages = [ 'Your image is ready! Make sure you allow pop-ups.', 'Image generated! Remember to enable pop-ups.', 'Voila! Your image is done. Don\'t forget to allow pop-ups.', 'Success! Your image has been created. Ensure pop-ups are allowed.', 'Image complete! Just a reminder to permit pop-ups.', 'Your masterpiece is finished! Please enable pop-ups.', 'Your visual creation is ready! Check that you\'ve allowed pop-ups.', ]; static String getRandomImageReadyMessage() { final random = Random(); int index = random.nextInt(imageReadyMessages.length); return imageReadyMessages[index]; } static List imageGenerationFunnyMessages = [ 'Drawing your image... Searching for my digital paintbrush...', 'Drawing your image... Brewing a colorful potion...', 'Drawing your image... Summoning artistic inspiration...', 'Drawing your image... Painting with pixels...', 'Drawing your image... Conjuring a visual masterpiece...', 'Drawing your image... Diving into the canvas of imagination...', 'Drawing your image... Sketching with code...', 'Drawing your image... Weaving a tapestry of pixels...', 'Drawing your image... Navigating the art labyrinth...', 'Drawing your image... Decoding visual enigmas...', 'Drawing your image... Assembling a digital gallery...', 'Drawing your image... Cooking up a visual feast...', 'Drawing your image... Unraveling the threads of creativity...', 'Drawing your image... Tapping into the visual matrix...', 'Drawing your image... Beaming up new designs...', 'Drawing your image... Hitchhiking through the artverse...', 'Drawing your image... Dusting off ancient palettes...', 'Drawing your image... Crafting an artistic potion...', 'Drawing your image... Igniting the creative spark...', 'Drawing your image... Fishing for inspiration...', 'Drawing your image... Sifting through the sands of design...', 'Drawing your image... Gathering visual gems...', 'Drawing your image... Riding the wave of imagination...', ]; static String getRandomImageGenerationFunnyMessage() { final random = Random(); int index = random.nextInt(imageGenerationFunnyMessages.length); return imageGenerationFunnyMessages[index]; } static List loadingMessages = [ 'Talking to collective wisdom...', 'Summoning creative spirits...', 'Traveling through the storyverse...', 'Weaving a tale of wonder...', 'Fetching new story elements...', 'Conjuring the next adventure...', 'Spinning the wheel of stories...', 'Navigating the plot labyrinth...', 'Polishing plot twists...', 'Discovering new realms...', 'Replenishing the inkwell...', 'Crafting a narrative potion...', 'Unraveling the yarn of tales...', 'Tapping into the story matrix...', 'Beaming up new ideas...', 'Hitchhiking through fiction...', 'Dusting off ancient tomes...', 'Decoding narrative enigmas...', 'Assembling a cast of characters...', 'Cooking up a literary feast...', 'Diving into the imagination ocean...', 'Venturing into narrative territory...', 'Harvesting ideas from the idea tree...', 'Rolling out the story carpet...', 'Unlocking the tale treasure chest...', 'Painting with words...', 'Whispering to the muses...', 'Peering through the story telescope...', 'Igniting the creative spark...', 'Fishing for inspiration...', 'Sifting through story sands...', 'Gathering narrative gems...', 'Riding the wave of imagination...', ]; static String getRandomMessage() { final random = Random(); int index = random.nextInt(loadingMessages.length); return loadingMessages[index]; } static List loadingMessagesForCode = [ 'Compiling the code of creation...', 'Brewing a batch of algorithms...', 'Assembling the building blocks...', 'Constructing digital blueprints...', 'Wiring up the circuits of logic...', 'Unraveling the threads of code...', 'Mining the data mines...', 'Sculpting the logic landscape...', 'Connecting the code constellations...', 'Weaving the web of functions...', 'Chasing the elusive bugs...', 'Deciphering the secrets of syntax...', 'Calibrating the code compass...', 'Setting sail on the sea of scripts...', 'Delving into the depths of data...', 'Energizing the flow of logic...', 'Exploring the code caves...', 'Tapping into the digital wellspring...', 'Navigating the river of routines...', 'Mapping the code cosmos...', 'Solving the algorithmic riddles...', 'Stitching together the fabric of code...', 'Tuning the code symphony...', 'Traversing the code jungle...', 'Unlocking the digital vault...', 'Harnessing the power of variables...', 'Journeying through the function forest...', 'Carving the code canyon...', 'Gathering the pearls of programming...', 'Pioneering the code frontier...', 'Unleashing the power of progress...', ]; static String getRandomMessageForCode() { final random = Random(); int index = random.nextInt(loadingMessagesForCode.length); return loadingMessagesForCode[index]; } } ================================================ FILE: legacy/app/lib/utils/utils_desktop.dart ================================================ import 'dart:convert'; import 'dart:io'; import 'dart:math'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; import 'package:path_provider/path_provider.dart'; import 'package:http/http.dart' as http; import 'dart:ui' as ui; class UtilsPlatform { static Future downloadImage(String url, String description) async { // Desktop-specific image downloading implementation final response = await http.get(Uri.parse(url)); if (response.statusCode == 200) { final directory = await getDownloadsDirectory(); // path_provider package needed if (directory != null) { final filePath = '${directory.path}/$description.png'; final file = File(filePath); await file.writeAsBytes(response.bodyBytes); } } else { throw Exception( 'Failed to download image: Server responded with status code ${response.statusCode}'); } } static Future pickImage() async { if (Platform.isIOS) { final picker = ImagePicker(); final pickedFile = await picker.pickImage(source: ImageSource.gallery); if (pickedFile != null) { final File imageFile = File(pickedFile.path); return imageFile.readAsBytes(); } else { if (kDebugMode) { print('No image selected.'); } return null; } } } static Future startFilePicker() async { throw UnsupportedError( 'startFilePicker is not supported on this platform.'); } static Future initializeState(dynamic f) async { throw UnsupportedError( 'startFilePicker is not supported on this platform.'); } static Future recordVoice(String lang) async => throw UnsupportedError( 'initializeState is not supported on this platform.'); static void paintImage( {required Canvas canvas, required ui.Image image, required Size size}) { // Calculate the scale factor to fit the image within the canvas if needed final double scaleFactor = min(size.width / image.width, size.height / image.height); // Calculate the destination rectangle for the scaled image final Rect destRect = Rect.fromLTWH( (size.width - image.width * scaleFactor) / 2, (size.height - image.height * scaleFactor) / 2, image.width * scaleFactor, image.height * scaleFactor, ); // Draw the scaled image at the center position canvas.drawImageRect( image, Rect.fromLTWH(0, 0, image.width.toDouble(), image.height.toDouble()), destRect, Paint()); } static Future convertToBase64JpegWeb( List points, ui.Image? img, int width, int height) async { // Create a PictureRecorder to record the canvas operations final ui.PictureRecorder recorder = ui.PictureRecorder(); final ui.Canvas canvas = ui.Canvas(recorder); // Fill the canvas with a white background final ui.Paint paintBackground = ui.Paint() ..color = const ui.Color(0xFFFFFFFF); canvas.drawRect(ui.Rect.fromLTWH(0, 0, width.toDouble(), height.toDouble()), paintBackground); // If there's an image, draw it if (img != null) { final size = Size(width.toDouble(), height.toDouble()); paintImage(canvas: canvas, image: img, size: size); } // Draw the lines with a black paint final ui.Paint paintLines = ui.Paint() ..color = const ui.Color(0xFF000000) ..strokeWidth = 2.0; for (int i = 0; i < points.length - 1; i++) { if (points[i] != null && points[i + 1] != null) { canvas.drawLine(points[i]!, points[i + 1]!, paintLines); } } // Convert the canvas into a Picture final ui.Picture picture = recorder.endRecording(); // Then convert the Picture into an Image final ui.Image image = await picture.toImage(width, height); // Encode the image to a ByteData as a PNG final ByteData? byteData = await image.toByteData(format: ui.ImageByteFormat.png); final Uint8List pngBytes = byteData!.buffer.asUint8List(); // Finally, encode the PNG bytes as a base64 string final String base64String = base64Encode(pngBytes); return base64String; } } ================================================ FILE: legacy/app/lib/utils/utils_stub.dart ================================================ import 'package:flutter/material.dart'; import 'dart:ui' as ui; class UtilsPlatform { static Future downloadImage(String url, String description) async { throw UnsupportedError('downloadImage is not supported on this platform.'); } static Future pickImage() async { throw UnsupportedError('pickImage is not supported on this platform.'); } static Future startFilePicker() async { throw UnsupportedError( 'startFilePicker is not supported on this platform.'); } static Future initializeState(dynamic f) async { throw UnsupportedError( 'initializeState is not supported on this platform.'); } static Future recordVoice(String lang) async { throw UnsupportedError( 'initializeState is not supported on this platform.'); } static Future convertToBase64JpegWeb( List points, ui.Image? image, int width, int height) async { throw UnsupportedError( 'convertToBase64JpegWeb is not supported on this platform.'); } } ================================================ FILE: legacy/app/lib/utils/utils_web.dart ================================================ import 'dart:async'; import 'dart:convert'; import 'dart:typed_data'; import 'dart:ui' as ui; import 'dart:html' as html; import 'dart:math' as math; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; // Uncomment the next line to compile the web version import 'package:js/js.dart'; // Uncomment the next block to compile the web version @JS() external int rv(String lang); /// Allows assigning a function to be callable from `window.functionName()` @JS('vr') external set _vr(void Function(dynamic) f); /// Allows calling the assigned function from Dart as well. @JS() external void vr(text); class UtilsPlatform { static Future convertUiImageToHtmlImage( ui.Image image) async { final byteData = await image.toByteData(format: ui.ImageByteFormat.png); if (byteData == null) { throw Exception('Failed to convert ui.Image to ByteData'); } final Uint8List uint8list = byteData.buffer.asUint8List(); final base64Str = base64Encode(uint8list); final imgElement = html.ImageElement(); imgElement.src = 'data:image/png;base64,$base64Str'; return imgElement; } static Future convertHtmlImageToUint8List( html.ImageElement imageElement) async { final response = await html.HttpRequest.request( imageElement.src!, method: "GET", responseType: "arraybuffer", ); return Uint8List.view(response.response as ByteBuffer); } static Future drawImageOnCanvas(html.CanvasRenderingContext2D ctx, ui.Image image, double canvasWidth, double canvasHeight) async { Completer completer = Completer(); final imgElement = await convertUiImageToHtmlImage(image); imgElement.onLoad.listen((event) { // Calculate the scaling factor to maintain aspect ratio double scaleX = canvasWidth / image.width; double scaleY = canvasHeight / image.height; double scale = math.min(scaleX, scaleY); // Calculate the centered position double centeredX = (canvasWidth - (image.width * scale)) / 2; double centeredY = (canvasHeight - (image.height * scale)) / 2; // Draw the image on the canvas with the correct scaling and centered ctx.drawImageScaledFromSource( imgElement, 0, // source x 0, // source y image.width.toDouble(), // source width image.height.toDouble(), // source height centeredX, // destination x centeredY, // destination y image.width.toDouble() * scale, // destination width image.height.toDouble() * scale // destination height ); completer.complete(); }); return completer.future; } static Future convertToBase64JpegWeb( List points, ui.Image? image, int width, int height) async { // Create a canvas element final html.CanvasElement canvas = html.CanvasElement(width: width, height: height); final html.CanvasRenderingContext2D ctx = canvas.context2D; // Set the drawing properties ctx.fillStyle = 'white'; // Assuming a white background ctx.fillRect(0, 0, width, height); // Fill the canvas with white color ctx.strokeStyle = 'black'; ctx.lineWidth = 2; if (image != null) { await drawImageOnCanvas(ctx, image, width.toDouble(), height.toDouble()); } // Draw the lines based on the points ctx.beginPath(); for (int i = 0; i < points.length - 1; i++) { if (points[i] != null && points[i + 1] != null) { ctx.moveTo(points[i]!.dx, points[i]!.dy); ctx.lineTo(points[i + 1]!.dx, points[i + 1]!.dy); } } ctx.stroke(); // Convert the canvas content to JPEG format final String dataUrl = canvas.toDataUrl('image/jpeg', 0.9); // 0.9 is the quality // Extract the base64 part of the data URL final String base64String = dataUrl.split(',')[1]; return base64String; } static Future downloadImage(String url, String description) async { const windowFeatures = 'menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes,width=600,height=400'; html.window.open(url, 'glowby-image-$description', windowFeatures); } static Future initializeState(dynamic f) { _vr = allowInterop(f); return Future.value(); } static Future recordVoice(String lang) { rv(lang); return Future.value(); } static Future pickImage() async { final uploadInput = html.FileUploadInputElement(); uploadInput.accept = 'image/*'; uploadInput.click(); await uploadInput.onChange.first; final file = uploadInput.files!.first; final reader = html.FileReader(); reader.readAsArrayBuffer(file); await reader.onLoadEnd.first; return Uint8List.fromList(reader.result as List); } static Future startFilePicker() async { Completer completer = Completer(); try { html.FileUploadInputElement uploadInput = html.FileUploadInputElement(); uploadInput.multiple = false; uploadInput.accept = '.glowbom'; uploadInput.onChange.listen((e) { final files = uploadInput.files; if (files != null && files.isNotEmpty) { final file = files.first; final reader = html.FileReader(); reader.onLoadEnd.listen((e) { dynamic result = reader.result; if (result is String) { completer.complete(json.decode(result)); } else { completer.complete( result); // Assuming result is already in the correct format } }); reader.readAsText(file); } else { completer.complete(null); } }); uploadInput.click(); } catch (e) { if (kDebugMode) { print('Error: $e'); // Log the exception } // Log the exception completer.completeError(e); } return completer.future; } } ================================================ FILE: legacy/app/lib/views/dialogs/ai_error_dialog.dart ================================================ import 'package:flutter/material.dart'; import 'package:glowby/utils/utils.dart'; class AiErrorDialog extends StatefulWidget { const AiErrorDialog({super.key}); @override AiErrorDialogState createState() => AiErrorDialogState(); } class AiErrorDialogState extends State { @override void initState() { super.initState(); } @override Widget build(BuildContext context) { return AlertDialog( title: const Text('Something went wrong!'), content: SizedBox( width: 340, // Set the max width of the AlertDialog child: SingleChildScrollView( child: ListBody( children: [ const Text( 'Make sure you have access to the latest models. For API accounts created after August 18, 2023, you can get instant access to the latest models after purchasing \$0.50 worth or more of pre-paid credits.'), InkWell( child: const Text( '→ More details', style: TextStyle(color: Colors.blue), ), onTap: () => Utils.launchURL( 'https://help.openai.com/en/articles/8555510-gpt-4-turbo'), ), const SizedBox(height: 10), ], ), ), ), actions: [ TextButton( child: const Text('Ok'), onPressed: () { Navigator.pop(context); }, ), ], ); } } ================================================ FILE: legacy/app/lib/views/dialogs/ai_settings_dialog.dart ================================================ import 'package:flutter/material.dart'; import 'package:glowby/views/screens/global_settings.dart'; import 'package:glowby/services/hugging_face_api.dart'; import 'package:glowby/services/pulze_ai_api.dart'; import 'package:glowby/services/openai_api.dart'; import 'package:glowby/utils/text_to_speech.dart'; import 'package:glowby/utils/utils.dart'; class AiSettingsDialog extends StatefulWidget { final Function(bool) onVoiceEnabledChanged; const AiSettingsDialog({super.key, required this.onVoiceEnabledChanged}); @override AiSettingsDialogState createState() => AiSettingsDialogState(); } class AiSettingsDialogState extends State { bool _isHuggingFaceSelected = false; bool _isPulzeSelected = false; bool _sendMessageHistory = false; final TextEditingController _systemPromptController = TextEditingController(); final TextEditingController _systemPromptHuggingFaceController = TextEditingController(); final TextEditingController _modelIdController = TextEditingController(); final TextEditingController _pulzeModelIdController = TextEditingController(); final TextEditingController _templateController = TextEditingController(); Widget _buildAutonomousModeCheckbox() { if (GlobalSettings().selectedPrompt == 'Complex Task Prompt') { return CheckboxListTile( title: const Text('Autonomous Mode (Experimental)'), value: GlobalSettings().autonomousMode, onChanged: (bool? value) { setState(() { GlobalSettings().autonomousMode = value!; }); }, ); } return const SizedBox.shrink(); } List> buildLanguageDropdownItems() { Set uniqueLanguageCodes = Set.from(TextToSpeech.languageCodes.values); return uniqueLanguageCodes .map((code) => DropdownMenuItem( value: code, child: Text(TextToSpeech.languageCodes.entries .firstWhere((entry) => entry.value == code) .key), )) .toList(); } List> buildPromptDropdownItems() { return GlobalSettings() .prompts .map((prompt) => DropdownMenuItem( value: prompt['name'], child: Text(prompt['name']!), )) .toList(); } void _promptChanged(String? value) { if (value != null) { GlobalSettings().selectedPrompt = value; Map selectedPromptMap = GlobalSettings() .prompts .firstWhere((prompt) => prompt['name'] == value, orElse: () => {'name': value, 'description': ''} // Provide a default map ); GlobalSettings().systemPrompt = selectedPromptMap['description'] ?? ''; _systemPromptController.text = GlobalSettings().systemPrompt; GlobalSettings().autonomousMode = false; } } @override void initState() { super.initState(); GlobalSettings().selectedModel = OpenAiApi.model; _systemPromptController.text = GlobalSettings().systemPrompt; _isHuggingFaceSelected = GlobalSettings().selectedModel == 'huggingface'; _isPulzeSelected = GlobalSettings().selectedModel == 'pulzeai'; _modelIdController.text = HuggingFaceApi.model(); _pulzeModelIdController.text = PulzeAiApi.model(); _templateController.text = HuggingFaceApi.template(); GlobalSettings().systemHuggingFacePrompt = HuggingFaceApi.systemMessage(); _sendMessageHistory = HuggingFaceApi.sendMessages(); _systemPromptHuggingFaceController.text = GlobalSettings().systemHuggingFacePrompt; } void _saveOpenAISettings() { OpenAiApi.setModel(GlobalSettings().selectedModel); OpenAiApi.setSystemPrompt(GlobalSettings().systemPrompt); OpenAiApi.setSelectedLanguage(GlobalSettings().selectedLanguage); } void _saveHuggingFaceSettings() { PulzeAiApi.setModel(_pulzeModelIdController.text); HuggingFaceApi.setModel(_modelIdController.text); HuggingFaceApi.setTemplate(_templateController.text); HuggingFaceApi.setSendMessages(_sendMessageHistory); HuggingFaceApi.setSystemMessage(GlobalSettings().systemHuggingFacePrompt); } void _saveSettings(BuildContext context) { _saveOpenAISettings(); _saveHuggingFaceSettings(); // Save the system prompt to use with API calls Navigator.pop(context); // Hide the dialog ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('AI Settings saved successfully!')), ); } @override Widget build(BuildContext context) { if (HuggingFaceApi.oat() == '' && GlobalSettings().selectedModel == 'huggingface') { OpenAiApi.setModel(GlobalSettings().selectedModel); setState(() { _isHuggingFaceSelected = false; _isPulzeSelected = false; //_isGPT4Selected = false; GlobalSettings().selectedModel = 'gpt-4o'; }); } return AlertDialog( title: const Text('AI Settings'), content: SizedBox( width: 340, // Set the max width of the AlertDialog child: SingleChildScrollView( child: ListBody( children: [ const Text('Choose AI Model or Provider:'), DropdownButton( value: GlobalSettings().selectedModel, items: [ const DropdownMenuItem( value: 'gpt-4o', child: Text('GPT-4o (Recommended)'), ), const DropdownMenuItem( value: 'gpt-4', child: Text('GPT-4'), ), const DropdownMenuItem( value: 'gpt-3.5-turbo', child: Text('GPT-3.5'), ), if (HuggingFaceApi.oat() != '') const DropdownMenuItem( value: 'huggingface', child: Text('Hugging Face (Experimental)'), ), if (PulzeAiApi.oat() != '') const DropdownMenuItem( value: 'pulzeai', child: Text('Pulze'), ), /*DropdownMenuItem( value: 'gpt-4-32k', child: Text('GPT-4-32k (Advanced, Limited Beta)'), ),*/ // uncomment the following lines to enable an extended 32,000 token context-length model gpt-4-32k ], onChanged: (value) { setState(() { GlobalSettings().selectedModel = value!; _isHuggingFaceSelected = value == 'huggingface'; _isPulzeSelected = value == 'pulzeai'; }); }, ), const SizedBox(height: 10), if (_isPulzeSelected) Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 10), const Text('Model ID:'), const SizedBox(height: 6), InkWell( child: const Text( '→ Browse available models', style: TextStyle(color: Colors.blue), ), onTap: () => Utils.launchURL('https://platform.pulze.ai/models'), ), TextField( controller: _pulzeModelIdController, // Use TextEditingController to retrieve user input decoration: const InputDecoration( labelText: 'Model ID', ), onChanged: (value) { // Update your modelId variable here }, ), ], ), if (_isHuggingFaceSelected) Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 10), const Text('Hugging Face Model ID:'), const SizedBox(height: 6), InkWell( child: const Text( '→ Browse available models', style: TextStyle(color: Colors.blue), ), onTap: () => Utils.launchURL( 'https://huggingface.co/models?pipeline_tag=text2text-generation&sort=downloads'), ), TextField( controller: _modelIdController, // Use TextEditingController to retrieve user input decoration: const InputDecoration( labelText: 'Model ID', ), onChanged: (value) { // Update your modelId variable here }, ), const SizedBox(height: 10), const Text('Response Format'), TextField( controller: _templateController, // Use TextEditingController to retrieve user input maxLines: 5, decoration: const InputDecoration( labelText: 'Template (*** is the response)', ), onChanged: (value) { // Update your template variable here }, ), ], ), const SizedBox(height: 10), if (!_isHuggingFaceSelected) const Text('System Prompt:'), if (!_isHuggingFaceSelected) if (!_isHuggingFaceSelected) DropdownButton( value: GlobalSettings().selectedPrompt, items: buildPromptDropdownItems(), onChanged: (value) { setState(() { _promptChanged(value); }); }, ), if (!_isHuggingFaceSelected) _buildAutonomousModeCheckbox(), if (!_isHuggingFaceSelected) TextField( controller: _systemPromptController, maxLines: 3, decoration: const InputDecoration( labelText: 'Enter system prompt', ), onChanged: (value) { GlobalSettings().systemPrompt = value; }, ), /*if (_isHuggingFaceSelected) Text('System Message:'), if (_isHuggingFaceSelected) TextField( controller: _systemPromptHuggingFaceController, maxLines: 3, decoration: InputDecoration( labelText: 'Enter system message', ), onChanged: (value) { _systemHuggingFacePrompt = value; }, ), if (_isHuggingFaceSelected) CheckboxListTile( title: Text('Send message history'), value: _sendMessageHistory, onChanged: (bool? value) { setState(() { _sendMessageHistory = value!; }); }, ), if (_isHuggingFaceSelected) Divider(), if (_isHuggingFaceSelected) Text('Voice Settings:'), if (_isHuggingFaceSelected) SizedBox(height: 10),*/ CheckboxListTile( title: const Text('Enable voice'), value: GlobalSettings().voiceEnabled, onChanged: (bool? value) { setState(() { GlobalSettings().voiceEnabled = value!; }); widget.onVoiceEnabledChanged(value!); }, ), Padding( padding: const EdgeInsets.only(left: 12, right: 20), child: SizedBox( width: 220, // Width adjusted to match expanding triangle child: DropdownButton( isExpanded: true, value: GlobalSettings().selectedLanguage, items: buildLanguageDropdownItems(), onChanged: (value) { setState(() { GlobalSettings().languageChanged(value); }); }, ), ), ), ], ), ), ), actions: [ TextButton( child: const Text('Cancel'), onPressed: () { Navigator.pop(context); }, ), ElevatedButton( child: const Text( 'Save Settings', style: TextStyle(color: Colors.white), ), onPressed: () => _saveSettings(context), ), ], ); } } ================================================ FILE: legacy/app/lib/views/dialogs/api_key_dialog.dart ================================================ import 'package:flutter/material.dart'; import 'package:glowby/services/openai_api.dart'; import 'package:glowby/utils/utils.dart'; import '../../services/hugging_face_api.dart'; import '../../services/pulze_ai_api.dart'; class ApiKeyDialog extends StatefulWidget { const ApiKeyDialog({super.key}); @override ApiKeyDialogState createState() => ApiKeyDialogState(); } class ApiKeyDialogState extends State { static const openAIKeyPattern = r'^sk-[A-Za-z0-9-_]+$'; static const huggingFaceKeyPattern = r'^[A-Za-z0-9-_]+$'; static const pulzeAIKeyPattern = r'^sk-[A-Za-z0-9-_]+$'; final _apiKeyController = TextEditingController(); final _huggingFaceTokenController = TextEditingController(); final _pulzeAiController = TextEditingController(); String _apiKey = ''; String _huggingFaceToken = ''; String _pulzeAiToken = ''; @override void initState() { super.initState(); OpenAiApi.loadOat().then((_) { setState(() { _apiKey = OpenAiApi.oat(); _apiKeyController.text = _apiKey; _huggingFaceToken = HuggingFaceApi.oat(); _huggingFaceTokenController.text = _huggingFaceToken; _pulzeAiToken = PulzeAiApi.oat(); _pulzeAiController.text = _pulzeAiToken; }); }); } bool isValidOpenAIKey(String key) => RegExp(openAIKeyPattern).hasMatch(key); bool isValidHuggingFaceKey(String key) => RegExp(huggingFaceKeyPattern).hasMatch(key); bool isValidPuzzleAIKey(String key) => RegExp(pulzeAIKeyPattern).hasMatch(key); void _saveApiKey(BuildContext context) { String? errorMessage; if (_apiKey.isNotEmpty && !isValidOpenAIKey(_apiKey)) { errorMessage = 'OpenAI API Key is invalid!'; } else if (_huggingFaceToken.isNotEmpty && !isValidHuggingFaceKey(_huggingFaceToken)) { errorMessage = 'Hugging Face Token is invalid!'; } else if (_pulzeAiToken.isNotEmpty && !isValidPuzzleAIKey(_pulzeAiToken)) { errorMessage = 'Pulze API Key is invalid!'; } if (errorMessage != null) { // If there's an error, show the error message and exit the function after popping the dialog. Navigator.pop(context); // Hide the dialog ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text(errorMessage)), ); } else { // If all keys are valid, set them and show a success message. OpenAiApi.setOat(_apiKey); HuggingFaceApi.setOat(_huggingFaceToken); PulzeAiApi.setOat(_pulzeAiToken); Navigator.pop(context); // Hide the dialog ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('API Keys saved successfully!')), ); } } bool _obscureApiKey = true; bool _obscureApiKeyPulze = true; bool _obscureApiKeyHuggingFace = true; @override Widget build(BuildContext context) { return AlertDialog( title: const Text('Enter OpenAI API Key'), content: SizedBox( width: 340, // Set the max width of the AlertDialog child: SingleChildScrollView( child: ListBody( children: [ const Text('Get your API key:'), InkWell( child: const Text( '→ OpenAI Dashboard', style: TextStyle(color: Colors.blue), ), onTap: () => Utils.launchURL( 'https://platform.openai.com/account/api-keys'), ), const SizedBox(height: 10), const Text('API Key is stored locally and not shared.'), TextField( controller: _apiKeyController, obscureText: _obscureApiKey, decoration: InputDecoration( labelText: 'sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', suffixIcon: IconButton( icon: Icon( // Change the icon based on whether the text is obscured _obscureApiKey ? Icons.visibility_off : Icons.visibility, ), onPressed: () { // Update the state to toggle the obscure text value setState(() { _obscureApiKey = !_obscureApiKey; }); }, ), ), onChanged: (value) { setState(() { _apiKey = value; }); }, ), const SizedBox(height: 20), InkWell( child: const Text( 'API Key not working? Click Here.', style: TextStyle(color: Colors.blue), ), onTap: () => Utils.launchURL( 'https://platform.openai.com/account/billing/overview'), ), const Text('Make sure you have enough OpenAI credits.'), const SizedBox(height: 10), const Divider(), ExpansionTile( title: const Text( 'Pulze', style: TextStyle(fontWeight: FontWeight.bold), ), children: [ Align( alignment: Alignment.centerLeft, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 10), const Text('Get your Access Token:'), InkWell( child: const Text( '→ Pulze Dashboard', style: TextStyle(color: Colors.blue), ), onTap: () => Utils.launchURL('https://platform.pulze.ai/'), ), const SizedBox(height: 10), const Text('Enter your Pulze Token:'), TextField( controller: _pulzeAiController, obscureText: _obscureApiKeyPulze, decoration: InputDecoration( labelText: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', suffixIcon: IconButton( icon: Icon( // Change the icon based on whether the text is obscured _obscureApiKeyPulze ? Icons.visibility_off : Icons.visibility, ), onPressed: () { // Update the state to toggle the obscure text value setState(() { _obscureApiKeyPulze = !_obscureApiKeyPulze; }); }, ), ), onChanged: (value) { setState(() { _pulzeAiToken = value; }); }, ), const SizedBox(height: 20), ], ), ), ], ), const SizedBox(height: 10), const Divider(), const SizedBox(height: 10), ExpansionTile( title: const Text( '🤗 Hosted Inference API', style: TextStyle(fontWeight: FontWeight.bold), ), children: [ Align( alignment: Alignment.centerLeft, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 10), const Text('Get your Access Token:'), InkWell( child: const Text( '→ Hugging Face Dashboard', style: TextStyle(color: Colors.blue), ), onTap: () => Utils.launchURL( 'https://huggingface.co/settings/tokens'), ), const SizedBox(height: 10), const Text('Enter your Hugging Face Token:'), TextField( controller: _huggingFaceTokenController, obscureText: _obscureApiKeyHuggingFace, decoration: InputDecoration( labelText: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', suffixIcon: IconButton( icon: Icon( // Change the icon based on whether the text is obscured _obscureApiKeyHuggingFace ? Icons.visibility_off : Icons.visibility, ), onPressed: () { // Update the state to toggle the obscure text value setState(() { _obscureApiKeyHuggingFace = !_obscureApiKeyHuggingFace; }); }, ), ), onChanged: (value) { setState(() { _huggingFaceToken = value; }); }, ), const SizedBox(height: 20), ], ), ), ], ), ], ), ), ), actions: [ TextButton( child: const Text('Clear'), onPressed: () { setState(() { _apiKeyController.clear(); _apiKey = ''; _huggingFaceTokenController.clear(); _huggingFaceToken = ''; _pulzeAiController.clear(); _pulzeAiToken = ''; }); }, ), TextButton( child: const Text('Cancel'), onPressed: () { Navigator.pop(context); }, ), ElevatedButton( child: const Text( 'Save API Key', style: TextStyle(color: Colors.white), ), onPressed: () => _saveApiKey(context), ), ], ); } } ================================================ FILE: legacy/app/lib/views/html/html_view_screen.dart ================================================ // This file conditionally exports the appropriate implementation. export 'html_view_screen_interface.dart'; export 'html_view_screen_stub.dart' if (dart.library.html) 'html_view_screen_web.dart' if (dart.library.io) 'html_view_screen_desktop.dart'; ================================================ FILE: legacy/app/lib/views/html/html_view_screen_desktop.dart ================================================ // html_view_screen_stub.dart // import 'dart:async'; import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_highlight/flutter_highlight.dart'; import 'package:flutter_highlight/themes/github.dart'; import 'package:glowby/views/html/html_view_screen_interface.dart'; import 'package:glowby/views/html/html_view_screen_mobile.dart'; import 'package:path_provider/path_provider.dart'; import 'package:url_launcher/url_launcher_string.dart'; import 'package:flutter/foundation.dart'; class HtmlViewScreen extends StatelessWidget implements HtmlViewScreenInterface { final String htmlContent; final String appName; const HtmlViewScreen( {super.key, required this.htmlContent, required this.appName}); void _openCodeInBrowser(context) async { if (Platform.isIOS) { Navigator.push( context, MaterialPageRoute( builder: (context) => HtmlViewScreenMobile( htmlContent: htmlContent, appName: appName, ), ), ); } else { // Use default implementation final tempDir = await getTemporaryDirectory(); final tempFile = File('${tempDir.path}/temp.html'); await tempFile.writeAsString(htmlContent, flush: true); final url = tempFile.uri.toString(); if (await canLaunchUrlString(url)) { await launchUrlString(url); } else { if (kDebugMode) { print("Can't launch $url"); } } } } @override Widget build(BuildContext context) { /*WidgetsBinding.instance.addPostFrameCallback((_) { Timer(Duration(seconds: 2), () => _openCodeInBrowser(context)); });*/ return Scaffold( appBar: AppBar( title: Text('Placeholder for $appName'), ), body: Container( alignment: Alignment.center, child: SingleChildScrollView( // Makes the content scrollable padding: const EdgeInsets.all(16), // Adds padding around the edges child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ TextButton( onPressed: () => _openCodeInBrowser(context), child: const Text('Run'), ), TextButton( onPressed: () async { await Clipboard.setData(ClipboardData(text: htmlContent)); }, child: const Text('Download code'), ), const SizedBox(height: 20), // Code viewer for HTML content HighlightView( htmlContent, language: 'html', theme: githubTheme, // Choose the theme you like padding: const EdgeInsets.all( 12), // Adds padding inside the code viewer textStyle: const TextStyle(fontFamily: 'monospace', fontSize: 10.0), ), ], ), ), ), ); } } ================================================ FILE: legacy/app/lib/views/html/html_view_screen_interface.dart ================================================ import 'package:flutter/material.dart'; abstract class HtmlViewScreenInterface { Widget build(BuildContext context); } ================================================ FILE: legacy/app/lib/views/html/html_view_screen_mobile.dart ================================================ import 'package:flutter/material.dart'; import 'package:webview_flutter/webview_flutter.dart'; class HtmlViewScreenMobile extends StatefulWidget { final String htmlContent; final String appName; const HtmlViewScreenMobile( {super.key, required this.htmlContent, required this.appName}); @override HtmlViewScreenState createState() => HtmlViewScreenState(); } class HtmlViewScreenState extends State { late final WebViewController _controller; @override void initState() { _controller = WebViewController() ..setJavaScriptMode(JavaScriptMode.unrestricted) ..loadHtmlString(widget.htmlContent); super.initState(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Placeholder for ${widget.appName}'), ), body: WebViewWidget(controller: _controller), ); } } ================================================ FILE: legacy/app/lib/views/html/html_view_screen_stub.dart ================================================ // html_view_screen_stub.dart import 'package:flutter/material.dart'; class HtmlViewScreen extends StatelessWidget { final String htmlContent; final String appName; const HtmlViewScreen({super.key, required this.htmlContent, required this.appName}); @override Widget build(BuildContext context) { // For desktop, return an alternative widget or a placeholder return Scaffold( appBar: AppBar( title: Text('Placeholder for $appName'), ), body: const Center( child: Text('HTML content is not viewable in the desktop application.'), ), ); } } ================================================ FILE: legacy/app/lib/views/html/html_view_screen_web.dart ================================================ import 'dart:html'; import 'dart:html' as html; import 'dart:ui_web' as ui; import 'package:flutter/material.dart'; import 'package:glowby/views/html/html_view_screen_interface.dart'; class HtmlViewScreen extends StatelessWidget implements HtmlViewScreenInterface { final String htmlContent; final String appName; const HtmlViewScreen({super.key, required this.htmlContent, required this.appName}); @override Widget build(BuildContext context) { // Generate a unique key based on the html content. String contentKey = DateTime.now().millisecondsSinceEpoch.toString(); // Registers the web view with a unique key ui.platformViewRegistry.registerViewFactory( contentKey, (int viewId) { IFrameElement iframeElement = IFrameElement() ..style.border = 'none' ..style.height = '100%' ..style.width = '100%' ..srcdoc = htmlContent; return iframeElement; }, ); // Function to download the content void downloadContent() { final blob = html.Blob([htmlContent]); final url = html.Url.createObjectUrlFromBlob(blob); // ignore: unused_local_variable final anchor = html.AnchorElement(href: url) ..setAttribute("download", "$appName.html") ..click(); html.Url.revokeObjectUrl(url); } return Scaffold( appBar: AppBar( title: Text(appName), actions: [ IconButton( icon: const Icon(Icons.download, color: Colors.black), onPressed: downloadContent, // Trigger the download tooltip: 'Download Code', ), ], ), body: HtmlElementView( key: ValueKey(contentKey), // Use the unique key for the HtmlElementView viewType: contentKey, ), ); } } ================================================ FILE: legacy/app/lib/views/screens/chat_screen.dart ================================================ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:glowby/views/screens/global_settings.dart'; import 'package:url_launcher/url_launcher_string.dart'; import 'package:glowby/views/widgets/tasks_view.dart'; import '../../models/ai.dart'; import '../dialogs/ai_settings_dialog.dart'; import 'magical_loading_view.dart'; import '../widgets/message.dart'; import '../widgets/new_message.dart'; import '../widgets/messages.dart'; import '../../services/openai_api.dart'; import '../../utils/text_to_speech.dart'; // Import the new TextToSpeech class import '../dialogs/api_key_dialog.dart'; import '../../utils/timestamp.dart'; // Import the ApiKeyDialog widget import 'package:async/async.dart'; import 'package:flutter/foundation.dart'; class ChatScreen extends StatefulWidget { final List> _questions; final String _name; final bool _voice; final String? _selectedModel; final String? _selectedLanguage; final String? _systemPrompt; final bool? _allowEnterKey; final bool? _autonomousMode; final bool? _enableAi; final bool? _showAiSettings; final bool? _dnsgs; const ChatScreen( this._name, this._questions, this._voice, this._selectedModel, this._selectedLanguage, this._systemPrompt, this._allowEnterKey, this._autonomousMode, this._enableAi, this._showAiSettings, this._dnsgs, {super.key}); @override ChatScreenState createState() => ChatScreenState(); } class ChatScreenState extends State { var _autonomousMode = false; bool _loading = false; bool _voiceEnabled = true; void updateVoiceEnabled(bool value) { setState(() { _voiceEnabled = value; }); } final TextToSpeech textToSpeech = TextToSpeech(); // Initialize TextToSpeech final List _messages = []; @override void initState() { super.initState(); initializeVoiceEnabled(); loadGlobalSettings(); loadAPIKey(); } void initializeVoiceEnabled() { _voiceEnabled = widget._voice; } void loadGlobalSettings() { GlobalSettings().loadDialogValues( widget._selectedModel, widget._selectedLanguage, widget._systemPrompt, widget._autonomousMode, ); } void loadAPIKey() { OpenAiApi.loadOat().then((_) => setState(() {})); } // Refresh the UI state of the chat screen void refreshUI() { setState(() {}); } // Handle text-to-speech functionality independently void handleTextToSpeech() { if (widget._voice && _voiceEnabled) { try { if (_messages.isNotEmpty && _messages[0].userId == '007' && !_planImplementationInProgress) { textToSpeech.speakText(_messages[0].text, language: GlobalSettings().selectedLanguage); } } catch (e) { if (kDebugMode) { print('Error in text-to-speech: $e'); } } } } void refresh() { handleTextToSpeech(); refreshUI(); } void _showApiKeyDialog() { showDialog( context: context, builder: (BuildContext context) { return const ApiKeyDialog(); // Use the ApiKeyDialog widget }, ).then( (value) => setState(() {}), ); } void _showAiSettingsDialog() { showDialog( context: context, builder: (BuildContext context) { return AiSettingsDialog( onVoiceEnabledChanged: updateVoiceEnabled, ); }, ); } String extractPlanName(String response, String inputMessage) { RegExp inputMessagePattern = RegExp( r"(?:I want to|I'd like to|I'd love to|I wanna|let's|I desire to) (.+)", caseSensitive: false); RegExpMatch? inputMatch = inputMessagePattern.firstMatch(inputMessage); if (inputMatch != null && inputMatch.groupCount > 0) { return inputMatch.group(1)!; } else { RegExp planNamePattern = RegExp( r"Here's a (?:\d+-step|five-step) plan(?: to| for)?(?: break)?(?:ing)?(?: it)?(?: down)?(?: into)? ([^:]+):"); RegExpMatch? match = planNamePattern.firstMatch(response); if (match != null && match.groupCount > 0) { return match.group(1)!; } else { return 'Unnamed Plan'; } } } CancelableOperation? _currentOperation; Future> _generateTasks(String inputMessage) async { if (inputMessage != '') { _lastInputMessage = inputMessage; } if (_lastInputMessage == '') { return []; } setState(() { _loading = true; }); List tasks = []; try { _currentOperation = OpenAiApi.getResponseFromOpenAI(_lastInputMessage, customSystemPrompt: 'You are Glowby, an AI assistant designed to break down complex tasks into a manageable 5-step plan. The steps should be concise.'); String response = await _currentOperation!.value; if (response == 'Sorry, there was an error processing your request. Please try again later.') { _stopAutonomousMode(); Future.delayed(const Duration(microseconds: 200), () { setState(() { _autonomousMode = false; }); }); textToSpeech.speakText( 'Sorry, there was an error processing your request. Please try again later.'); return []; } //print('response: $response'); _planName = extractPlanName(response, _lastInputMessage); RegExp stepPattern = RegExp(r'(?:Step\s*\d+\s*:|^\d+\.)', multiLine: true); Iterable matches = stepPattern.allMatches(response); int startIndex = 0; for (RegExpMatch match in matches) { int endIndex = match.start; if (startIndex != 0) { tasks.add(response.substring(startIndex, endIndex).trim()); } startIndex = endIndex; String? nextMatch = match.group(0); if (nextMatch != null) { startIndex = endIndex + nextMatch.length; } } tasks.add(response.substring(startIndex).trim()); } catch (e) { if (kDebugMode) { print('Error getting tasks: $e'); } } setState(() { _loading = false; }); if (tasks.length < 2) { _stopAutonomousMode(); Future.delayed(const Duration(microseconds: 200), () { setState(() { _autonomousMode = false; }); }); textToSpeech .speakText('No plan detected! Please input a different message.'); return []; } if (_planName == 'Unnamed Plan') { textToSpeech.speakText('You plan is ready', language: GlobalSettings().selectedLanguage); } else { textToSpeech.speakText('You plan to $_planName is ready', language: GlobalSettings().selectedLanguage); } return tasks; } String _lastInputMessage = ''; String _planName = 'Unnamed Plan'; List _tasks = []; bool _planImplementationInProgress = false; bool _stopRequested = false; Future _implementPlan() async { _stopRequested = false; _planImplementationInProgress = true; // Send initial message to start working on the plan String initialMessage = "Let's work on $_planName. First: ${_tasks[0]}"; await _sendMessageOnBehalfOfUser(initialMessage, customSystemPrompt: 'You are Glowby, an AI assistant. The user has enabled the auto mode, which allows you to make choices on their behalf. Help the user with the following task and choose only one option, providing a concise action. Your answer should be short and informative. For example, if the task is to book accommodations in Dublin. Please provide a specific hotel name and location that you think the user should book:'); // Send messages for the rest of the tasks for (int i = 1; i < _tasks.length; i++) { if (_stopRequested) { _stopRequested = false; break; } await textToSpeech.speakText('Moving on to the next task.', language: GlobalSettings().selectedLanguage); String taskMessage = "Moving on to the next task. ${_tasks[i]}"; await _sendMessageOnBehalfOfUser(taskMessage, customSystemPrompt: 'You are Glowby, an AI assistant. The user has enabled the auto mode, which allows you to make choices on their behalf. Help the user with the following task and choose only one option, providing a concise action. Your answer should be short and informative. For example, if the task is to book accommodations in Dublin. Please provide a specific hotel name and location that you think the user should book:'); } if (!_stopRequested) { // Send the summary message and add a Copy button await _sendMessageOnBehalfOfUser('Summarizing...', customSystemPrompt: 'You are Glowby, an AI assistant. The user has enabled the auto mode, and you have followed your suggested concise actions for each task in the plan. Help the user summarize the plan, and provide all info from previous messages but in a shorter but still informative form. ', lastMessage: true); } } void insertMessage(String message, String userId, String username) { _messages.insert( 0, Message( text: message, createdAt: Timestamp.now(), userId: userId, username: username, )); } Future fetchResponseFromAPI( String message, String? customSystemPrompt) async { List> formattedPreviousMessages = _messages .map((message) => { 'role': message.userId == Ai.defaultUserId ? 'assistant' : 'user', 'content': message.text }) .toList() .reversed .toList(); _currentOperation = OpenAiApi.getResponseFromOpenAI( message, previousMessages: formattedPreviousMessages, customSystemPrompt: customSystemPrompt, ); return await _currentOperation!.value; } Future _sendMessageOnBehalfOfUser( String message, { String? customSystemPrompt, bool lastMessage = false, }) async { insertMessage(message, GlobalSettings().userId, GlobalSettings().userName); // Insert user's message refresh(); // Refresh UI String response = await fetchResponseFromAPI(message, customSystemPrompt); insertMessage(response, '007', widget._name == '' ? 'AI' : widget._name); // Insert AI's response // Update the UI if (lastMessage) { _planImplementationInProgress = false; } refresh(); if (!lastMessage) { await textToSpeech.speakText(response, language: GlobalSettings().selectedLanguage); } } // Inside your _ChatScreenState class void setLoading(bool value) { setState(() { _loading = value; }); } void setStopRequested(bool value) { setState(() { _stopRequested = value; }); } void setAutonomousMode(bool value) { setState(() { _autonomousMode = value; }); } void setPlanImplementationInProgress(bool value) { setState(() { _planImplementationInProgress = value; }); } void cancelCurrentOperation() { if (_currentOperation != null) { _currentOperation!.cancel(); _currentOperation = null; // Set to null after canceling } } void _stopAutonomousMode() { setLoading(false); setStopRequested(true); setAutonomousMode(false); setPlanImplementationInProgress(false); cancelCurrentOperation(); } void _showSocialLinksDialog() { showDialog( context: context, builder: (BuildContext context) { return AlertDialog( title: const Text('Share Glowby'), content: SingleChildScrollView( child: ListBody( children: _buildLinkItems(context), ), ), actions: [ TextButton( child: const Text('Close'), onPressed: () => Navigator.of(context).pop(), ), ], ); }, ); } List _buildLinkItems(BuildContext context) { final links = [ { 'title': 'App Store', 'url': 'https://apps.apple.com/us/app/glowby-genius/id6446417094' }, {'title': 'Glowby GPT', 'url': 'https://glowbom.com/glowby/gpt'}, { 'title': 'Draw-to-code Demo', 'url': 'https://twitter.com/jacobilin/status/1751365686344155250' }, {'title': 'Website (glowbom.com)', 'url': 'https://glowbom.com/'}, {'title': 'Twitter: @jacobilin', 'url': 'https://twitter.com/jacobilin'}, { 'title': 'Twitter: @GlowbomCorp', 'url': 'https://twitter.com/GlowbomCorp' }, { 'title': 'YouTube Channel', 'url': 'https://www.youtube.com/channel/UCrYQEQPhAHmn7N8W58nNwOw' }, { 'title': 'GitHub Repository', 'url': 'https://github.com/glowbom/glowby' }, ]; return links .map((link) => _buildLinkItem(link['title']!, link['url']!, context)) .toList(); } Widget _buildLinkItem(String text, String url, BuildContext context) { return Row( children: [ Expanded( child: GestureDetector( child: Text( text, style: const TextStyle( color: Colors.black, // Change this color to match your app's theme decoration: TextDecoration.underline, ), ), onTap: () async { if (await canLaunchUrlString(url)) { await launchUrlString(url); } else { throw 'Could not launch $url'; } if (mounted) { Navigator.of(context).pop(); } }, ), ), IconButton( icon: const Icon(Icons.copy), onPressed: () { Clipboard.setData(ClipboardData(text: url)).then((value) { // Show a snackbar or toast indicating the link was copied ScaffoldMessenger.of(context).showSnackBar( const SnackBar( content: Text('Link copied to clipboard!'), ), ); Navigator.of(context).pop(); }); }, ), ], ); } @override Widget build(BuildContext context) { return Center( child: Container( constraints: const BoxConstraints(minWidth: 100, maxWidth: 640), child: Column( children: [ _loading ? const MagicalLoadingView() : Expanded( child: Container( child: _autonomousMode ? TasksView( tasks: _tasks, name: _planName, onBackButtonPressed: () { setState(() { _autonomousMode = false; }); }, onRequestNewPlanButtonPressed: () async { List tasks = await _generateTasks(_lastInputMessage); setState(() { _autonomousMode = true; _tasks = tasks; }); }, onImplementPlanButtonPressed: () { setState(() { _autonomousMode = false; }); _implementPlan(); }, ) : Messages(_messages), ), ), if (!_autonomousMode && !_loading && !_planImplementationInProgress) NewMessage( refresh, _messages, widget._questions, widget._name, widget._enableAi, onAutonomousModeMessage: (String userInput) async { List tasks = await _generateTasks(userInput); setState(() { _autonomousMode = true; _tasks = tasks; }); }, ), if (!_autonomousMode && !_loading && !_planImplementationInProgress) Container( margin: const EdgeInsets.all(8), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ // Add the Social Links button if (widget._dnsgs! == false) Padding( padding: const EdgeInsets.only(left: 8.0), child: IconButton( icon: const Icon(Icons.share), onPressed: _showSocialLinksDialog, ), ), if (widget._allowEnterKey != null && widget._allowEnterKey!) ElevatedButton( onPressed: _showApiKeyDialog, child: const Text( 'Enter API Key', style: TextStyle(color: Colors.white), ), ), // Add the AI Settings button conditionally if (OpenAiApi.oat().isNotEmpty) if (widget._showAiSettings != null && widget._showAiSettings!) Padding( padding: const EdgeInsets.only(left: 8.0), child: ElevatedButton( onPressed: _showAiSettingsDialog, child: const Text( 'AI Settings', style: TextStyle(color: Colors.white), ), ), ), Padding( padding: const EdgeInsets.only(left: 8.0), child: ElevatedButton( onPressed: () async { String url = 'https://apps.apple.com/us/app/glowby-genius/id6446417094'; if (await canLaunchUrlString(url)) { await launchUrlString(url); } else { throw 'Could not launch $url'; } }, child: const Text( 'App Store', style: TextStyle(color: Colors.white), ), ), ), Padding( padding: const EdgeInsets.only(left: 8.0), child: ElevatedButton( onPressed: () async { String url = 'https://glowbom.com/glowby/gpt'; if (await canLaunchUrlString(url)) { await launchUrlString(url); } else { throw 'Could not launch $url'; } }, child: const Text( 'GPT', style: TextStyle(color: Colors.white), ), ), ), ], ), ), if (_planImplementationInProgress) const SizedBox( height: 50, child: Center( child: Text( 'Implementing plan...', style: TextStyle( color: Colors.black, fontSize: 20, ), ), ), ), if (_planImplementationInProgress) const CircularProgressIndicator(), const SizedBox(height: 20), // Add the Stop button when plan implementation is in progress if (_loading || _planImplementationInProgress) Padding( padding: const EdgeInsets.only(left: 8.0), child: IconButton( icon: const Icon(Icons.stop), onPressed: _stopAutonomousMode, tooltip: 'Stop', color: Colors.black, // Set the color of the stop icon to red ), ), const SizedBox(height: 20), ], ), ), ); } } ================================================ FILE: legacy/app/lib/views/screens/global_settings.dart ================================================ import 'package:glowby/services/hugging_face_api.dart'; import 'package:glowby/services/openai_api.dart'; class GlobalSettings { static final GlobalSettings _instance = GlobalSettings._internal(); String userId = 'Me'; String userName = 'Me'; bool voiceEnabled = true; String selectedLanguage = OpenAiApi.selectedLanguage; bool autonomousMode = false; String selectedModel = OpenAiApi.model; String systemPrompt = OpenAiApi.systemPrompt; String selectedPrompt = 'Simple Assistant Prompt'; String systemHuggingFacePrompt = HuggingFaceApi.systemMessage(); factory GlobalSettings() { return _instance; } GlobalSettings._internal(); void languageChanged(String? value) { if (value != null) { selectedLanguage = value; } } static const String storyPrompt = """AI crafts immersive, choice-driven adventures. Starting point: You perform a captivating dance, enchanting the goblins that swarm the Golden Gate Bridge. A fairy chuckles, "Impressive moves! A centipede must have taught you - they're always on their feet!" Using your magic, you banish the goblins and restore peace to the bridge. Your next decision awaits: 1. Venture into Chinatown. 2. Explore Fisherman's Wharf. 3. Investigate Alcatraz Island. 4. Enjoy a cable car ride. Human: You choose "Investigate Alcatraz Island." Direction "A ranger tasks you with finding the wizard Glowby in SF, providing a map and advice." AI: Continuing the adventure: While at Alcatraz, a friendly ranger approaches you. She reveals that you've been chosen for a special mission - locating a mysterious wizard named Glowby, hidden somewhere in San Francisco. She hands you a map and offers some helpful advice. Your options are: 1. Follow the map closely. 2. Ask for more details. 3. Search for additional clues. 4. Decline the mission. Human: You choose "Search for additional clues." Direction "A diary found at Alcatraz hints at Glowby's location in Nob Hill." AI: As you investigate Alcatraz for clues, you discover an ancient diary. Its pages hint that Glowby might be hiding in Nob Hill. Considering this new information, you have the following choices: 1. Return to the city. 2. Talk to locals. 3. Look for more evidence. 4. Head directly to Nob Hill. Human: You decide to "Head directly to Nob Hill." Direction "Arrive at grand Nob Hill, search for Glowby among Victorian mansions and luxury hotels." AI: Upon arrival, the grandeur of the historic neighborhood greets you. The search for Glowby carries on as you navigate the hilly streets, lined with Victorian mansions and luxury hotels. Your options are: 1. Explore a mysterious alley. 2. Visit a local cafe. 3. Consult a street magician. 4. Knock on a mansion door. Human: You choose "Visit a local cafe." Direction "You meet an intriguing character." AI: You step into a charming cafe and encounter an intriguing character at the counter. They greet you with a friendly smile and claim to know all about Glowby. Your choices now are: 1. Ask for directions. 2. Request more information about Glowby. 3. Offer a reward for help. 4. Ignore them and leave. Human: You choose anything you like. Direction comes from the next message. One think the story should be short and should have 4 actions only. As AI you return only one part at time. You skip "AI: " and start with the story part. """; List> prompts = [ { 'name': 'Complex Task Prompt', 'description': 'You are Glowby, an AI assistant designed to break down complex tasks into a manageable 5-step plan. For each step, you offer the user 3 options to choose from. Once the user selects an option, you proceed to the next step based on their choice. After the user has chosen an option for the fifth step, you provide them with a customized, actionable plan based on their previous responses. You only reveal the current step and options to ensure an engaging, interactive experience.', }, { 'name': 'Multilingual Translations', 'description': 'You are Glowby, an AI language helper who can provide translations of common phrases in different languages. When asked, you provide translations for any phrase or word in various languages. You should randomly choose only 4 languges (Strictly 4!) from the following langs English Spanish, Arabic, Portuguese, Bulgarian, French, Chinese (Simplified), Chinese (Traditional), Czech, Danish, Dutch, English, Finnish, French, German, Greek, Hebrew (Israel), Hungarian, Indonesian, Italian, Japanese, Korean, Mexican Spanish, Norwegian, Polish, Portuguese, Romanian, Russian, Slovak, Swedish, Thai, Turkish, Ukrainian, and Vietnamese. You strictly follow this format for each translation: “Nubmer. Language Name: Word of Phrase” for example: “1. Russian: Привет”— no language codes please, no transliteration please, just a number, language name and a requested phrase. ONLY the phrase in the original alphabet, NO! transliteration please.', }, { 'name': 'Brainstorming Prompt', 'description': 'Generate ideas with Glowby! As a super helpful, nice, and humorous AI assistant, Glowby is ready to provide you with a concise plan and assist in executing it. With Glowby by your side, you\'ll never feel stuck again. Let\'s get brainstorming!', }, { 'name': 'Simple Assistant Prompt', 'description': 'You are Glowby, super helpful, nice, and humorous AI assistant ready to help with anything. I like to joke around.', }, { 'name': 'Creative Writing Prompt', 'description': 'You are Glowby, a talented AI writer who helps users craft engaging and imaginative stories. Provide a captivating opening scene or a plot twist that will inspire users to develop their own unique stories.', }, { 'name': 'Problem Solving Prompt', 'description': 'You are Glowby, a resourceful AI assistant skilled in finding solutions to various problems. Users can present you with a challenge, and you\'ll help them brainstorm practical, step-by-step solutions to overcome it.', }, { 'name': 'Learning and Education Prompt', 'description': 'You are Glowby, an AI tutor who assists users with their learning needs. Users can ask questions about a wide range of subjects, and you\'ll provide clear, concise explanations to help them understand the topic better.', }, { 'name': 'Career and Job Advice Prompt', 'description': 'You are Glowby, an AI career coach who offers guidance on job-related matters. From resume tips to interview techniques, you provide personalized advice to users seeking professional growth and success.', }, { 'name': 'Daily Motivation Prompt', 'description': 'You are Glowby, an AI life coach who delivers daily doses of inspiration and motivation. Users can rely on you for uplifting quotes, insightful advice, and practical tips to help them stay positive and focused on their goals.', }, { 'name': 'Interactive Adventure Prompt', 'description': storyPrompt, }, { 'name': 'Habit Formation', 'description': 'Act as a dual PhD in sports psychology and neuroscience. Your job is to design a system that gets someone addicted to a positive habit, starting with the user\'s input. Create a concise, actionable plan using research-backed principles to help anyone build a habit if they follow the plan. Incorporate research such as BF Skinner\'s study of addiction, BJ Fogg\'s Behavioral Model, and similar research on addiction and compulsion. Be concise yet informative. Give a concise day-by-day plan for the first week. Your response should be fewer than 10 sentences.', }, { 'name': 'Stand-up Comedy Prompt', 'description': 'You are Glowby, a hilarious AI stand-up comedian, skilled in creating funny conversations that become popular on social media platforms like Reels. Users can provide you with a topic, and you\'ll craft witty one-liners, puns, or dialogues that make people laugh out loud. Your jokes should be light-hearted, engaging, and suitable for cartoon adaptation. Let\'s get the laughs rolling!' }, ]; void selectPrompt(String userInput) { for (var prompt in prompts) { if (prompt['description'] == userInput) { selectedPrompt = prompt['name']!; break; } } } void loadDialogValues(selectedModelInput, selectedLanguageInput, systemPromptInput, autonomousModeInput) { selectedPrompt = 'Simple Assistant Prompt'; selectedModel = OpenAiApi.model; systemPrompt = OpenAiApi.systemPrompt; selectedLanguage = OpenAiApi.selectedLanguage; autonomousMode = false; if (selectedModelInput != null && selectedModelInput != '') { selectedModel = selectedModelInput; } if (selectedLanguageInput != null && selectedLanguageInput != '') { selectedLanguage = selectedLanguageInput; } if (systemPromptInput != null && systemPromptInput != '') { systemPrompt = systemPromptInput; selectPrompt(systemPromptInput); } if (autonomousModeInput != null) { autonomousMode = autonomousModeInput; } } } ================================================ FILE: legacy/app/lib/views/screens/magical_loading_view.dart ================================================ import 'dart:math'; import 'package:flutter/material.dart'; class MagicalLoadingView extends StatefulWidget { const MagicalLoadingView({super.key}); @override MagicalLoadingViewState createState() => MagicalLoadingViewState(); } class MagicalLoadingViewState extends State with SingleTickerProviderStateMixin { late AnimationController _controller; final Random _random = Random(); String getRandomMessage() { int index = _random.nextInt(loadingMessages.length); return loadingMessages[index]; } @override void initState() { super.initState(); _controller = AnimationController( duration: const Duration(seconds: 2), vsync: this, )..repeat(); } @override void dispose() { _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Expanded( child: Center( child: Stack( alignment: Alignment.center, children: [ AnimatedBuilder( animation: _controller, builder: (context, child) { return CustomPaint( painter: _MagicalLoadingPainter(_controller.value), child: const SizedBox( width: 280, height: 280, ), ); }, ), Positioned( bottom: 0, child: SizedBox( width: 280, // Adjust this value according to your preference child: Text( getRandomMessage(), textAlign: TextAlign.center, maxLines: 2, // You can increase this value to accommodate more lines overflow: TextOverflow.ellipsis, style: const TextStyle( fontSize: 16, fontStyle: FontStyle.italic, color: Colors.black, ), ), ), ), ], ), ), ); } } class _MagicalLoadingPainter extends CustomPainter { final double progress; _MagicalLoadingPainter(this.progress); @override void paint(Canvas canvas, Size size) { final Paint circlePaint = Paint() ..style = PaintingStyle.stroke ..strokeWidth = 4 ..color = Colors.black.withOpacity( 0.5 + 0.5 * sin(2 * pi * progress)); // Set the color directly final centerX = size.width / 2; final centerY = size.height / 2; final radius = min(size.width, size.height) / 4; final outerRadius = radius * (1 + 0.3 * sin(2 * pi * progress)); canvas.drawCircle(Offset(centerX, centerY), radius, circlePaint); canvas.drawCircle(Offset(centerX, centerY), outerRadius, circlePaint); } @override bool shouldRepaint(covariant _MagicalLoadingPainter oldDelegate) { return oldDelegate.progress != progress; } } List loadingMessages = [ 'Generating magical plans...', 'Talking to planning masterminds...', 'Breaking down complex tasks...', 'Creating a manageable plan...', 'Assembling steps for success...', 'Crafting an achievable roadmap...', 'Designing your path to victory...', 'Simplifying your journey...', 'Unlocking the secrets of success...', 'Structuring the plan of action...', 'Organizing steps for clarity...', 'Outlining a clear strategy...', 'Dividing and conquering tasks...', 'Weaving a plan for triumph...', 'Mapping your way to accomplishment...', 'Carving your route to achievement...', 'Gathering insights for planning...', 'Turning chaos into order...', 'Constructing your plan of attack...', 'Laying the foundation for success...', 'Distilling the essence of victory...', 'Collating the blueprint for progress...', 'Forging a pathway to triumph...', 'Envisioning a successful future...', 'Formulating a winning strategy...', ]; ================================================ FILE: legacy/app/lib/views/screens/talk_screen.dart ================================================ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:glowby/services/openai_api.dart'; import 'package:glowby/services/pulze_ai_api.dart'; import 'package:glowby/utils/utils.dart'; import '../../utils/color_utils.dart'; import 'chat_screen.dart'; import '../../services/hugging_face_api.dart'; dynamic _content; class TalkState extends State { var _appScreen = 'Loading'; String? _title; String? _mainColor; bool? _voice = false; List> _questions = []; String? _selectedModel; String? _selectedLanguage; String? _systemPrompt; bool? _allowEnterKey; bool? _allowDataImport; bool? _autonomousMode; bool? _enableAi; bool? _showAiSettings; bool? _dnsgs; TalkState(); Future loadContentFromAssets() async { String data = await DefaultAssetBundle.of(context).loadString("assets/talk.glowbom"); return json.decode(data); } Future loadAPIKeys() async { await OpenAiApi.loadOat(); await HuggingFaceApi.loadOat(); await PulzeAiApi.loadOat(); } @override void initState() { super.initState(); resetApiKeys(); loadApiKeysAndInitializeState(); } void resetApiKeys() { OpenAiApi.resetOat(); HuggingFaceApi.resetOat(); PulzeAiApi.resetOat(); } void loadApiKeysAndInitializeState() { loadAPIKeys().then((value) => initializeTalkState()); } void initializeTalkState() { if (_content != null) { _questions = buildQuestions(_content['questions']); _title = _content['title']; _mainColor = _content['main_color'] ?? 'Blue'; _voice = _content['voice'] ?? false; _selectedModel = _content['ai_selected_model']; _selectedLanguage = _content['ai_selected_language']; _systemPrompt = _content['ai_system_prompt']; _allowEnterKey = _content['ai_allow_enter_key'] ?? true; _allowDataImport = _content['ai_allow_data_import'] ?? true; _autonomousMode = _content['ai_autonomous_mode'] ?? false; _enableAi = _content['ai_enable_ai'] ?? true; _showAiSettings = _content['ai_show_ai_settings'] ?? true; _pressed100(); } else { loadContentFromAssets().then((value) => setState(() { _content = value; _title = _content['title']; _mainColor = _content['main_color'] ?? 'Blue'; _voice = _content['voice'] ?? false; _selectedModel = _content['ai_selected_model']; _selectedLanguage = _content['ai_selected_language']; _systemPrompt = _content['ai_system_prompt']; _allowEnterKey = _content['ai_allow_enter_key'] ?? true; _allowDataImport = _content['ai_allow_data_import'] ?? true; _autonomousMode = _content['ai_autonomous_mode'] ?? false; _enableAi = _content['ai_enable_ai'] ?? true; _showAiSettings = _content['ai_show_ai_settings'] ?? true; _questions = buildQuestions(_content['questions']); _pressed100(); })); } } List> buildQuestions(List questionsData) { List> questions = List>.empty(growable: true); for (int i = 0; i < questionsData.length; i++) { dynamic item = questionsData[i]; Map question = { "title": item['title'].toString(), "description": item['description'].toString(), "buttonsTexts": List.from(item['buttonsTexts']), "buttonAnswers": List.from(item['buttonAnswers']), "answersCount": item['answersCount'], "goIndexes": List.from(item['goIndexes']), "answerPicture": item['answerPicture'].toString(), "answerPictureDelay": item['answerPictureDelay'], "goConditions": [], "heroValues": [], "picturesSpriteNames": ["", "", "", "", "", ""] }; questions.add(question); } return questions; } void _pressed100() { _dnsgs = _content != null && _content.containsKey('dnsgs') ? _content['dnsgs'] : false; if (_dnsgs == true) { setState(() { _appScreen = 'Test100'; }); } else { setState(() { _appScreen = 'Glowbom'; }); Future.delayed(const Duration(milliseconds: 1500), () { setState(() { _appScreen = 'Test100'; }); }); } } void _startFilePicker() async { Utils.startFilePicker().then((value) { if (value != null) { _content = value; keyIndex.value += 1; } }); } @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, title: 'Chat', theme: ThemeData( primaryColor: _mainColor == 'Green' ? const Color.fromRGBO(85, 185, 158, 1) : _mainColor == 'Blue' ? Colors.blue : _mainColor == 'Red' ? Colors.red : _mainColor == 'Black' ? Colors.black : Colors.grey, useMaterial3: true, elevatedButtonTheme: ElevatedButtonThemeData( style: ButtonStyle( backgroundColor: MaterialStateProperty.resolveWith( (Set states) { if (states.contains(MaterialState.pressed)) { // Color when the button is pressed return Colors.purple; } // Default color return _mainColor == 'Green' ? const Color.fromRGBO(85, 185, 158, 1) : _mainColor == 'Blue' ? Colors.blue : _mainColor == 'Red' ? Colors.red : _mainColor == 'Black' ? Colors.black : Colors.grey; }, ), // ... other button properties like foregroundColor for text color ), ), inputDecorationTheme: InputDecorationTheme( // Define the focused border with a black underline focusedBorder: UnderlineInputBorder( borderSide: BorderSide( color: _mainColor == 'Green' ? const Color.fromRGBO(85, 185, 158, 1) : _mainColor == 'Blue' ? Colors.blue : _mainColor == 'Red' ? Colors.red : _mainColor == 'Black' ? Colors.black : Colors.grey), ), // Define the enabled border with a black underline enabledBorder: UnderlineInputBorder( borderSide: BorderSide( color: _mainColor == 'Green' ? const Color.fromRGBO(85, 185, 158, 1) : _mainColor == 'Blue' ? Colors.blue : _mainColor == 'Red' ? Colors.red : _mainColor == 'Black' ? Colors.black : Colors.grey), ), // Defines the color of the label text when the TextField is focused or hovered labelStyle: TextStyle( color: _mainColor == 'Green' ? const Color.fromRGBO(85, 185, 158, 1) : _mainColor == 'Blue' ? Colors.blue : _mainColor == 'Red' ? Colors.red : _mainColor == 'Black' ? Colors.black : Colors.grey), // You can also define the hover color if needed // hoverColor: Colors.black, ), textSelectionTheme: const TextSelectionThemeData( selectionColor: Colors.grey, // Change this to your desired color ), primarySwatch: generateMaterialColor(_mainColor == 'Green' ? const Color.fromRGBO(85, 185, 158, 1) : _mainColor == 'Blue' ? Colors.blue : _mainColor == 'Red' ? Colors.red : _mainColor == 'Black' ? Colors.black : Colors.grey), ), home: Scaffold( appBar: AppBar( title: Text( _title != null ? _title! : 'Chat App', style: TextStyle( color: _mainColor == 'Green' ? const Color.fromRGBO(85, 185, 158, 1) : _mainColor == 'Blue' ? Colors.blue : _mainColor == 'Red' ? Colors.red : _mainColor == 'Black' ? Colors.black : Colors.grey, ), ), centerTitle: true, actions: [ if (_allowDataImport != null && _allowDataImport == true) IconButton( icon: Icon( Icons.file_upload, color: _mainColor == 'Green' ? const Color.fromRGBO(85, 185, 158, 1) : _mainColor == 'Blue' ? Colors.blue : _mainColor == 'Red' ? Colors.red : _mainColor == 'Black' ? Colors.black : Colors.grey, ), onPressed: _startFilePicker, ), ], ), body: _appScreen == 'Loading' ? const Center( child: Text('Loading...'), ) : _appScreen == 'Glowbom' ? const Center( child: Image(image: AssetImage('assets/glowbom.png')), ) : ChatScreen( _content != null && _content.containsKey('start_over') ? _content['start_over'] : 'AI', _questions, _voice!, _selectedModel, _selectedLanguage, _systemPrompt, _allowEnterKey, _autonomousMode, _enableAi, _showAiSettings, _dnsgs, ), ), ); } } ValueNotifier keyIndex = ValueNotifier(0); // A StatefulWidget that represents the main Talk widget. class Talk extends StatefulWidget { const Talk({super.key}); @override State createState() { return TalkState(); } } class TalkApp extends StatefulWidget { const TalkApp({super.key}); @override TalkAppState createState() => TalkAppState(); } class TalkAppState extends State { @override void initState() { super.initState(); keyIndex.addListener(() { setState(() {}); }); } @override Widget build(BuildContext context) { return Talk( key: Key(keyIndex.value.toString()), ); } } ================================================ FILE: legacy/app/lib/views/widgets/message.dart ================================================ import '../../utils/timestamp.dart'; /// A class representing a chat message with a text, timestamp, user ID, and optional username and link. class Message { /// The text content of the message. final String text; /// The timestamp when the message was created. final Timestamp createdAt; /// The user ID of the sender. final String userId; /// The username of the sender (optional). final String? username; /// A link associated with the message, if any. final String? link; Message({ required this.text, required this.createdAt, required this.userId, this.username, this.link, }); @override String toString() { List parts = [ 'Message(text: $text', 'createdAt: $createdAt', 'userId: $userId', ]; if (username != null) parts.add('username: $username'); if (link != null) parts.add('link: $link'); return '${parts.join(', ')})'; } } ================================================ FILE: legacy/app/lib/views/widgets/message_bubble.dart ================================================ import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:url_launcher/url_launcher.dart'; import 'package:flutter_highlight/flutter_highlight.dart'; import 'package:flutter_highlight/themes/github.dart'; import 'package:flutter/services.dart'; class MessageBubble extends StatelessWidget { final String message; final bool isMe; final String? username; final String? link; const MessageBubble(this.message, this.username, this.isMe, this.link, {super.key}); // Launches the link if it is valid void _launchLink({String l = ""}) async { final uri = Uri.parse(l == "" ? link! : l); if (await canLaunchUrl(uri)) { await launchUrl(uri); } else { throw Exception('Could not launch $link'); } } // Builds the message bubble container with the appropriate decoration Container _buildMessageBubbleContainer(BuildContext context) { return Container( decoration: BoxDecoration( // Different colors for sender and receiver color: isMe ? Colors.grey[300] : Theme.of(context).primaryColor, borderRadius: BorderRadius.only( topLeft: const Radius.circular(12), topRight: const Radius.circular(12), bottomLeft: Radius.circular(isMe ? 12 : 0), bottomRight: Radius.circular(isMe ? 0 : 12), ), ), width: 280, padding: const EdgeInsets.symmetric( vertical: 10, horizontal: 16, ), margin: const EdgeInsets.symmetric( vertical: 4, horizontal: 8, ), child: _buildMessageContent(context), ); } // Builds the message content, including the username, message, and link (if available) // CrossAxisAlignment is determined based on the sender (isMe) Column _buildMessageContent(BuildContext context) { return Column( crossAxisAlignment: isMe ? CrossAxisAlignment.end : CrossAxisAlignment.start, children: [ _buildUsernameText(context), _buildMessageOrLink(context), ], ); } // Builds the username text with bold font weight and appropriate color Text _buildUsernameText(BuildContext context) { return Text( username!, style: TextStyle( fontWeight: FontWeight.bold, color: isMe ? Colors.black : Colors.white70, ), ); } // This method checks if the message indicates an image should be displayed. // The message 'image' is a special keyword in our system that tells the app to render an image from the provided link. // This convention is used to differentiate between messages that are text and ones that should display an image. // The link is expected to be a direct URL to an image resource. // If the link does not result in a valid image, the image widget will handle the error and may fall back to a placeholder or error widget. Widget _buildMessageOrLink(BuildContext context) { if (link == null) { if (message.contains('```')) { // Split the message by the code block final parts = message.split('```'); final normalText = parts[0]; String codeBlock = parts.length > 1 ? parts[1] : ''; String language = 'plaintext'; // Check if there's a specified language final codeParts = codeBlock.split('\n'); if (codeParts.length > 1 && codeParts[0].trim().isNotEmpty) { language = codeParts[0].trim(); // The first line is the language codeBlock = codeParts.sublist(1).join('\n'); // The rest is the code } return Column( crossAxisAlignment: isMe ? CrossAxisAlignment.end : CrossAxisAlignment.start, children: [ // Display normal text as selectable SelectableText( normalText, style: TextStyle(color: isMe ? Colors.black : Colors.white70), textAlign: isMe ? TextAlign.end : TextAlign.start, ), // Display code block with syntax highlighting if (codeBlock.isNotEmpty) Container( padding: const EdgeInsets.all(8.0), color: Colors .grey[200], // Light grey background for the code block child: Column( children: [ HighlightView( codeBlock .trim(), // Trim the code block to remove leading/trailing whitespace language: language, // Specify the language theme: githubTheme, // Specify the theme for syntax highlighting textStyle: const TextStyle( fontFamily: 'monospace'), // Optional: specify text style ), // Copy Code button TextButton( onPressed: () { Clipboard.setData( ClipboardData(text: codeBlock.trim())); // Optionally, show a snackbar or toast to indicate that the code has been copied ScaffoldMessenger.of(context).showSnackBar( const SnackBar( content: Text('Code copied to clipboard!')), ); }, child: const Text('Copy Code'), ), ], ), ), // Display the rest of the message as selectable, if any if (parts.length > 2) SelectableText( parts.sublist(2).join('```'), style: TextStyle(color: isMe ? Colors.black : Colors.white70), textAlign: isMe ? TextAlign.end : TextAlign.start, ), ], ); } else { return _buildMessageText(context); } } else if (message == 'image') { return Image.network( link!, errorBuilder: (context, error, stackTrace) { // Fallback for when the image fails to load return _buildLinkButton(context); }, ); } else { return _buildLinkButton(context); } } // Builds the message text with the appropriate color and alignment Widget _buildMessageText(BuildContext context) { // Split the message by '**' to identify bold sections final parts = message.split('**'); List spans = []; // Regular expression to match URLs final urlRegex = RegExp(r'https?:\/\/[^\s)]+', caseSensitive: false); // Iterate over the parts and apply bold style to every second element for (int i = 0; i < parts.length; i++) { final part = parts[i]; // Check if the part contains a URL if (urlRegex.hasMatch(part)) { final matches = urlRegex.allMatches(part); int lastMatchEnd = 0; for (var match in matches) { // Add text before the URL spans.add(TextSpan( text: part.substring(lastMatchEnd, match.start), style: TextStyle( color: isMe ? Colors.black : Colors.white70, fontWeight: i % 2 == 1 ? FontWeight.bold : FontWeight.normal, ), )); // Add the URL with a link style and gesture recognizer spans.add(TextSpan( text: part.substring(match.start, match.end), style: const TextStyle( color: Colors.blue, decoration: TextDecoration.underline, ), recognizer: TapGestureRecognizer() ..onTap = () { _launchLink(l: part.substring(match.start, match.end)); }, )); lastMatchEnd = match.end; } // Add any remaining text after the last URL if (lastMatchEnd < part.length) { spans.add(TextSpan( text: part.substring(lastMatchEnd), style: TextStyle( color: isMe ? Colors.black : Colors.white70, fontWeight: i % 2 == 1 ? FontWeight.bold : FontWeight.normal, ), )); } } else { spans.add(TextSpan( text: part, style: TextStyle( color: isMe ? Colors.black : Colors.white70, fontWeight: i % 2 == 1 ? FontWeight.bold : FontWeight.normal, ), )); } } return SelectableText.rich( TextSpan(children: spans), textAlign: TextAlign.start, ); } // Existing _launchLink method can be used here // Builds the link button, which launches the link when pressed ElevatedButton _buildLinkButton(BuildContext context) { return ElevatedButton( style: ElevatedButton.styleFrom( backgroundColor: Colors.blue, // Background color ), onPressed: _launchLink, child: Text( message, textAlign: isMe ? TextAlign.end : TextAlign.start, style: TextStyle(color: isMe ? Colors.black : Colors.white70), ), ); } @override Widget build(BuildContext context) { // Aligns the message bubble to the right (sender) or left (receiver) side of the screen return Row( mainAxisAlignment: isMe ? MainAxisAlignment.end : MainAxisAlignment.start, children: [ _buildMessageBubbleContainer(context), ], ); } } ================================================ FILE: legacy/app/lib/views/widgets/messages.dart ================================================ import 'package:glowby/views/screens/global_settings.dart'; import 'message.dart'; import 'message_bubble.dart'; import 'package:flutter/material.dart'; /// A class representing the Messages widget, which displays a list of MessageBubble widgets. class Messages extends StatefulWidget { final List _messages; const Messages(this._messages, {super.key}); @override MessagesState createState() => MessagesState(); } class MessagesState extends State { late ScrollController _controller; @override void initState() { super.initState(); _controller = ScrollController(); } @override void dispose() { _controller.dispose(); super.dispose(); } /// Replaces language prefixes in the message text. String _processMessageText(String messageText) { const List languagePrefixes = [ 'Italian: ', 'German: ', 'Portuguese: ', 'Dutch: ', 'Russian: ', 'American Spanish: ', 'Mexican Spanish: ', 'Canadian French: ', 'French: ', 'Spanish: ', 'American English: ', 'Australian English: ', 'British English: ', 'English: ', ]; for (final prefix in languagePrefixes) { if (messageText.startsWith(prefix)) { // Replace only the first occurrence of the prefix messageText = messageText.replaceFirst(prefix, ''); break; // Since we found the prefix, no need to check the rest } } return messageText; } @override Widget build(BuildContext context) { return ListView.builder( reverse: true, itemCount: widget._messages.length, controller: _controller, itemBuilder: (ctx, index) { final message = widget._messages[index]; final processedText = _processMessageText(message.text); return MessageBubble( processedText, message.username, message.userId == GlobalSettings().userId, message.link, key: ValueKey(message.createdAt.toString()), ); }, ); } } ================================================ FILE: legacy/app/lib/views/widgets/new_message.dart ================================================ import 'dart:async'; import 'dart:math'; import 'package:flutter/foundation.dart'; import 'package:glowby/views/screens/global_settings.dart'; import 'package:glowby/views/widgets/paint_window.dart'; import 'package:glowby/utils/utils.dart'; import 'package:url_launcher/url_launcher_string.dart'; import 'message.dart'; import '../../services/openai_api.dart'; import '../../utils/timestamp.dart'; import 'package:flutter/material.dart'; import '../../models/ai.dart'; /// A class representing the NewMessage widget, which allows users to send messages and receive AI responses. class NewMessage extends StatefulWidget { final Function _refresh; final List _messages; final List>? _questions; final String? _name; final bool? _enableAi; final Function(String) onAutonomousModeMessage; const NewMessage(this._refresh, this._messages, this._questions, this._name, this._enableAi, {super.key, required this.onAutonomousModeMessage}); @override NewMessageState createState() => NewMessageState(); } class NewMessageState extends State { late Ai ai; final _controller = TextEditingController(); var _enteredMessage = ''; FocusNode? _focusNode; bool _isRecording = false; Timer? _voiceCancelTimer; bool _isProcessing = false; bool _stopRequested = false; void _onVoiceReady(text) { if (_isRecording) { if (_voiceCancelTimer != null) { _voiceCancelTimer!.cancel(); _voiceCancelTimer = null; } _controller.value = TextEditingValue(text: text); _enteredMessage = text; _sendMessage(); setState(() { _isRecording = false; }); } } @override void initState() { if (kIsWeb) { // Uncomment the next line to compile the web version Utils.initializeState(_onVoiceReady); } ai = Ai( widget._name, widget._questions, ); super.initState(); _focusNode = FocusNode(); } @override void dispose() { // Clean up the focus node when the Form is disposed. _focusNode!.dispose(); super.dispose(); } void _voiceMessage() { if (_isRecording) { return; } Utils.recordVoice(GlobalSettings().selectedLanguage); setState(() { _isRecording = true; }); if (_voiceCancelTimer != null) { _voiceCancelTimer!.cancel(); _voiceCancelTimer = null; } _voiceCancelTimer = Timer(const Duration(seconds: 8), () { if (_isRecording) { setState(() { _isRecording = false; _voiceCancelTimer = null; }); } }); } void _sendMessage() async { _stopRequested = false; FocusScope.of(context).unfocus(); _addUserMessageToChat(); final message = _enteredMessage.trim(); _resetMessageInput(); if (Utils.isImageGenerationCommand(message)) { await handleImageGenerationCommand(message); } // Check if Autonomous mode is on else if (GlobalSettings().autonomousMode) { handleAutonomousMode( message); // Call the callback function with the user's input } else { await _processUserMessage(message); } } void _resetMessageInput() { _controller.value = TextEditingValue.empty; _focusNode!.requestFocus(); _enteredMessage = ''; } void _addUserMessageToChat() { widget._messages.insert( 0, Message( text: _enteredMessage.trim(), createdAt: Timestamp.now(), userId: GlobalSettings().userId, username: GlobalSettings().userName), ); } Future _processUserMessage(String message) async { // Add a new message instance indicating that the AI is typing Message typingMessage = Message( text: 'typing...', createdAt: Timestamp.now(), userId: Ai.defaultUserId, username: widget._name == '' ? 'AI' : widget._name, ); widget._messages.insert(0, typingMessage); widget._refresh(); // Select the last 5 messages (excluding the user's input message) int messageHistoryCount = min(20, widget._messages.length - 1); List previousMessages = widget._messages.sublist(1, messageHistoryCount + 1); // Convert previousMessages to the format expected by the API List> formattedPreviousMessages = previousMessages .map((message) { return { 'role': message.userId == Ai.defaultUserId ? 'assistant' : 'user', 'content': message.text }; }) .toList() .reversed .toList(); setState(() { _isProcessing = true; // Set to true before processing }); var response = await ai.message(message, previousMessages: formattedPreviousMessages, aiEnabled: widget._enableAi == null ? true : widget._enableAi!); if (_stopRequested) { return; } setState(() { _isProcessing = false; // Set to false after processing }); // Remove the typing message instance when the response is received widget._messages.remove(typingMessage); if (response.isNotEmpty) { for (Message m in response) { widget._messages.insert( 0, m, ); } } widget._refresh(); } Future handleAutonomousMode(String message) async { widget.onAutonomousModeMessage(message); } Future handleImageGenerationCommand(String message) async { final pattern = Utils.getMatchingPattern(message); final description = pattern != null ? message.replaceAll(RegExp(pattern, caseSensitive: false), '').trim() : ''; //print('description: $description'); //print('enableAi: ${widget._enableAi}'); if (description.isNotEmpty && (widget._enableAi == null || widget._enableAi!)) { Message drawingMessage = Message( text: Utils.getRandomImageGenerationFunnyMessage(), createdAt: Timestamp.now(), userId: Ai.defaultUserId, username: widget._name == '' ? 'AI' : widget._name, ); widget._messages.insert(0, drawingMessage); widget._refresh(); // Generate the image try { final imageUrl = (await OpenAiApi.generateImageUrl(description))!; Message message = Message( text: 'Here is your image!', createdAt: Timestamp.now(), userId: Ai.defaultUserId, username: widget._name == '' ? 'AI' : widget._name, link: imageUrl, ); widget._messages.remove(drawingMessage); widget._messages.insert(0, message); widget._messages.insert( 0, Message( text: Utils.getRandomImageReadyMessage(), createdAt: Timestamp.now(), userId: Ai.defaultUserId, username: widget._name == '' ? 'AI' : widget._name, )); widget._refresh(); Utils.downloadImage(imageUrl, description); } catch (e) { // Handle the exception and emit an error state widget._messages.remove(drawingMessage); Message message = Message( text: 'Something went wrong. Please try again later.', createdAt: Timestamp.now(), userId: Ai.defaultUserId, username: widget._name == '' ? 'AI' : widget._name, ); widget._messages.remove(drawingMessage); widget._messages.insert(0, message); widget._refresh(); } } } void _stopProcessing() { // Set the stop requested flag _stopRequested = true; // Use setState to update the state and UI accordingly setState(() { // Set the processing flag to false _isProcessing = false; // If there's a typing message, remove it if (widget._messages.isNotEmpty && widget._messages[0].text == "typing...") { widget._messages.removeAt(0); } // Refresh the widget to reflect the changes widget._refresh(); }); // Cancel any ongoing network operation if it exists ai.getCurrentNetworkOperation()?.cancel(); } /* method for opening a paint window */ void _openPaintWindow() async { const url = 'https://glowbom.com/draw/'; if (await canLaunchUrlString(url)) { await launchUrlString(url); } else { throw 'Could not launch $url'; } /*showDialog( context: context, builder: (BuildContext context) { return const PaintWindow(); }, );*/ } @override Widget build(BuildContext context) { return Container( margin: const EdgeInsets.only(top: 8), padding: const EdgeInsets.all(8), child: Row( children: [ Expanded( child: Padding( padding: const EdgeInsets.only(bottom: 20), child: TextField( cursorColor: Theme.of(context).primaryColor, textInputAction: TextInputAction.send, focusNode: _focusNode, autofocus: true, controller: _controller, textCapitalization: TextCapitalization.sentences, autocorrect: true, enableSuggestions: true, style: TextStyle(color: Theme.of(context).primaryColor), decoration: const InputDecoration(labelText: 'Send message...'), onChanged: (value) { setState(() { _enteredMessage = value; }); }, onSubmitted: (value) { if (_enteredMessage.trim().isNotEmpty) { _sendMessage(); // Clear the content of the TextEditingController after sending the message Future.delayed(const Duration(microseconds: 500), () { _controller.clear(); }); } }, keyboardType: TextInputType.multiline, maxLines: 9, minLines: 1, ), ), ), if (kIsWeb && !_isProcessing) IconButton( color: Theme.of(context).primaryColor, icon: Icon( _isRecording ? Icons.record_voice_over : Icons.keyboard_voice, ), onPressed: _voiceMessage, ), if (!_isProcessing) IconButton( color: Theme.of(context).primaryColor, icon: const Icon( Icons.brush, ), onPressed: _openPaintWindow, ), if (_isProcessing) IconButton( color: Theme.of(context).primaryColor, icon: const Icon(Icons.stop), onPressed: _stopProcessing, ), IconButton( color: Theme.of(context).primaryColor, icon: const Icon( Icons.send, ), onPressed: _enteredMessage.trim().isEmpty ? null : _sendMessage, ), ], ), ); } } class MediaType {} ================================================ FILE: legacy/app/lib/views/widgets/paint_window.dart ================================================ import 'dart:async'; import 'dart:convert'; import 'dart:math'; import 'package:flutter/material.dart'; import 'package:flutter_image_compress/flutter_image_compress.dart'; import 'package:glowby/views/dialogs/ai_error_dialog.dart'; import 'package:glowby/views/html/html_view_screen.dart'; import 'dart:ui' as ui; import 'package:glowby/services/openai_api.dart'; import 'package:glowby/utils/utils.dart'; import 'package:flutter/foundation.dart'; class PaintWindow extends StatefulWidget { const PaintWindow({super.key}); @override PaintWindowState createState() => PaintWindowState(); } class PaintWindowState extends State { final int width = 600; final int height = 450; List points = []; final TextEditingController nameController = TextEditingController(); String creationName = ''; bool isLoading = false; Uint8List? imgBytes; ui.Image? drawingImage; @override void dispose() { nameController.dispose(); super.dispose(); } // This function converts the drawing (list of points) to a base64 string Future convertToBase64JpegMobile(List points) async { // Create a picture recorder to record the canvas operations final ui.PictureRecorder recorder = ui.PictureRecorder(); final Canvas canvas = Canvas(recorder); // Draw your points here onto the canvas final paint = Paint() ..color = Colors.black ..strokeCap = StrokeCap.round ..strokeWidth = 2.0; for (int i = 0; i < points.length - 1; i++) { if (points[i] != null && points[i + 1] != null) { canvas.drawLine(points[i]!, points[i + 1]!, paint); } } // End recording the canvas operations final ui.Picture picture = recorder.endRecording(); // Convert the picture to an image final ui.Image image = await picture.toImage( width, height); // Set the width and height as needed final ByteData? byteData = await image.toByteData(format: ui.ImageByteFormat.rawRgba); if (byteData == null) { if (kDebugMode) { print("Failed to obtain byte data from image"); } return ''; } // Compress the image and get JPEG format Uint8List final Uint8List imgBytes = await FlutterImageCompress.compressWithList( byteData.buffer.asUint8List(), minWidth: width, minHeight: height, quality: 100, // Adjust the quality as needed format: CompressFormat.jpeg, ); // Base64 encode the JPEG bytes final String base64String = base64Encode(imgBytes); return base64String; } // This function converts the drawing (list of points) to a base64 string Future convertToBase64Png(List points) async { // Create a picture recorder to record the canvas operations final ui.PictureRecorder recorder = ui.PictureRecorder(); final Canvas canvas = Canvas(recorder); // Draw your points here onto the canvas final paint = Paint() ..color = Colors.black ..strokeCap = StrokeCap.round ..strokeWidth = 2.0; for (int i = 0; i < points.length - 1; i++) { if (points[i] != null && points[i + 1] != null) { canvas.drawLine(points[i]!, points[i + 1]!, paint); } } // End recording the canvas operations final ui.Picture picture = recorder.endRecording(); // Convert the picture to an image final ui.Image image = await picture.toImage( width, height); // Set the width and height as needed final ByteData? byteData = await image.toByteData(format: ui.ImageByteFormat.png); // Convert the byte data to a Uint8List final Uint8List imgBytes = byteData!.buffer.asUint8List(); // Base64 encode the image bytes final String base64String = base64Encode(imgBytes); return base64String; } Future callOpenAI() async { if (isLoading) { return; } setState(() { isLoading = true; }); // Convert points to a suitable format and call OpenAI method // For example, you might convert points to an image and then to base64 //String imageBase64 = await convertToBase64Jpeg(points); if (drawingImage != null) { // Introduce a delay before executing the code await Future.delayed(const Duration(milliseconds: 800)); } String imageBase64 = await Utils.convertToBase64JpegWeb(points, drawingImage, width, height); // this is for testing // imgBytes = base64Decode(imageBase64); // Implement this function String htmlResponse = await OpenAiApi().getHtmlFromOpenAI(imageBase64, creationName); String htmlContent = creationName; if (htmlResponse == '') { if (mounted) { Navigator.of(context).pop(); } _showAiErrorDialog(); return; } try { htmlContent = htmlResponse.split("```html")[1].split('```')[0]; } catch (e) { htmlContent = htmlResponse; } // Use the captured context after the async gap if (mounted) { Navigator.push( context, // use the safeContext that was captured before the async gap MaterialPageRoute( builder: (context) => HtmlViewScreen( htmlContent: htmlContent, appName: creationName, ), ), ); } setState(() { isLoading = false; }); clear(); } void _showAiErrorDialog() { showDialog( context: context, builder: (BuildContext context) { return const AiErrorDialog(); }, ).then( (value) => setState(() {}), ); } void clear() { drawingImage = null; nameController.clear(); setState(() { points.clear(); }); } Future loadImage(Uint8List imageBytes) async { final Completer completer = Completer(); ui.decodeImageFromList(imageBytes, (ui.Image img) { if (!completer.isCompleted) { completer.complete(img); } }); drawingImage = await completer.future; setState(() {}); // Trigger a repaint } Future downloadImage() async {} Future uploadImage() async { try { final Uint8List? value = await Utils.pickImage(); if (value != null) { await loadImage(value); // Load the image and update the state } } catch (e) { // Handle the error or display an error message if (kDebugMode) { print('Error picking image: $e'); } } /*final picker = ImagePicker(); final pickedFile = await picker.getImage(source: ImageSource.gallery); if (pickedFile != null) { // If the pickedFile is not null, then we have a path to the image file. // You can now upload this image to a server or use it in your application. final File imageFile = File(pickedFile.path); // Implement your image upload functionality here } else { print('No image selected.'); }*/ } @override Widget build(BuildContext context) { if (imgBytes != null) { return Image.memory(imgBytes!); } return AlertDialog( title: const Text('Magic Window (Powered by GPT-4 with Vision)'), content: SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.min, children: [ Container( width: width.toDouble(), height: height.toDouble(), decoration: BoxDecoration( border: Border.all(color: Colors.black), color: Colors.white, ), child: GestureDetector( onPanUpdate: (DragUpdateDetails details) { setState(() { RenderBox renderBox = context.findRenderObject() as RenderBox; points.add(renderBox.globalToLocal(details.localPosition)); }); }, onPanEnd: (DragEndDetails details) { setState(() { points.add( null); // Add a null to the list to separate the lines }); }, child: CustomPaint( painter: DrawingPainter(points: points, image: drawingImage), size: Size.infinite, ), ), ), Padding( padding: const EdgeInsets.all(8.0), child: SizedBox( width: width.toDouble(), // Set your desired maximum width here child: TextField( controller: nameController, decoration: const InputDecoration( labelText: 'Name your creation', ), onChanged: (value) { creationName = value; }, ), ), ), Row( mainAxisAlignment: MainAxisAlignment.start, children: [ IconButton( icon: const Icon(Icons.image), onPressed: uploadImage, ), IconButton( icon: const Icon(Icons.download), onPressed: downloadImage, ), ], ), ], ), ), actions: [ if (isLoading && drawingImage != null) const Text('Loading...') else if (isLoading) const CircularProgressIndicator() else TextButton( onPressed: clear, child: const Text('Clear'), ), TextButton( onPressed: callOpenAI, child: const Text( 'Build'), // Here we call the method to process the drawing ), TextButton( child: const Text('Close'), onPressed: () { Navigator.of(context).pop(); }, ), ], ); } } class DrawingPainter extends CustomPainter { final List points; final ui.Image? image; DrawingPainter({required this.points, this.image}); void paintImage( {required Canvas canvas, required ui.Image image, required Size size}) { // Calculate the scale factor to fit the image within the canvas if needed final double scaleFactor = min(size.width / image.width, size.height / image.height); // Calculate the destination rectangle for the scaled image final Rect destRect = Rect.fromLTWH( (size.width - image.width * scaleFactor) / 2, (size.height - image.height * scaleFactor) / 2, image.width * scaleFactor, image.height * scaleFactor, ); // Draw the scaled image at the center position canvas.drawImageRect( image, Rect.fromLTWH(0, 0, image.width.toDouble(), image.height.toDouble()), destRect, Paint()); } @override void paint(Canvas canvas, Size size) { // If there's an image, draw it if (image != null) { paintImage(canvas: canvas, image: image!, size: size); } var paint = Paint() ..color = Colors.black ..strokeCap = StrokeCap.round ..strokeWidth = 2.0; for (int i = 0; i < points.length - 1; i++) { if (points[i] != null && points[i + 1] != null) { // Check if both points are within the bounds of the CustomPaint widget if (points[i]!.dx >= 0 && points[i]!.dx <= size.width && points[i]!.dy >= 0 && points[i]!.dy <= size.height && points[i + 1]!.dx >= 0 && points[i + 1]!.dx <= size.width && points[i + 1]!.dy >= 0 && points[i + 1]!.dy <= size.height) { canvas.drawLine(points[i]!, points[i + 1]!, paint); } } } } @override bool shouldRepaint(covariant CustomPainter oldDelegate) => true; } ================================================ FILE: legacy/app/lib/views/widgets/tasks_view.dart ================================================ import 'package:flutter/material.dart'; class TasksView extends StatefulWidget { final List tasks; final String name; final Function onImplementPlanButtonPressed; final Function onRequestNewPlanButtonPressed; final Function onBackButtonPressed; const TasksView( {super.key, required this.tasks, required this.name, required this.onImplementPlanButtonPressed, required this.onRequestNewPlanButtonPressed, required this.onBackButtonPressed}); @override TasksViewState createState() => TasksViewState(); } class TasksViewState extends State with SingleTickerProviderStateMixin { List _tasks = []; final TextEditingController _newTaskController = TextEditingController(); final FocusNode _inputFocusNode = FocusNode(); final ScrollController _scrollController = ScrollController(); int? _selectedTaskIndex; late AnimationController _delayController; @override void initState() { super.initState(); _delayController = AnimationController( vsync: this, duration: const Duration(milliseconds: 100), ); _tasks = widget.tasks; } @override void dispose() { _delayController.dispose(); _newTaskController.dispose(); _inputFocusNode.dispose(); _scrollController.dispose(); super.dispose(); } Widget _buildTaskItem(int index) { if (index == _selectedTaskIndex) { return TextFormField( initialValue: _tasks[index], autofocus: true, onFieldSubmitted: (value) { setState(() { _tasks[index] = value; _selectedTaskIndex = null; }); }, ); } else { return InkWell( onTap: () { setState(() { _selectedTaskIndex = index; }); }, child: Text(_tasks[index]), ); } } void _confirmDeletion(BuildContext context, int index) { showDialog( context: context, builder: (BuildContext context) { return AlertDialog( title: const Text('Confirm Deletion'), content: const Text('Are you sure you want to delete this task?'), actions: [ TextButton( child: const Text('Cancel'), onPressed: () { Navigator.of(context).pop(); // Dismiss the dialog }, ), TextButton( child: const Text('Delete'), onPressed: () { setState(() { _tasks.removeAt(index); }); Navigator.of(context).pop(); // Dismiss the dialog }, ), ], ); }, ); } Widget _buildTaskList() { return ListView.separated( controller: _scrollController, itemCount: _tasks.length, separatorBuilder: (context, index) => const Divider(), itemBuilder: (context, index) { return ListTile( title: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text('${index + 1}. '), Expanded(child: _buildTaskItem(index)), IconButton( icon: const Icon(Icons.delete), onPressed: () => _confirmDeletion(context, index), ), ], ), ); }, ); } Widget _buildAddTaskForm() { return TextFormField( controller: _newTaskController, focusNode: _inputFocusNode, decoration: const InputDecoration(labelText: 'Add a new task'), onFieldSubmitted: (value) { setState(() { _tasks.add(value); _newTaskController.clear(); _inputFocusNode.requestFocus(); }); _delayController.forward(from: 0).then((_) { _scrollController.animateTo( _scrollController.position.maxScrollExtent, duration: const Duration(milliseconds: 500), curve: Curves.easeOut, ); }); }); } @override Widget build(BuildContext context) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.all(8.0), child: Text( widget.name == 'Unnamed Plan' ? widget.name : 'Plan to ${widget.name}', style: const TextStyle(fontSize: 24, fontWeight: FontWeight.bold), ), ), Expanded(child: _buildTaskList()), _buildAddTaskForm(), Row( mainAxisAlignment: MainAxisAlignment.end, children: [ TextButton( child: const Text('Return to Chat'), onPressed: () { widget.onBackButtonPressed(); }, ), TextButton( child: const Text('Request New Plan'), onPressed: () { widget.onRequestNewPlanButtonPressed(); }, ), ElevatedButton( child: const Text('Implement Plan', style: TextStyle(color: Colors.white)), onPressed: () { widget.onImplementPlanButtonPressed(); }, ), ], ), const SizedBox(height: 8), ], ); } } ================================================ FILE: legacy/app/linux/.gitignore ================================================ flutter/ephemeral ================================================ FILE: legacy/app/linux/CMakeLists.txt ================================================ # Project-level configuration. cmake_minimum_required(VERSION 3.10) project(runner LANGUAGES CXX) # The name of the executable created for the application. Change this to change # the on-disk name of your application. set(BINARY_NAME "app") # The unique GTK application identifier for this application. See: # https://wiki.gnome.org/HowDoI/ChooseApplicationID set(APPLICATION_ID "com.yourapp.app") # Explicitly opt in to modern CMake behaviors to avoid warnings with recent # versions of CMake. cmake_policy(SET CMP0063 NEW) # Load bundled libraries from the lib/ directory relative to the binary. set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") # Root filesystem for cross-building. if(FLUTTER_TARGET_PLATFORM_SYSROOT) set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) endif() # Define build configuration options. if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Flutter build mode" FORCE) set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Profile" "Release") endif() # Compilation settings that should be applied to most targets. # # Be cautious about adding new options here, as plugins use this function by # default. In most cases, you should add new options to specific targets instead # of modifying this function. function(APPLY_STANDARD_SETTINGS TARGET) target_compile_features(${TARGET} PUBLIC cxx_std_14) target_compile_options(${TARGET} PRIVATE -Wall -Werror) target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") endfunction() # Flutter library and tool build rules. set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") add_subdirectory(${FLUTTER_MANAGED_DIR}) # System-level dependencies. find_package(PkgConfig REQUIRED) pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") # Define the application target. To change its name, change BINARY_NAME above, # not the value here, or `flutter run` will no longer work. # # Any new source files that you add to the application should be added here. add_executable(${BINARY_NAME} "main.cc" "my_application.cc" "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" ) # Apply the standard set of build settings. This can be removed for applications # that need different build settings. apply_standard_settings(${BINARY_NAME}) # Add dependency libraries. Add any application-specific dependencies here. target_link_libraries(${BINARY_NAME} PRIVATE flutter) target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) # Run the Flutter tool portions of the build. This must not be removed. add_dependencies(${BINARY_NAME} flutter_assemble) # Only the install-generated bundle's copy of the executable will launch # correctly, since the resources must in the right relative locations. To avoid # people trying to run the unbundled copy, put it in a subdirectory instead of # the default top-level location. set_target_properties(${BINARY_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" ) # Generated plugin build rules, which manage building the plugins and adding # them to the application. include(flutter/generated_plugins.cmake) # === Installation === # By default, "installing" just makes a relocatable bundle in the build # directory. set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) endif() # Start with a clean build bundle directory every time. install(CODE " file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") " COMPONENT Runtime) set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" COMPONENT Runtime) install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) install(FILES "${bundled_library}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) endforeach(bundled_library) # Copy the native assets provided by the build.dart from all packages. set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/") install(DIRECTORY "${NATIVE_ASSETS_DIR}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) # Fully re-copy the assets directory on each build to avoid having stale files # from a previous install. set(FLUTTER_ASSET_DIR_NAME "flutter_assets") install(CODE " file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") " COMPONENT Runtime) install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) # Install the AOT library on non-Debug builds only. if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) endif() ================================================ FILE: legacy/app/linux/flutter/CMakeLists.txt ================================================ # This file controls Flutter-level build steps. It should not be edited. cmake_minimum_required(VERSION 3.10) set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") # Configuration provided via flutter tool. include(${EPHEMERAL_DIR}/generated_config.cmake) # TODO: Move the rest of this into files in ephemeral. See # https://github.com/flutter/flutter/issues/57146. # Serves the same purpose as list(TRANSFORM ... PREPEND ...), # which isn't available in 3.10. function(list_prepend LIST_NAME PREFIX) set(NEW_LIST "") foreach(element ${${LIST_NAME}}) list(APPEND NEW_LIST "${PREFIX}${element}") endforeach(element) set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) endfunction() # === Flutter Library === # System-level dependencies. find_package(PkgConfig REQUIRED) pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") # Published to parent scope for install step. set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) list(APPEND FLUTTER_LIBRARY_HEADERS "fl_basic_message_channel.h" "fl_binary_codec.h" "fl_binary_messenger.h" "fl_dart_project.h" "fl_engine.h" "fl_json_message_codec.h" "fl_json_method_codec.h" "fl_message_codec.h" "fl_method_call.h" "fl_method_channel.h" "fl_method_codec.h" "fl_method_response.h" "fl_plugin_registrar.h" "fl_plugin_registry.h" "fl_standard_message_codec.h" "fl_standard_method_codec.h" "fl_string_codec.h" "fl_value.h" "fl_view.h" "flutter_linux.h" ) list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") add_library(flutter INTERFACE) target_include_directories(flutter INTERFACE "${EPHEMERAL_DIR}" ) target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") target_link_libraries(flutter INTERFACE PkgConfig::GTK PkgConfig::GLIB PkgConfig::GIO ) add_dependencies(flutter flutter_assemble) # === Flutter tool backend === # _phony_ is a non-existent file to force this command to run every time, # since currently there's no way to get a full input/output list from the # flutter tool. add_custom_command( OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} ${CMAKE_CURRENT_BINARY_DIR}/_phony_ COMMAND ${CMAKE_COMMAND} -E env ${FLUTTER_TOOL_ENVIRONMENT} "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} VERBATIM ) add_custom_target(flutter_assemble DEPENDS "${FLUTTER_LIBRARY}" ${FLUTTER_LIBRARY_HEADERS} ) ================================================ FILE: legacy/app/linux/flutter/generated_plugin_registrant.cc ================================================ // // Generated file. Do not edit. // // clang-format off #include "generated_plugin_registrant.h" #include #include #include void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); file_selector_plugin_register_with_registrar(file_selector_linux_registrar); g_autoptr(FlPluginRegistrar) flutter_secure_storage_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterSecureStorageLinuxPlugin"); flutter_secure_storage_linux_plugin_register_with_registrar(flutter_secure_storage_linux_registrar); g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); } ================================================ FILE: legacy/app/linux/flutter/generated_plugin_registrant.h ================================================ // // Generated file. Do not edit. // // clang-format off #ifndef GENERATED_PLUGIN_REGISTRANT_ #define GENERATED_PLUGIN_REGISTRANT_ #include // Registers Flutter plugins. void fl_register_plugins(FlPluginRegistry* registry); #endif // GENERATED_PLUGIN_REGISTRANT_ ================================================ FILE: legacy/app/linux/flutter/generated_plugins.cmake ================================================ # # Generated file, do not edit. # list(APPEND FLUTTER_PLUGIN_LIST file_selector_linux flutter_secure_storage_linux url_launcher_linux ) list(APPEND FLUTTER_FFI_PLUGIN_LIST ) set(PLUGIN_BUNDLED_LIBRARIES) foreach(plugin ${FLUTTER_PLUGIN_LIST}) add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) list(APPEND PLUGIN_BUNDLED_LIBRARIES $) list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) endforeach(plugin) foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) endforeach(ffi_plugin) ================================================ FILE: legacy/app/linux/main.cc ================================================ #include "my_application.h" int main(int argc, char** argv) { g_autoptr(MyApplication) app = my_application_new(); return g_application_run(G_APPLICATION(app), argc, argv); } ================================================ FILE: legacy/app/linux/my_application.cc ================================================ #include "my_application.h" #include #ifdef GDK_WINDOWING_X11 #include #endif #include "flutter/generated_plugin_registrant.h" struct _MyApplication { GtkApplication parent_instance; char** dart_entrypoint_arguments; }; G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); GtkWindow* window = GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); // Use a header bar when running in GNOME as this is the common style used // by applications and is the setup most users will be using (e.g. Ubuntu // desktop). // If running on X and not using GNOME then just use a traditional title bar // in case the window manager does more exotic layout, e.g. tiling. // If running on Wayland assume the header bar will work (may need changing // if future cases occur). gboolean use_header_bar = TRUE; #ifdef GDK_WINDOWING_X11 GdkScreen* screen = gtk_window_get_screen(window); if (GDK_IS_X11_SCREEN(screen)) { const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); if (g_strcmp0(wm_name, "GNOME Shell") != 0) { use_header_bar = FALSE; } } #endif if (use_header_bar) { GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); gtk_widget_show(GTK_WIDGET(header_bar)); gtk_header_bar_set_title(header_bar, "app"); gtk_header_bar_set_show_close_button(header_bar, TRUE); gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); } else { gtk_window_set_title(window, "app"); } gtk_window_set_default_size(window, 1280, 720); gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); } // Implements GApplication::local_command_line. static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { MyApplication* self = MY_APPLICATION(application); // Strip out the first argument as it is the binary name. self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); g_autoptr(GError) error = nullptr; if (!g_application_register(application, nullptr, &error)) { g_warning("Failed to register: %s", error->message); *exit_status = 1; return TRUE; } g_application_activate(application); *exit_status = 0; return TRUE; } // Implements GObject::dispose. static void my_application_dispose(GObject* object) { MyApplication* self = MY_APPLICATION(object); g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); G_OBJECT_CLASS(my_application_parent_class)->dispose(object); } static void my_application_class_init(MyApplicationClass* klass) { G_APPLICATION_CLASS(klass)->activate = my_application_activate; G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; G_OBJECT_CLASS(klass)->dispose = my_application_dispose; } static void my_application_init(MyApplication* self) {} MyApplication* my_application_new() { return MY_APPLICATION(g_object_new(my_application_get_type(), "application-id", APPLICATION_ID, "flags", G_APPLICATION_NON_UNIQUE, nullptr)); } ================================================ FILE: legacy/app/linux/my_application.h ================================================ #ifndef FLUTTER_MY_APPLICATION_H_ #define FLUTTER_MY_APPLICATION_H_ #include G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, GtkApplication) /** * my_application_new: * * Creates a new Flutter-based application. * * Returns: a new #MyApplication. */ MyApplication* my_application_new(); #endif // FLUTTER_MY_APPLICATION_H_ ================================================ FILE: legacy/app/macos/.gitignore ================================================ # Flutter-related **/Flutter/ephemeral/ **/Pods/ # Xcode-related **/dgph **/xcuserdata/ ================================================ FILE: legacy/app/macos/Flutter/Flutter-Debug.xcconfig ================================================ #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" ================================================ FILE: legacy/app/macos/Flutter/Flutter-Release.xcconfig ================================================ #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" ================================================ FILE: legacy/app/macos/Flutter/GeneratedPluginRegistrant.swift ================================================ // // Generated file. Do not edit. // import FlutterMacOS import Foundation import file_selector_macos import flutter_image_compress_macos import flutter_secure_storage_macos import flutter_tts import path_provider_foundation import shared_preferences_foundation import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) FlutterImageCompressMacosPlugin.register(with: registry.registrar(forPlugin: "FlutterImageCompressMacosPlugin")) FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) FlutterTtsPlugin.register(with: registry.registrar(forPlugin: "FlutterTtsPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) } ================================================ FILE: legacy/app/macos/Podfile ================================================ platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' project 'Runner', { 'Debug' => :debug, 'Profile' => :release, 'Release' => :release, } def flutter_root generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) unless File.exist?(generated_xcode_build_settings_path) raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" end File.foreach(generated_xcode_build_settings_path) do |line| matches = line.match(/FLUTTER_ROOT\=(.*)/) return matches[1].strip if matches end raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" end require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) flutter_macos_podfile_setup target 'Runner' do use_frameworks! use_modular_headers! flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) target 'RunnerTests' do inherit! :search_paths end end post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_macos_build_settings(target) end end ================================================ FILE: legacy/app/macos/Runner/AppDelegate.swift ================================================ import Cocoa import FlutterMacOS @NSApplicationMain class AppDelegate: FlutterAppDelegate { override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { return true } } ================================================ FILE: legacy/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json ================================================ { "images" : [ { "filename" : "16.png", "idiom" : "mac", "scale" : "1x", "size" : "16x16" }, { "filename" : "32-2.png", "idiom" : "mac", "scale" : "2x", "size" : "16x16" }, { "filename" : "32.png", "idiom" : "mac", "scale" : "1x", "size" : "32x32" }, { "filename" : "64.png", "idiom" : "mac", "scale" : "2x", "size" : "32x32" }, { "filename" : "128.png", "idiom" : "mac", "scale" : "1x", "size" : "128x128" }, { "filename" : "256-2.png", "idiom" : "mac", "scale" : "2x", "size" : "128x128" }, { "filename" : "256.png", "idiom" : "mac", "scale" : "1x", "size" : "256x256" }, { "filename" : "512-2.png", "idiom" : "mac", "scale" : "2x", "size" : "256x256" }, { "filename" : "512.png", "idiom" : "mac", "scale" : "1x", "size" : "512x512" }, { "filename" : "1024.png", "idiom" : "mac", "scale" : "2x", "size" : "512x512" } ], "info" : { "author" : "xcode", "version" : 1 } } ================================================ FILE: legacy/app/macos/Runner/Base.lproj/MainMenu.xib ================================================ ================================================ FILE: legacy/app/macos/Runner/Configs/AppInfo.xcconfig ================================================ // Application-level settings for the Runner target. // // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the // future. If not, the values below would default to using the project name when this becomes a // 'flutter create' template. // The application's name. By default this is also the title of the Flutter window. PRODUCT_NAME = app // The application's bundle identifier PRODUCT_BUNDLE_IDENTIFIER = com.yourapp.app // The copyright displayed in application information PRODUCT_COPYRIGHT = Copyright © 2024 com.yourapp. All rights reserved. ================================================ FILE: legacy/app/macos/Runner/Configs/Debug.xcconfig ================================================ #include "../../Flutter/Flutter-Debug.xcconfig" #include "Warnings.xcconfig" ================================================ FILE: legacy/app/macos/Runner/Configs/Release.xcconfig ================================================ #include "../../Flutter/Flutter-Release.xcconfig" #include "Warnings.xcconfig" ================================================ FILE: legacy/app/macos/Runner/Configs/Warnings.xcconfig ================================================ WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings GCC_WARN_UNDECLARED_SELECTOR = YES CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE CLANG_WARN__DUPLICATE_METHOD_MATCH = YES CLANG_WARN_PRAGMA_PACK = YES CLANG_WARN_STRICT_PROTOTYPES = YES CLANG_WARN_COMMA = YES GCC_WARN_STRICT_SELECTOR_MATCH = YES CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES GCC_WARN_SHADOW = YES CLANG_WARN_UNREACHABLE_CODE = YES ================================================ FILE: legacy/app/macos/Runner/DebugProfile.entitlements ================================================ com.apple.security.app-sandbox com.apple.security.cs.allow-jit com.apple.security.network.server com.apple.security.network.client ================================================ FILE: legacy/app/macos/Runner/Info.plist ================================================ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIconFile CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType APPL CFBundleShortVersionString $(FLUTTER_BUILD_NAME) CFBundleVersion $(FLUTTER_BUILD_NUMBER) LSMinimumSystemVersion $(MACOSX_DEPLOYMENT_TARGET) NSHumanReadableCopyright $(PRODUCT_COPYRIGHT) NSMainNibFile MainMenu NSPrincipalClass NSApplication ================================================ FILE: legacy/app/macos/Runner/MainFlutterWindow.swift ================================================ import Cocoa import FlutterMacOS class MainFlutterWindow: NSWindow { override func awakeFromNib() { let flutterViewController = FlutterViewController() let windowFrame = self.frame self.contentViewController = flutterViewController self.setFrame(windowFrame, display: true) RegisterGeneratedPlugins(registry: flutterViewController) super.awakeFromNib() } } ================================================ FILE: legacy/app/macos/Runner/Release.entitlements ================================================ com.apple.security.app-sandbox ================================================ FILE: legacy/app/macos/Runner.xcodeproj/project.pbxproj ================================================ // !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 54; objects = { /* Begin PBXAggregateTarget section */ 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { isa = PBXAggregateTarget; buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; buildPhases = ( 33CC111E2044C6BF0003C045 /* ShellScript */, ); dependencies = ( ); name = "Flutter Assemble"; productName = FLX; }; /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; 9F6BD09BA96E2AF7C010FE56 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08E3BDA1523054ED6760AE62 /* Pods_RunnerTests.framework */; }; DF8AA9981CDF7F69CEF77F6A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 64A1A9B9A4D688A3232173CD /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 33CC10E52044A3C60003C045 /* Project object */; proxyType = 1; remoteGlobalIDString = 33CC10EC2044A3C60003C045; remoteInfo = Runner; }; 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 33CC10E52044A3C60003C045 /* Project object */; proxyType = 1; remoteGlobalIDString = 33CC111A2044C6BA0003C045; remoteInfo = FLX; }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ 33CC110E2044A8840003C045 /* Bundle Framework */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( ); name = "Bundle Framework"; runOnlyForDeploymentPostprocessing = 0; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ 003648BC39E5F7D35428A670 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 08E3BDA1523054ED6760AE62 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 31FC63F7592C2F05FF120F0E /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; 33CC10ED2044A3C60003C045 /* app.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = app.app; sourceTree = BUILT_PRODUCTS_DIR; }; 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; 648CB31E22E4C3B35BF264F5 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; 64A1A9B9A4D688A3232173CD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; A0B1C509DC22BB9DD1C2F40C /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; B7DA457DA0AB9275D34B9AD9 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; E7722ADAA895D039ADB120EA /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 331C80D2294CF70F00263BE5 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 9F6BD09BA96E2AF7C010FE56 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 33CC10EA2044A3C60003C045 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( DF8AA9981CDF7F69CEF77F6A /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( 331C80D7294CF71000263BE5 /* RunnerTests.swift */, ); path = RunnerTests; sourceTree = ""; }; 33BA886A226E78AF003329D5 /* Configs */ = { isa = PBXGroup; children = ( 33E5194F232828860026EE4D /* AppInfo.xcconfig */, 9740EEB21CF90195004384FC /* Debug.xcconfig */, 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, ); path = Configs; sourceTree = ""; }; 33CC10E42044A3C60003C045 = { isa = PBXGroup; children = ( 33FAB671232836740065AC1E /* Runner */, 33CEB47122A05771004F2AC0 /* Flutter */, 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, C4F510EC2CAEF115B347A87D /* Pods */, ); sourceTree = ""; }; 33CC10EE2044A3C60003C045 /* Products */ = { isa = PBXGroup; children = ( 33CC10ED2044A3C60003C045 /* app.app */, 331C80D5294CF71000263BE5 /* RunnerTests.xctest */, ); name = Products; sourceTree = ""; }; 33CC11242044D66E0003C045 /* Resources */ = { isa = PBXGroup; children = ( 33CC10F22044A3C60003C045 /* Assets.xcassets */, 33CC10F42044A3C60003C045 /* MainMenu.xib */, 33CC10F72044A3C60003C045 /* Info.plist */, ); name = Resources; path = ..; sourceTree = ""; }; 33CEB47122A05771004F2AC0 /* Flutter */ = { isa = PBXGroup; children = ( 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, ); path = Flutter; sourceTree = ""; }; 33FAB671232836740065AC1E /* Runner */ = { isa = PBXGroup; children = ( 33CC10F02044A3C60003C045 /* AppDelegate.swift */, 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, 33E51913231747F40026EE4D /* DebugProfile.entitlements */, 33E51914231749380026EE4D /* Release.entitlements */, 33CC11242044D66E0003C045 /* Resources */, 33BA886A226E78AF003329D5 /* Configs */, ); path = Runner; sourceTree = ""; }; C4F510EC2CAEF115B347A87D /* Pods */ = { isa = PBXGroup; children = ( A0B1C509DC22BB9DD1C2F40C /* Pods-Runner.debug.xcconfig */, 31FC63F7592C2F05FF120F0E /* Pods-Runner.release.xcconfig */, B7DA457DA0AB9275D34B9AD9 /* Pods-Runner.profile.xcconfig */, 648CB31E22E4C3B35BF264F5 /* Pods-RunnerTests.debug.xcconfig */, 003648BC39E5F7D35428A670 /* Pods-RunnerTests.release.xcconfig */, E7722ADAA895D039ADB120EA /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( 64A1A9B9A4D688A3232173CD /* Pods_Runner.framework */, 08E3BDA1523054ED6760AE62 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ 331C80D4294CF70F00263BE5 /* RunnerTests */ = { isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( E5D55CC14E732717F958607E /* [CP] Check Pods Manifest.lock */, 331C80D1294CF70F00263BE5 /* Sources */, 331C80D2294CF70F00263BE5 /* Frameworks */, 331C80D3294CF70F00263BE5 /* Resources */, ); buildRules = ( ); dependencies = ( 331C80DA294CF71000263BE5 /* PBXTargetDependency */, ); name = RunnerTests; productName = RunnerTests; productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; 33CC10EC2044A3C60003C045 /* Runner */ = { isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( 03CC2E75C6CE8FD0244BEC09 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, F41B3E5579167C54B5D49AAC /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); dependencies = ( 33CC11202044C79F0003C045 /* PBXTargetDependency */, ); name = Runner; productName = Runner; productReference = 33CC10ED2044A3C60003C045 /* app.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 33CC10E52044A3C60003C045 /* Project object */ = { isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0920; LastUpgradeCheck = 1430; ORGANIZATIONNAME = ""; TargetAttributes = { 331C80D4294CF70F00263BE5 = { CreatedOnToolsVersion = 14.0; TestTargetID = 33CC10EC2044A3C60003C045; }; 33CC10EC2044A3C60003C045 = { CreatedOnToolsVersion = 9.2; LastSwiftMigration = 1100; ProvisioningStyle = Automatic; SystemCapabilities = { com.apple.Sandbox = { enabled = 1; }; }; }; 33CC111A2044C6BA0003C045 = { CreatedOnToolsVersion = 9.2; ProvisioningStyle = Manual; }; }; }; buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; compatibilityVersion = "Xcode 9.3"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, Base, ); mainGroup = 33CC10E42044A3C60003C045; productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 33CC10EC2044A3C60003C045 /* Runner */, 331C80D4294CF70F00263BE5 /* RunnerTests */, 33CC111A2044C6BA0003C045 /* Flutter Assemble */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 331C80D3294CF70F00263BE5 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 33CC10EB2044A3C60003C045 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ 03CC2E75C6CE8FD0244BEC09 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( ); inputPaths = ( "${PODS_PODFILE_DIR_PATH}/Podfile.lock", "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( ); outputPaths = ( "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( ); inputPaths = ( ); outputFileListPaths = ( ); outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; }; 33CC111E2044C6BF0003C045 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( Flutter/ephemeral/FlutterInputs.xcfilelist, ); inputPaths = ( Flutter/ephemeral/tripwire, ); outputFileListPaths = ( Flutter/ephemeral/FlutterOutputs.xcfilelist, ); outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; E5D55CC14E732717F958607E /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( ); inputPaths = ( "${PODS_PODFILE_DIR_PATH}/Podfile.lock", "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( ); outputPaths = ( "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; F41B3E5579167C54B5D49AAC /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 331C80D1294CF70F00263BE5 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 33CC10E92044A3C60003C045 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ 331C80DA294CF71000263BE5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 33CC10EC2044A3C60003C045 /* Runner */; targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */; }; 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { isa = PBXVariantGroup; children = ( 33CC10F52044A3C60003C045 /* Base */, ); name = MainMenu.xib; path = Runner; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 648CB31E22E4C3B35BF264F5 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.yourapp.app.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/app.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/app"; }; name = Debug; }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 003648BC39E5F7D35428A670 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.yourapp.app.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/app.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/app"; }; name = Release; }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; baseConfigurationReference = E7722ADAA895D039ADB120EA /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.yourapp.app.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/app.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/app"; }; name = Profile; }; 338D0CE9231458BD00FA5F75 /* Profile */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 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_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = 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_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CODE_SIGN_IDENTITY = "-"; 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_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; MACOSX_DEPLOYMENT_TARGET = 10.14; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; }; name = Profile; }; 338D0CEA231458BD00FA5F75 /* Profile */ = { isa = XCBuildConfiguration; baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; name = Profile; }; 338D0CEB231458BD00FA5F75 /* Profile */ = { isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Profile; }; 33CC10F92044A3C60003C045 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 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_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = 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_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CODE_SIGN_IDENTITY = "-"; 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_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; MACOSX_DEPLOYMENT_TARGET = 10.14; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; }; name = Debug; }; 33CC10FA2044A3C60003C045 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 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_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = 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_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CODE_SIGN_IDENTITY = "-"; 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_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; MACOSX_DEPLOYMENT_TARGET = 10.14; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; }; name = Release; }; 33CC10FC2044A3C60003C045 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; }; name = Debug; }; 33CC10FD2044A3C60003C045 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; name = Release; }; 33CC111C2044C6BA0003C045 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; }; 33CC111D2044C6BA0003C045 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 331C80DB294CF71000263BE5 /* Debug */, 331C80DC294CF71000263BE5 /* Release */, 331C80DD294CF71000263BE5 /* Profile */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { isa = XCConfigurationList; buildConfigurations = ( 33CC10F92044A3C60003C045 /* Debug */, 33CC10FA2044A3C60003C045 /* Release */, 338D0CE9231458BD00FA5F75 /* Profile */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { isa = XCConfigurationList; buildConfigurations = ( 33CC10FC2044A3C60003C045 /* Debug */, 33CC10FD2044A3C60003C045 /* Release */, 338D0CEA231458BD00FA5F75 /* Profile */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { isa = XCConfigurationList; buildConfigurations = ( 33CC111C2044C6BA0003C045 /* Debug */, 33CC111D2044C6BA0003C045 /* Release */, 338D0CEB231458BD00FA5F75 /* Profile */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; rootObject = 33CC10E52044A3C60003C045 /* Project object */; } ================================================ FILE: legacy/app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist ================================================ IDEDidComputeMac32BitWarning ================================================ FILE: legacy/app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme ================================================ ================================================ FILE: legacy/app/macos/Runner.xcworkspace/contents.xcworkspacedata ================================================ ================================================ FILE: legacy/app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist ================================================ IDEDidComputeMac32BitWarning ================================================ FILE: legacy/app/macos/RunnerTests/RunnerTests.swift ================================================ import FlutterMacOS import Cocoa import XCTest class RunnerTests: XCTestCase { func testExample() { // If you add code to the Runner application, consider adding tests here. // See https://developer.apple.com/documentation/xctest for more information about using XCTest. } } ================================================ FILE: legacy/app/pubspec.yaml ================================================ name: glowby description: Glowby app. # The following line prevents the package from being accidentally published to # pub.dev using `pub publish`. This is preferred for private packages. publish_to: "none" # Remove this line if you wish to publish to pub.dev # The following defines the version and build number for your application. # A version number is three numbers separated by dots, like 1.2.43 # followed by an optional build number separated by a +. # Both the version and the builder number may be overridden in flutter # build by specifying --build-name and --build-number, respectively. # In Android, build-name is used as versionName while build-number used as versionCode. # Read more about Android versioning at https://developer.android.com/studio/publish/versioning # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html version: 2.0.0 environment: sdk: ">=2.19.5 <3.0.0" dependencies: # Uncomment the next line to compile the web version js: ^0.6.7 url_launcher: ^6.2.6 flutter_tts: ^4.0.2 http: ^1.2.1 shared_preferences: ^2.2.3 flutter_secure_storage: ^9.2.1 file_picker: ^8.0.3 flutter_image_compress: ^2.3.0 path_provider: ^2.1.3 flutter_highlight: ^0.7.0 webview_flutter: ^4.7.0 flutter_lints: ^4.0.0 image_picker: ^1.1.1 cupertino_icons: ^1.0.8 async: any flutter: sdk: flutter dev_dependencies: flutter_test: sdk: flutter # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec flutter_icons: image_path: "assets/icon.png" ios: true android: true # The following section is specific to Flutter. flutter: # The following line ensures that the Material Icons font is # included with your application, so that you can use the icons in # the material Icons class. uses-material-design: true # To add assets to your application, add an assets section, like this: assets: - assets/talk.glowbom - assets/glowbom.png # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/assets-and-images/#resolution-aware. # For details regarding adding assets from package dependencies, see # https://flutter.dev/assets-and-images/#from-packages # To add custom fonts to your application, add a fonts section here, # in this "flutter" section. Each entry in this list should have a # "family" key with the font family name, and a "fonts" key with a # list giving the asset and other descriptors for the font. For # example: # fonts: # - family: Schyler # fonts: # - asset: fonts/Schyler-Regular.ttf # - asset: fonts/Schyler-Italic.ttf # style: italic # - family: Trajan Pro # fonts: # - asset: fonts/TrajanPro.ttf # - asset: fonts/TrajanPro_Bold.ttf # weight: 700 # # For details regarding fonts from package dependencies, # see https://flutter.dev/custom-fonts/#from-packages ================================================ FILE: legacy/app/web/index.html ================================================ Glowby ================================================ FILE: legacy/app/web/manifest.json ================================================ { "name": "Quiz App", "short_name": "Quiz", "start_url": ".", "display": "standalone", "background_color": "#0175C2", "theme_color": "#0175C2", "description": "Answer questions correctly.", "orientation": "portrait-primary", "prefer_related_applications": false, "icons": [ { "src": "images/icons/icon-72x72.png", "sizes": "72x72", "type": "image/png" }, { "src": "images/icons/icon-96x96.png", "sizes": "96x96", "type": "image/png" }, { "src": "images/icons/icon-128x128.png", "sizes": "128x128", "type": "image/png" }, { "src": "images/icons/icon-144x144.png", "sizes": "144x144", "type": "image/png" }, { "src": "images/icons/icon-152x152.png", "sizes": "152x152", "type": "image/png" }, { "src": "images/icons/icon-192x192.png", "sizes": "192x192", "type": "image/png" }, { "src": "images/icons/icon-384x384.png", "sizes": "384x384", "type": "image/png" }, { "src": "images/icons/icon-512x512.png", "sizes": "512x512", "type": "image/png" } ] } ================================================ FILE: legacy/app/web/tv.js ================================================ const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition; if (SpeechRecognition != null) { const r = new SpeechRecognition(); r.lang = "en-US"; r.interimResults = false; r.addEventListener("result", (e) => { let last = e.results.length - 1; let text = e.results[last][0].transcript; //console.log("last: " + last); //console.log("text: " + text); //console.log("Confidence: " + e.results[0][0].confidence); vr(text); }); function rv(lang) { if (typeof lang !== "undefined" && lang !== null) { r.lang = lang; //console.log("switched to " + lang); } r.start(); //console.log("recordVoice call"); } } else { //console.error("SpeechRecognition API not supported in this browser."); } ================================================ FILE: legacy/app/windows/.gitignore ================================================ flutter/ephemeral/ # Visual Studio user-specific files. *.suo *.user *.userosscache *.sln.docstates # Visual Studio build-related files. x64/ x86/ # Visual Studio cache files # files ending in .cache can be ignored *.[Cc]ache # but keep track of directories ending in .cache !*.[Cc]ache/ ================================================ FILE: legacy/app/windows/CMakeLists.txt ================================================ # Project-level configuration. cmake_minimum_required(VERSION 3.14) project(app LANGUAGES CXX) # The name of the executable created for the application. Change this to change # the on-disk name of your application. set(BINARY_NAME "app") # Explicitly opt in to modern CMake behaviors to avoid warnings with recent # versions of CMake. cmake_policy(VERSION 3.14...3.25) # Define build configuration option. get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) if(IS_MULTICONFIG) set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" CACHE STRING "" FORCE) else() if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Flutter build mode" FORCE) set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Profile" "Release") endif() endif() # Define settings for the Profile build mode. set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") # Use Unicode for all projects. add_definitions(-DUNICODE -D_UNICODE) # Compilation settings that should be applied to most targets. # # Be cautious about adding new options here, as plugins use this function by # default. In most cases, you should add new options to specific targets instead # of modifying this function. function(APPLY_STANDARD_SETTINGS TARGET) target_compile_features(${TARGET} PUBLIC cxx_std_17) target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") target_compile_options(${TARGET} PRIVATE /EHsc) target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") endfunction() # Flutter library and tool build rules. set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") add_subdirectory(${FLUTTER_MANAGED_DIR}) # Application build; see runner/CMakeLists.txt. add_subdirectory("runner") # Generated plugin build rules, which manage building the plugins and adding # them to the application. include(flutter/generated_plugins.cmake) # === Installation === # Support files are copied into place next to the executable, so that it can # run in place. This is done instead of making a separate bundle (as on Linux) # so that building and running from within Visual Studio will work. set(BUILD_BUNDLE_DIR "$") # Make the "install" step default, as it's required to run. set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) endif() set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" COMPONENT Runtime) install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) if(PLUGIN_BUNDLED_LIBRARIES) install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) endif() # Copy the native assets provided by the build.dart from all packages. set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/windows/") install(DIRECTORY "${NATIVE_ASSETS_DIR}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) # Fully re-copy the assets directory on each build to avoid having stale files # from a previous install. set(FLUTTER_ASSET_DIR_NAME "flutter_assets") install(CODE " file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") " COMPONENT Runtime) install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) # Install the AOT library on non-Debug builds only. install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" CONFIGURATIONS Profile;Release COMPONENT Runtime) ================================================ FILE: legacy/app/windows/flutter/CMakeLists.txt ================================================ # This file controls Flutter-level build steps. It should not be edited. cmake_minimum_required(VERSION 3.14) set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") # Configuration provided via flutter tool. include(${EPHEMERAL_DIR}/generated_config.cmake) # TODO: Move the rest of this into files in ephemeral. See # https://github.com/flutter/flutter/issues/57146. set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") # Set fallback configurations for older versions of the flutter tool. if (NOT DEFINED FLUTTER_TARGET_PLATFORM) set(FLUTTER_TARGET_PLATFORM "windows-x64") endif() # === Flutter Library === set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") # Published to parent scope for install step. set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) list(APPEND FLUTTER_LIBRARY_HEADERS "flutter_export.h" "flutter_windows.h" "flutter_messenger.h" "flutter_plugin_registrar.h" "flutter_texture_registrar.h" ) list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") add_library(flutter INTERFACE) target_include_directories(flutter INTERFACE "${EPHEMERAL_DIR}" ) target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") add_dependencies(flutter flutter_assemble) # === Wrapper === list(APPEND CPP_WRAPPER_SOURCES_CORE "core_implementations.cc" "standard_codec.cc" ) list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") list(APPEND CPP_WRAPPER_SOURCES_PLUGIN "plugin_registrar.cc" ) list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") list(APPEND CPP_WRAPPER_SOURCES_APP "flutter_engine.cc" "flutter_view_controller.cc" ) list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") # Wrapper sources needed for a plugin. add_library(flutter_wrapper_plugin STATIC ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} ) apply_standard_settings(flutter_wrapper_plugin) set_target_properties(flutter_wrapper_plugin PROPERTIES POSITION_INDEPENDENT_CODE ON) set_target_properties(flutter_wrapper_plugin PROPERTIES CXX_VISIBILITY_PRESET hidden) target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) target_include_directories(flutter_wrapper_plugin PUBLIC "${WRAPPER_ROOT}/include" ) add_dependencies(flutter_wrapper_plugin flutter_assemble) # Wrapper sources needed for the runner. add_library(flutter_wrapper_app STATIC ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_APP} ) apply_standard_settings(flutter_wrapper_app) target_link_libraries(flutter_wrapper_app PUBLIC flutter) target_include_directories(flutter_wrapper_app PUBLIC "${WRAPPER_ROOT}/include" ) add_dependencies(flutter_wrapper_app flutter_assemble) # === Flutter tool backend === # _phony_ is a non-existent file to force this command to run every time, # since currently there's no way to get a full input/output list from the # flutter tool. set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) add_custom_command( OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} ${CPP_WRAPPER_SOURCES_APP} ${PHONY_OUTPUT} COMMAND ${CMAKE_COMMAND} -E env ${FLUTTER_TOOL_ENVIRONMENT} "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" ${FLUTTER_TARGET_PLATFORM} $ VERBATIM ) add_custom_target(flutter_assemble DEPENDS "${FLUTTER_LIBRARY}" ${FLUTTER_LIBRARY_HEADERS} ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} ${CPP_WRAPPER_SOURCES_APP} ) ================================================ FILE: legacy/app/windows/flutter/generated_plugin_registrant.cc ================================================ // // Generated file. Do not edit. // // clang-format off #include "generated_plugin_registrant.h" #include #include #include #include void RegisterPlugins(flutter::PluginRegistry* registry) { FileSelectorWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("FileSelectorWindows")); FlutterSecureStorageWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin")); FlutterTtsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("FlutterTtsPlugin")); UrlLauncherWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("UrlLauncherWindows")); } ================================================ FILE: legacy/app/windows/flutter/generated_plugin_registrant.h ================================================ // // Generated file. Do not edit. // // clang-format off #ifndef GENERATED_PLUGIN_REGISTRANT_ #define GENERATED_PLUGIN_REGISTRANT_ #include // Registers Flutter plugins. void RegisterPlugins(flutter::PluginRegistry* registry); #endif // GENERATED_PLUGIN_REGISTRANT_ ================================================ FILE: legacy/app/windows/flutter/generated_plugins.cmake ================================================ # # Generated file, do not edit. # list(APPEND FLUTTER_PLUGIN_LIST file_selector_windows flutter_secure_storage_windows flutter_tts url_launcher_windows ) list(APPEND FLUTTER_FFI_PLUGIN_LIST ) set(PLUGIN_BUNDLED_LIBRARIES) foreach(plugin ${FLUTTER_PLUGIN_LIST}) add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) list(APPEND PLUGIN_BUNDLED_LIBRARIES $) list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) endforeach(plugin) foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) endforeach(ffi_plugin) ================================================ FILE: legacy/app/windows/runner/CMakeLists.txt ================================================ cmake_minimum_required(VERSION 3.14) project(runner LANGUAGES CXX) # Define the application target. To change its name, change BINARY_NAME in the # top-level CMakeLists.txt, not the value here, or `flutter run` will no longer # work. # # Any new source files that you add to the application should be added here. add_executable(${BINARY_NAME} WIN32 "flutter_window.cpp" "main.cpp" "utils.cpp" "win32_window.cpp" "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" "Runner.rc" "runner.exe.manifest" ) # Apply the standard set of build settings. This can be removed for applications # that need different build settings. apply_standard_settings(${BINARY_NAME}) # Add preprocessor definitions for the build version. target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") # Disable Windows macros that collide with C++ standard library functions. target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") # Add dependency libraries and include directories. Add any application-specific # dependencies here. target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib") target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") # Run the Flutter tool portions of the build. This must not be removed. add_dependencies(${BINARY_NAME} flutter_assemble) ================================================ FILE: legacy/app/windows/runner/Runner.rc ================================================ // Microsoft Visual C++ generated resource script. // #pragma code_page(65001) #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "winres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // English (United States) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE BEGIN "resource.h\0" END 2 TEXTINCLUDE BEGIN "#include ""winres.h""\r\n" "\0" END 3 TEXTINCLUDE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Icon // // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. IDI_APP_ICON ICON "resources\\app_icon.ico" ///////////////////////////////////////////////////////////////////////////// // // Version // #if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) #define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD #else #define VERSION_AS_NUMBER 1,0,0,0 #endif #if defined(FLUTTER_VERSION) #define VERSION_AS_STRING FLUTTER_VERSION #else #define VERSION_AS_STRING "1.0.0" #endif VS_VERSION_INFO VERSIONINFO FILEVERSION VERSION_AS_NUMBER PRODUCTVERSION VERSION_AS_NUMBER FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG #else FILEFLAGS 0x0L #endif FILEOS VOS__WINDOWS32 FILETYPE VFT_APP FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904e4" BEGIN VALUE "CompanyName", "com.yourapp" "\0" VALUE "FileDescription", "app" "\0" VALUE "FileVersion", VERSION_AS_STRING "\0" VALUE "InternalName", "app" "\0" VALUE "LegalCopyright", "Copyright (C) 2024 com.yourapp. All rights reserved." "\0" VALUE "OriginalFilename", "app.exe" "\0" VALUE "ProductName", "app" "\0" VALUE "ProductVersion", VERSION_AS_STRING "\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1252 END END #endif // English (United States) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED ================================================ FILE: legacy/app/windows/runner/flutter_window.cpp ================================================ #include "flutter_window.h" #include #include "flutter/generated_plugin_registrant.h" FlutterWindow::FlutterWindow(const flutter::DartProject& project) : project_(project) {} FlutterWindow::~FlutterWindow() {} bool FlutterWindow::OnCreate() { if (!Win32Window::OnCreate()) { return false; } RECT frame = GetClientArea(); // The size here must match the window dimensions to avoid unnecessary surface // creation / destruction in the startup path. flutter_controller_ = std::make_unique( frame.right - frame.left, frame.bottom - frame.top, project_); // Ensure that basic setup of the controller was successful. if (!flutter_controller_->engine() || !flutter_controller_->view()) { return false; } RegisterPlugins(flutter_controller_->engine()); SetChildContent(flutter_controller_->view()->GetNativeWindow()); flutter_controller_->engine()->SetNextFrameCallback([&]() { this->Show(); }); // Flutter can complete the first frame before the "show window" callback is // registered. The following call ensures a frame is pending to ensure the // window is shown. It is a no-op if the first frame hasn't completed yet. flutter_controller_->ForceRedraw(); return true; } void FlutterWindow::OnDestroy() { if (flutter_controller_) { flutter_controller_ = nullptr; } Win32Window::OnDestroy(); } LRESULT FlutterWindow::MessageHandler(HWND hwnd, UINT const message, WPARAM const wparam, LPARAM const lparam) noexcept { // Give Flutter, including plugins, an opportunity to handle window messages. if (flutter_controller_) { std::optional result = flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, lparam); if (result) { return *result; } } switch (message) { case WM_FONTCHANGE: flutter_controller_->engine()->ReloadSystemFonts(); break; } return Win32Window::MessageHandler(hwnd, message, wparam, lparam); } ================================================ FILE: legacy/app/windows/runner/flutter_window.h ================================================ #ifndef RUNNER_FLUTTER_WINDOW_H_ #define RUNNER_FLUTTER_WINDOW_H_ #include #include #include #include "win32_window.h" // A window that does nothing but host a Flutter view. class FlutterWindow : public Win32Window { public: // Creates a new FlutterWindow hosting a Flutter view running |project|. explicit FlutterWindow(const flutter::DartProject& project); virtual ~FlutterWindow(); protected: // Win32Window: bool OnCreate() override; void OnDestroy() override; LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, LPARAM const lparam) noexcept override; private: // The project to run. flutter::DartProject project_; // The Flutter instance hosted by this window. std::unique_ptr flutter_controller_; }; #endif // RUNNER_FLUTTER_WINDOW_H_ ================================================ FILE: legacy/app/windows/runner/main.cpp ================================================ #include #include #include #include "flutter_window.h" #include "utils.h" int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, _In_ wchar_t *command_line, _In_ int show_command) { // Attach to console when present (e.g., 'flutter run') or create a // new console when running with a debugger. if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { CreateAndAttachConsole(); } // Initialize COM, so that it is available for use in the library and/or // plugins. ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); flutter::DartProject project(L"data"); std::vector command_line_arguments = GetCommandLineArguments(); project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); FlutterWindow window(project); Win32Window::Point origin(10, 10); Win32Window::Size size(1280, 720); if (!window.Create(L"app", origin, size)) { return EXIT_FAILURE; } window.SetQuitOnClose(true); ::MSG msg; while (::GetMessage(&msg, nullptr, 0, 0)) { ::TranslateMessage(&msg); ::DispatchMessage(&msg); } ::CoUninitialize(); return EXIT_SUCCESS; } ================================================ FILE: legacy/app/windows/runner/resource.h ================================================ //{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. // Used by Runner.rc // #define IDI_APP_ICON 101 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 102 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1001 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif ================================================ FILE: legacy/app/windows/runner/runner.exe.manifest ================================================ PerMonitorV2 ================================================ FILE: legacy/app/windows/runner/utils.cpp ================================================ #include "utils.h" #include #include #include #include #include void CreateAndAttachConsole() { if (::AllocConsole()) { FILE *unused; if (freopen_s(&unused, "CONOUT$", "w", stdout)) { _dup2(_fileno(stdout), 1); } if (freopen_s(&unused, "CONOUT$", "w", stderr)) { _dup2(_fileno(stdout), 2); } std::ios::sync_with_stdio(); FlutterDesktopResyncOutputStreams(); } } std::vector GetCommandLineArguments() { // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. int argc; wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); if (argv == nullptr) { return std::vector(); } std::vector command_line_arguments; // Skip the first argument as it's the binary name. for (int i = 1; i < argc; i++) { command_line_arguments.push_back(Utf8FromUtf16(argv[i])); } ::LocalFree(argv); return command_line_arguments; } std::string Utf8FromUtf16(const wchar_t* utf16_string) { if (utf16_string == nullptr) { return std::string(); } int target_length = ::WideCharToMultiByte( CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, -1, nullptr, 0, nullptr, nullptr) -1; // remove the trailing null character int input_length = (int)wcslen(utf16_string); std::string utf8_string; if (target_length <= 0 || target_length > utf8_string.max_size()) { return utf8_string; } utf8_string.resize(target_length); int converted_length = ::WideCharToMultiByte( CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, input_length, utf8_string.data(), target_length, nullptr, nullptr); if (converted_length == 0) { return std::string(); } return utf8_string; } ================================================ FILE: legacy/app/windows/runner/utils.h ================================================ #ifndef RUNNER_UTILS_H_ #define RUNNER_UTILS_H_ #include #include // Creates a console for the process, and redirects stdout and stderr to // it for both the runner and the Flutter library. void CreateAndAttachConsole(); // Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string // encoded in UTF-8. Returns an empty std::string on failure. std::string Utf8FromUtf16(const wchar_t* utf16_string); // Gets the command line arguments passed in as a std::vector, // encoded in UTF-8. Returns an empty std::vector on failure. std::vector GetCommandLineArguments(); #endif // RUNNER_UTILS_H_ ================================================ FILE: legacy/app/windows/runner/win32_window.cpp ================================================ #include "win32_window.h" #include #include #include "resource.h" namespace { /// Window attribute that enables dark mode window decorations. /// /// Redefined in case the developer's machine has a Windows SDK older than /// version 10.0.22000.0. /// See: https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute #ifndef DWMWA_USE_IMMERSIVE_DARK_MODE #define DWMWA_USE_IMMERSIVE_DARK_MODE 20 #endif constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; /// Registry key for app theme preference. /// /// A value of 0 indicates apps should use dark mode. A non-zero or missing /// value indicates apps should use light mode. constexpr const wchar_t kGetPreferredBrightnessRegKey[] = L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"; constexpr const wchar_t kGetPreferredBrightnessRegValue[] = L"AppsUseLightTheme"; // The number of Win32Window objects that currently exist. static int g_active_window_count = 0; using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); // Scale helper to convert logical scaler values to physical using passed in // scale factor int Scale(int source, double scale_factor) { return static_cast(source * scale_factor); } // Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. // This API is only needed for PerMonitor V1 awareness mode. void EnableFullDpiSupportIfAvailable(HWND hwnd) { HMODULE user32_module = LoadLibraryA("User32.dll"); if (!user32_module) { return; } auto enable_non_client_dpi_scaling = reinterpret_cast( GetProcAddress(user32_module, "EnableNonClientDpiScaling")); if (enable_non_client_dpi_scaling != nullptr) { enable_non_client_dpi_scaling(hwnd); } FreeLibrary(user32_module); } } // namespace // Manages the Win32Window's window class registration. class WindowClassRegistrar { public: ~WindowClassRegistrar() = default; // Returns the singleton registrar instance. static WindowClassRegistrar* GetInstance() { if (!instance_) { instance_ = new WindowClassRegistrar(); } return instance_; } // Returns the name of the window class, registering the class if it hasn't // previously been registered. const wchar_t* GetWindowClass(); // Unregisters the window class. Should only be called if there are no // instances of the window. void UnregisterWindowClass(); private: WindowClassRegistrar() = default; static WindowClassRegistrar* instance_; bool class_registered_ = false; }; WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; const wchar_t* WindowClassRegistrar::GetWindowClass() { if (!class_registered_) { WNDCLASS window_class{}; window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); window_class.lpszClassName = kWindowClassName; window_class.style = CS_HREDRAW | CS_VREDRAW; window_class.cbClsExtra = 0; window_class.cbWndExtra = 0; window_class.hInstance = GetModuleHandle(nullptr); window_class.hIcon = LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); window_class.hbrBackground = 0; window_class.lpszMenuName = nullptr; window_class.lpfnWndProc = Win32Window::WndProc; RegisterClass(&window_class); class_registered_ = true; } return kWindowClassName; } void WindowClassRegistrar::UnregisterWindowClass() { UnregisterClass(kWindowClassName, nullptr); class_registered_ = false; } Win32Window::Win32Window() { ++g_active_window_count; } Win32Window::~Win32Window() { --g_active_window_count; Destroy(); } bool Win32Window::Create(const std::wstring& title, const Point& origin, const Size& size) { Destroy(); const wchar_t* window_class = WindowClassRegistrar::GetInstance()->GetWindowClass(); const POINT target_point = {static_cast(origin.x), static_cast(origin.y)}; HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); double scale_factor = dpi / 96.0; HWND window = CreateWindow( window_class, title.c_str(), WS_OVERLAPPEDWINDOW, Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), Scale(size.width, scale_factor), Scale(size.height, scale_factor), nullptr, nullptr, GetModuleHandle(nullptr), this); if (!window) { return false; } UpdateTheme(window); return OnCreate(); } bool Win32Window::Show() { return ShowWindow(window_handle_, SW_SHOWNORMAL); } // static LRESULT CALLBACK Win32Window::WndProc(HWND const window, UINT const message, WPARAM const wparam, LPARAM const lparam) noexcept { if (message == WM_NCCREATE) { auto window_struct = reinterpret_cast(lparam); SetWindowLongPtr(window, GWLP_USERDATA, reinterpret_cast(window_struct->lpCreateParams)); auto that = static_cast(window_struct->lpCreateParams); EnableFullDpiSupportIfAvailable(window); that->window_handle_ = window; } else if (Win32Window* that = GetThisFromHandle(window)) { return that->MessageHandler(window, message, wparam, lparam); } return DefWindowProc(window, message, wparam, lparam); } LRESULT Win32Window::MessageHandler(HWND hwnd, UINT const message, WPARAM const wparam, LPARAM const lparam) noexcept { switch (message) { case WM_DESTROY: window_handle_ = nullptr; Destroy(); if (quit_on_close_) { PostQuitMessage(0); } return 0; case WM_DPICHANGED: { auto newRectSize = reinterpret_cast(lparam); LONG newWidth = newRectSize->right - newRectSize->left; LONG newHeight = newRectSize->bottom - newRectSize->top; SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, newHeight, SWP_NOZORDER | SWP_NOACTIVATE); return 0; } case WM_SIZE: { RECT rect = GetClientArea(); if (child_content_ != nullptr) { // Size and position the child window. MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, TRUE); } return 0; } case WM_ACTIVATE: if (child_content_ != nullptr) { SetFocus(child_content_); } return 0; case WM_DWMCOLORIZATIONCOLORCHANGED: UpdateTheme(hwnd); return 0; } return DefWindowProc(window_handle_, message, wparam, lparam); } void Win32Window::Destroy() { OnDestroy(); if (window_handle_) { DestroyWindow(window_handle_); window_handle_ = nullptr; } if (g_active_window_count == 0) { WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); } } Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { return reinterpret_cast( GetWindowLongPtr(window, GWLP_USERDATA)); } void Win32Window::SetChildContent(HWND content) { child_content_ = content; SetParent(content, window_handle_); RECT frame = GetClientArea(); MoveWindow(content, frame.left, frame.top, frame.right - frame.left, frame.bottom - frame.top, true); SetFocus(child_content_); } RECT Win32Window::GetClientArea() { RECT frame; GetClientRect(window_handle_, &frame); return frame; } HWND Win32Window::GetHandle() { return window_handle_; } void Win32Window::SetQuitOnClose(bool quit_on_close) { quit_on_close_ = quit_on_close; } bool Win32Window::OnCreate() { // No-op; provided for subclasses. return true; } void Win32Window::OnDestroy() { // No-op; provided for subclasses. } void Win32Window::UpdateTheme(HWND const window) { DWORD light_mode; DWORD light_mode_size = sizeof(light_mode); LSTATUS result = RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey, kGetPreferredBrightnessRegValue, RRF_RT_REG_DWORD, nullptr, &light_mode, &light_mode_size); if (result == ERROR_SUCCESS) { BOOL enable_dark_mode = light_mode == 0; DwmSetWindowAttribute(window, DWMWA_USE_IMMERSIVE_DARK_MODE, &enable_dark_mode, sizeof(enable_dark_mode)); } } ================================================ FILE: legacy/app/windows/runner/win32_window.h ================================================ #ifndef RUNNER_WIN32_WINDOW_H_ #define RUNNER_WIN32_WINDOW_H_ #include #include #include #include // A class abstraction for a high DPI-aware Win32 Window. Intended to be // inherited from by classes that wish to specialize with custom // rendering and input handling class Win32Window { public: struct Point { unsigned int x; unsigned int y; Point(unsigned int x, unsigned int y) : x(x), y(y) {} }; struct Size { unsigned int width; unsigned int height; Size(unsigned int width, unsigned int height) : width(width), height(height) {} }; Win32Window(); virtual ~Win32Window(); // Creates a win32 window with |title| that is positioned and sized using // |origin| and |size|. New windows are created on the default monitor. Window // sizes are specified to the OS in physical pixels, hence to ensure a // consistent size this function will scale the inputted width and height as // as appropriate for the default monitor. The window is invisible until // |Show| is called. Returns true if the window was created successfully. bool Create(const std::wstring& title, const Point& origin, const Size& size); // Show the current window. Returns true if the window was successfully shown. bool Show(); // Release OS resources associated with window. void Destroy(); // Inserts |content| into the window tree. void SetChildContent(HWND content); // Returns the backing Window handle to enable clients to set icon and other // window properties. Returns nullptr if the window has been destroyed. HWND GetHandle(); // If true, closing this window will quit the application. void SetQuitOnClose(bool quit_on_close); // Return a RECT representing the bounds of the current client area. RECT GetClientArea(); protected: // Processes and route salient window messages for mouse handling, // size change and DPI. Delegates handling of these to member overloads that // inheriting classes can handle. virtual LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, LPARAM const lparam) noexcept; // Called when CreateAndShow is called, allowing subclass window-related // setup. Subclasses should return false if setup fails. virtual bool OnCreate(); // Called when Destroy is called. virtual void OnDestroy(); private: friend class WindowClassRegistrar; // OS callback called by message pump. Handles the WM_NCCREATE message which // is passed when the non-client area is being created and enables automatic // non-client DPI scaling so that the non-client area automatically // responds to changes in DPI. All other messages are handled by // MessageHandler. static LRESULT CALLBACK WndProc(HWND const window, UINT const message, WPARAM const wparam, LPARAM const lparam) noexcept; // Retrieves a class instance pointer for |window| static Win32Window* GetThisFromHandle(HWND const window) noexcept; // Update the window frame's theme to match the system theme. static void UpdateTheme(HWND const window); bool quit_on_close_ = false; // window handle for top level window. HWND window_handle_ = nullptr; // window handle for hosted content. HWND child_content_ = nullptr; }; #endif // RUNNER_WIN32_WINDOW_H_ ================================================ FILE: legacy/backend/aws/fetchImageAsBase64/index.mjs ================================================ import https from 'https'; import http from 'http'; export async function handler(event) { const imageUrl = event.queryStringParameters?.imageUrl; const headers = { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'POST', 'Access-Control-Allow-Headers': 'Content-Type' }; if (!imageUrl) { return { statusCode: 400, headers, body: JSON.stringify({ success: false, message: 'Image URL parameter is required', }), }; } const httpModule = imageUrl.startsWith('https') ? https : http; try { const base64Image = await new Promise((resolve, reject) => { httpModule.get(imageUrl, (res) => { if (res.statusCode !== 200) { reject(new Error(`Request failed with status code ${res.statusCode}`)); return; } const chunks = []; res.on('data', (chunk) => chunks.push(chunk)); res.on('end', () => { const buffer = Buffer.concat(chunks); const base64 = buffer.toString('base64'); resolve(base64); }); }).on('error', (err) => { reject(err); }); }); return { statusCode: 200, headers, body: JSON.stringify({ success: true, base64Image }), }; } catch (error) { console.error('Error fetching image:', error); return { statusCode: 500, headers, body: JSON.stringify({ success: false, message: `Failed to fetch image: ${error.message}`, }), }; } } ================================================ FILE: legacy/dist/assets/AssetManifest.bin.json ================================================ "DQQHEmFzc2V0cy9nbG93Ym9tLnBuZwwBDQEHBWFzc2V0BxJhc3NldHMvZ2xvd2JvbS5wbmcHE2Fzc2V0cy90YWxrLmdsb3dib20MAQ0BBwVhc3NldAcTYXNzZXRzL3RhbGsuZ2xvd2JvbQcycGFja2FnZXMvY3VwZXJ0aW5vX2ljb25zL2Fzc2V0cy9DdXBlcnRpbm9JY29ucy50dGYMAQ0BBwVhc3NldAcycGFja2FnZXMvY3VwZXJ0aW5vX2ljb25zL2Fzc2V0cy9DdXBlcnRpbm9JY29ucy50dGYHNnBhY2thZ2VzL2ZsdXR0ZXJfaW1hZ2VfY29tcHJlc3Nfd2ViL2Fzc2V0cy9waWNhLm1pbi5qcwwBDQEHBWFzc2V0BzZwYWNrYWdlcy9mbHV0dGVyX2ltYWdlX2NvbXByZXNzX3dlYi9hc3NldHMvcGljYS5taW4uanM=" ================================================ FILE: legacy/dist/assets/AssetManifest.json ================================================ {"assets/glowbom.png":["assets/glowbom.png"],"assets/talk.glowbom":["assets/talk.glowbom"],"packages/cupertino_icons/assets/CupertinoIcons.ttf":["packages/cupertino_icons/assets/CupertinoIcons.ttf"],"packages/flutter_image_compress_web/assets/pica.min.js":["packages/flutter_image_compress_web/assets/pica.min.js"]} ================================================ FILE: legacy/dist/assets/FontManifest.json ================================================ [{"family":"MaterialIcons","fonts":[{"asset":"fonts/MaterialIcons-Regular.otf"}]},{"family":"packages/cupertino_icons/CupertinoIcons","fonts":[{"asset":"packages/cupertino_icons/assets/CupertinoIcons.ttf"}]}] ================================================ FILE: legacy/dist/assets/NOTICES ================================================ aFileChooser Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2011 - 2013 Paul Burke Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -------------------------------------------------------------------------------- abseil-cpp Apache License Version 2.0, January 2004 https://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -------------------------------------------------------------------------------- abseil-cpp angle dart etc1 expat flatbuffers fuchsia_sdk glslang perfetto shaderc spirv-cross txt vulkan vulkan-headers vulkan-utility-libraries vulkan-validation-layers wuffs Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -------------------------------------------------------------------------------- accessibility Copyright (c) 2009 The Chromium Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- accessibility Copyright (c) 2010 The Chromium Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- accessibility Copyright (c) 2012 The Chromium Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- accessibility Copyright (c) 2014 The Chromium Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- accessibility Copyright 2013 The Chromium Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- accessibility Copyright 2016 The Chromium Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- accessibility Copyright 2019 The Chromium Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- accessibility Copyright 2020 The Chromium Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- accessibility angle Copyright (c) 2011 The Chromium Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- accessibility angle Copyright (c) 2013 The Chromium Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- accessibility angle Copyright 2017 The Chromium Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- accessibility angle icu Copyright 2014 The Chromium Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- accessibility angle skia Copyright 2018 The Chromium Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- accessibility engine image_picker spring_animation tonic txt url_launcher_web web_test_fonts web_unicode Copyright 2013 The Flutter Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- accessibility skia Copyright 2015 The Chromium Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle Copyright (c) 2008-2018 The Khronos Group Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and/or associated documentation files (the "Materials"), to deal in the Materials without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Materials, and to permit persons to whom the Materials are 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 Materials. THE MATERIALS ARE 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 MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -------------------------------------------------------------------------------- angle Copyright (c) 2013-2017 The Khronos Group Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and/or associated documentation files (the "Materials"), to deal in the Materials without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Materials, and to permit persons to whom the Materials are 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 Materials. THE MATERIALS ARE 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 MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -------------------------------------------------------------------------------- angle Copyright (c) 2013-2018 The Khronos Group Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and/or associated documentation files (the "Materials"), to deal in the Materials without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Materials, and to permit persons to whom the Materials are 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 Materials. THE MATERIALS ARE 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 MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -------------------------------------------------------------------------------- angle Copyright (c) 2020 The ANGLE Project Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle Copyright 2002 The ANGLE Project Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle Copyright 2010 The ANGLE Project Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle Copyright 2011 The ANGLE Project Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle Copyright 2012 The ANGLE Project Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle Copyright 2013 The ANGLE Project Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle Copyright 2013-2020 The Khronos Group Inc. 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. -------------------------------------------------------------------------------- angle Copyright 2014 The ANGLE Project Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle Copyright 2015 The ANGLE Project Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle Copyright 2016 The ANGLE Project Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle Copyright 2017 The ANGLE Project Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle Copyright 2018 The ANGLE Project Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle Copyright 2018 The ANGLE Project Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle Copyright 2019 The ANGLE Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle Copyright 2020 The ANGLE Project Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle Copyright 2020 The ANGLE Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle Copyright 2021 The ANGLE Project Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle Copyright 2021 The ANGLE Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle Copyright 2021-2022 The ANGLE Project Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle Copyright 2022 The ANGLE Project Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle Copyright 2023 The ANGLE Project Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle Copyright The ANGLE Project Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- angle xxhash Copyright 2019 The ANGLE Project Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc. Ltd., nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- async collection mime stream_channel typed_data Copyright 2015, the Dart project authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boolean_selector meta Copyright 2016, the Dart project authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) All rights reserved. This package is an SSL implementation written by Eric Young (eay@cryptsoft.com). The implementation was written so as to conform with Netscapes SSL. This library is free for commercial and non-commercial use as long as the following conditions are aheared to. The following conditions apply to all code found in this distribution, be it the RC4, RSA, lhash, DES, etc., code; not just the SSL code. The SSL documentation included with this distribution is covered by the same copyright terms except that the holder is Tim Hudson (tjh@cryptsoft.com). Copyright remains Eric Young's, and as such any Copyright notices in the code are not to be removed. If this package is used in a product, Eric Young should be given attribution as the author of the parts of the library used. This can be in the form of a textual message at program startup or in documentation (online or textual) provided with the package. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgement: "This product includes cryptographic software written by Eric Young (eay@cryptsoft.com)" The word 'cryptographic' can be left out if the rouines from the library being used are not cryptographic related :-). 4. If you include any Windows specific code (or a derivative thereof) from the apps directory (application code) you must include an acknowledgement: "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The licence and distribution terms for any publically available version or derivative of this code cannot be changed. i.e. this code cannot simply be copied and put under another distribution licence [including the GNU Public Licence.] -------------------------------------------------------------------------------- boringssl Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) All rights reserved. This package is an SSL implementation written by Eric Young (eay@cryptsoft.com). The implementation was written so as to conform with Netscapes SSL. This library is free for commercial and non-commercial use as long as the following conditions are aheared to. The following conditions apply to all code found in this distribution, be it the RC4, RSA, lhash, DES, etc., code; not just the SSL code. The SSL documentation included with this distribution is covered by the same copyright terms except that the holder is Tim Hudson (tjh@cryptsoft.com). Copyright remains Eric Young's, and as such any Copyright notices in the code are not to be removed. If this package is used in a product, Eric Young should be given attribution as the author of the parts of the library used. This can be in the form of a textual message at program startup or in documentation (online or textual) provided with the package. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgement: "This product includes cryptographic software written by Eric Young (eay@cryptsoft.com)" The word 'cryptographic' can be left out if the rouines from the library being used are not cryptographic related :-). 4. If you include any Windows specific code (or a derivative thereof) from the apps directory (application code) you must include an acknowledgement: "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The licence and distribution terms for any publically available version or derivative of this code cannot be changed. i.e. this code cannot simply be copied and put under another distribution licence [including the GNU Public Licence.] -------------------------------------------------------------------------------- boringssl Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@openssl.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@openssl.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@openssl.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 1998-2003 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@openssl.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 1998-2004 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@openssl.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 1998-2005 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 1998-2005 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@openssl.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@openssl.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@openssl.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@openssl.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 1999 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact licensing@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 1999-2002 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact licensing@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 1999-2003 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact licensing@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 1999-2004 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact licensing@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact licensing@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 1999-2008 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact licensing@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2000 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact licensing@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2000-2002 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact licensing@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2000-2003 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact licensing@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2000-2005 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact licensing@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2001 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact licensing@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2001-2011 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@openssl.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2002-2006 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@openssl.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2003 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact licensing@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2004 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact licensing@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2005 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact licensing@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2006 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact licensing@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2006,2007 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact licensing@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2008 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@openssl.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2010 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact licensing@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2011 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact licensing@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2011 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@openssl.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2012 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@openssl.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2013 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact licensing@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2014, Google Inc. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2015, Google Inc. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2016, Google Inc. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2017, Google Inc. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2017, the HRSS authors. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2018, Google Inc. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2018, Google Inc. Copyright (c) 2020, Arm Ltd. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2019, Google Inc. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2020, Google Inc. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2021, Google Inc. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2022, Google Inc. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2022, Robert Nagy Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -------------------------------------------------------------------------------- boringssl Copyright (c) 2023, Google Inc. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -------------------------------------------------------------------------------- boringssl Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html -------------------------------------------------------------------------------- boringssl Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html -------------------------------------------------------------------------------- boringssl Copyright 2001-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html -------------------------------------------------------------------------------- boringssl Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. Portions of the attached software ("Contribution") are developed by SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. The Contribution is licensed pursuant to the Eric Young open source license provided above. -------------------------------------------------------------------------------- boringssl Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. Portions of the attached software ("Contribution") are developed by SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. The Contribution is licensed pursuant to the OpenSSL open source license provided above. -------------------------------------------------------------------------------- boringssl Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact licensing@OpenSSL.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- boringssl Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. ECC cipher suite support in OpenSSL originally developed by SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. -------------------------------------------------------------------------------- boringssl Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. ECDH support in OpenSSL originally developed by SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. -------------------------------------------------------------------------------- boringssl Copyright 2005 Nokia. All rights reserved. The portions of the attached software ("Contribution") is developed by Nokia Corporation and is licensed pursuant to the OpenSSL open source license. The Contribution, originally written by Mika Kousa and Pasi Eronen of Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites support (see RFC 4279) to OpenSSL. No patent licenses or other rights except those expressly stated in the OpenSSL open source license shall be deemed granted or received expressly, by implication, estoppel, or otherwise. No assurances are provided by Nokia that the Contribution does not infringe the patent or other intellectual property rights of any third party or that the license provides you with all the necessary rights to make use of the Contribution. THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR OTHERWISE. -------------------------------------------------------------------------------- boringssl Copyright 2006-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html -------------------------------------------------------------------------------- boringssl Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html -------------------------------------------------------------------------------- boringssl Copyright 2010 The Chromium Authors Use of this source code is governed by a BSD-style license that can be found in the LICENSE file -------------------------------------------------------------------------------- boringssl Copyright 2011 The Chromium Authors Use of this source code is governed by a BSD-style license that can be found in the LICENSE file -------------------------------------------------------------------------------- boringssl Copyright 2012 The Chromium Authors Use of this source code is governed by a BSD-style license that can be found in the LICENSE file -------------------------------------------------------------------------------- boringssl Copyright 2012-2016 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html -------------------------------------------------------------------------------- boringssl Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2012, Intel Corporation. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html -------------------------------------------------------------------------------- boringssl Copyright 2014 The Chromium Authors Use of this source code is governed by a BSD-style license that can be found in the LICENSE file -------------------------------------------------------------------------------- boringssl Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html -------------------------------------------------------------------------------- boringssl Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2014, Intel Corporation. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html -------------------------------------------------------------------------------- boringssl Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2015, Intel Inc. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html -------------------------------------------------------------------------------- boringssl Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html -------------------------------------------------------------------------------- boringssl Copyright 2015 The Chromium Authors Use of this source code is governed by a BSD-style license that can be found in the LICENSE file -------------------------------------------------------------------------------- boringssl Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html -------------------------------------------------------------------------------- boringssl Copyright 2016 Brian Smith. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -------------------------------------------------------------------------------- boringssl Copyright 2016 The Chromium Authors Use of this source code is governed by a BSD-style license that can be found in the LICENSE file -------------------------------------------------------------------------------- boringssl Copyright 2017 The Chromium Authors Use of this source code is governed by a BSD-style license that can be found in the LICENSE file -------------------------------------------------------------------------------- boringssl Copyright 2019 The Chromium Authors Use of this source code is governed by a BSD-style license that can be found in the LICENSE file -------------------------------------------------------------------------------- boringssl Copyright 2022 The Chromium Authors Use of this source code is governed by a BSD-style license that can be found in the LICENSE file -------------------------------------------------------------------------------- boringssl Copyright 2023 The Chromium Authors Use of this source code is governed by a BSD-style license that can be found in the LICENSE file -------------------------------------------------------------------------------- boringssl Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -------------------------------------------------------------------------------- boringssl DTLS code by Eric Rescorla Copyright (C) 2006, Network Resonance, Inc. Copyright (C) 2011, RTFM, Inc. -------------------------------------------------------------------------------- boringssl OpenSSL License --------------- Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@openssl.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This product includes cryptographic software written by Eric Young (eay@cryptsoft.com). This product includes software written by Tim Hudson (tjh@cryptsoft.com). Original SSLeay License ----------------------- Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) All rights reserved. This package is an SSL implementation written by Eric Young (eay@cryptsoft.com). The implementation was written so as to conform with Netscapes SSL. This library is free for commercial and non-commercial use as long as the following conditions are aheared to. The following conditions apply to all code found in this distribution, be it the RC4, RSA, lhash, DES, etc., code; not just the SSL code. The SSL documentation included with this distribution is covered by the same copyright terms except that the holder is Tim Hudson (tjh@cryptsoft.com). Copyright remains Eric Young's, and as such any Copyright notices in the code are not to be removed. If this package is used in a product, Eric Young should be given attribution as the author of the parts of the library used. This can be in the form of a textual message at program startup or in documentation (online or textual) provided with the package. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgement: "This product includes cryptographic software written by Eric Young (eay@cryptsoft.com)" The word 'cryptographic' can be left out if the rouines from the library being used are not cryptographic related :-). 4. If you include any Windows specific code (or a derivative thereof) from the apps directory (application code) you must include an acknowledgement: "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The licence and distribution terms for any publically available version or derivative of this code cannot be changed. i.e. this code cannot simply be copied and put under another distribution licence [including the GNU Public Licence.] ISC license used for completely new code in BoringSSL: Copyright (c) 2015, Google Inc. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. The code in third_party/fiat carries the MIT license: Copyright (c) 2015-2016 the fiat-crypto authors (see https://github.com/mit-plv/fiat-crypto/blob/master/AUTHORS). 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. Licenses for support code ------------------------- Parts of the TLS test suite are under the Go license. This code is not included in BoringSSL (i.e. libcrypto and libssl) when compiled, however, so distributing code linked against BoringSSL does not trigger this license: Copyright (c) 2009 The Go Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. BoringSSL uses the Chromium test infrastructure to run a continuous build, trybots etc. The scripts which manage this, and the script for generating build metadata, are under the Chromium license. Distributing code linked against BoringSSL does not trigger this license. Copyright 2015 The Chromium Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- ceval Copyright (c) 2021 e_t 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. -------------------------------------------------------------------------------- characters ffi Copyright 2019, the Dart project authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- clock fake_async Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -------------------------------------------------------------------------------- cross_file file_selector_linux file_selector_macos file_selector_platform_interface file_selector_windows flutter_lints flutter_plugin_android_lifecycle image_picker_for_web image_picker_linux image_picker_macos image_picker_platform_interface image_picker_windows path_provider path_provider_android path_provider_foundation path_provider_linux path_provider_platform_interface path_provider_windows platform plugin_platform_interface shared_preferences shared_preferences_android shared_preferences_foundation shared_preferences_linux shared_preferences_platform_interface shared_preferences_web shared_preferences_windows url_launcher url_launcher_android url_launcher_ios url_launcher_linux url_launcher_macos url_launcher_platform_interface url_launcher_windows webview_flutter webview_flutter_platform_interface webview_flutter_wkwebview xdg_directories Copyright 2013 The Flutter Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- cupertino_icons The MIT License (MIT) Copyright (c) 2016 Vladimir Kharlampidi 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. -------------------------------------------------------------------------------- dart Copyright (c) 2003-2005 Tom Wu Copyright (c) 2012 Adam Singer (adam@solvr.io) All Rights Reserved. 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" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. In addition, the following condition applies: All redistributions must retain an intact copy of this copyright notice and disclaimer. -------------------------------------------------------------------------------- dart Copyright (c) 2010, the Dart project authors. Please see the AUTHORS file for details. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- dart Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file for details. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- dart Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file for details. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- dart Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file for details. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- dart Copyright (c) 2014 The Polymer Project Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- dart Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file for details. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- dart Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file for details. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- dart Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file for details. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- dart Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file for details. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- dart Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file for details. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- dart Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file for details. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- dart Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file for details. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- dart Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file for details. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- dart Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file for details. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- dart Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file for details. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- dart Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file for details. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- dart Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file for details. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- dart Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file for details. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- dart Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file for details. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- dart Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file for details. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- dart Copyright 2012, the Dart project authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- double-conversion icu Copyright 2006-2008 the V8 project authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- double-conversion icu Copyright 2010 the V8 project authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- double-conversion icu Copyright 2012 the V8 project authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- engine License for the Ahem font embedded below is from: https://www.w3.org/Style/CSS/Test/Fonts/Ahem/COPYING The Ahem font in this directory belongs to the public domain. In jurisdictions that do not recognize public domain ownership of these files, the following Creative Commons Zero declaration applies: which is quoted below: The person who has associated a work with this document (the "Work") affirms that he or she (the "Affirmer") is the/an author or owner of the Work. The Work may be any work of authorship, including a database. The Affirmer hereby fully, permanently and irrevocably waives and relinquishes all of her or his copyright and related or neighboring legal rights in the Work available under any federal or state law, treaty or contract, including but not limited to moral rights, publicity and privacy rights, rights protecting against unfair competition and any rights protecting the extraction, dissemination and reuse of data, whether such rights are present or future, vested or contingent (the "Waiver"). The Affirmer makes the Waiver for the benefit of the public at large and to the detriment of the Affirmer's heirs or successors. The Affirmer understands and intends that the Waiver has the effect of eliminating and entirely removing from the Affirmer's control all the copyright and related or neighboring legal rights previously held by the Affirmer in the Work, to that extent making the Work freely available to the public for any and all uses and purposes without restriction of any kind, including commercial use and uses in media and formats or by methods that have not yet been invented or conceived. Should the Waiver for any reason be judged legally ineffective in any jurisdiction, the Affirmer hereby grants a free, full, permanent, irrevocable, nonexclusive and worldwide license for all her or his copyright and related or neighboring legal rights in the Work. -------------------------------------------------------------------------------- etc_decoder Copyright (c) 2020-2022 Hans-Kristian Arntzen 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2000 Clark Cooper Copyright (c) 2000-2004 Fred L. Drake, Jr. Copyright (c) 2001-2002 Greg Stein Copyright (c) 2002-2006 Karl Waclawek Copyright (c) 2016 Cristian Rodríguez Copyright (c) 2016-2019 Sebastian Pipping Copyright (c) 2017 Rhodri James Copyright (c) 2018 Yury Gribov Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2000 Clark Cooper Copyright (c) 2000-2005 Fred L. Drake, Jr. Copyright (c) 2001-2002 Greg Stein Copyright (c) 2002-2016 Karl Waclawek Copyright (c) 2016-2022 Sebastian Pipping Copyright (c) 2016 Cristian Rodríguez Copyright (c) 2016 Thomas Beutlich Copyright (c) 2017 Rhodri James Copyright (c) 2022 Thijs Schreijer Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2000 Clark Cooper Copyright (c) 2000-2006 Fred L. Drake, Jr. Copyright (c) 2001-2002 Greg Stein Copyright (c) 2002-2016 Karl Waclawek Copyright (c) 2005-2009 Steven Solie Copyright (c) 2016 Eric Rahm Copyright (c) 2016-2022 Sebastian Pipping Copyright (c) 2016 Gaurav Copyright (c) 2016 Thomas Beutlich Copyright (c) 2016 Gustavo Grieco Copyright (c) 2016 Pascal Cuoq Copyright (c) 2016 Ed Schouten Copyright (c) 2017-2022 Rhodri James Copyright (c) 2017 Václav Slavík Copyright (c) 2017 Viktor Szakats Copyright (c) 2017 Chanho Park Copyright (c) 2017 Rolf Eike Beer Copyright (c) 2017 Hans Wennborg Copyright (c) 2018 Anton Maklakov Copyright (c) 2018 Benjamin Peterson Copyright (c) 2018 Marco Maggi Copyright (c) 2018 Mariusz Zaborski Copyright (c) 2019 David Loffredo Copyright (c) 2019-2020 Ben Wagner Copyright (c) 2019 Vadim Zeitlin Copyright (c) 2021 Dong-hee Na Copyright (c) 2022 Samanta Navarro Copyright (c) 2022 Jeffrey Walton Copyright (c) 2022 Jann Horn Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2000 Clark Cooper Copyright (c) 2001-2002 Fred L. Drake, Jr. Copyright (c) 2006 Karl Waclawek Copyright (c) 2016-2017 Sebastian Pipping Copyright (c) 2017 Rhodri James Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2000 Clark Cooper Copyright (c) 2001-2003 Fred L. Drake, Jr. Copyright (c) 2002 Greg Stein Copyright (c) 2002-2016 Karl Waclawek Copyright (c) 2005-2009 Steven Solie Copyright (c) 2016-2022 Sebastian Pipping Copyright (c) 2016 Pascal Cuoq Copyright (c) 2016 Don Lewis Copyright (c) 2017 Rhodri James Copyright (c) 2017 Alexander Bluhm Copyright (c) 2017 Benbuck Nason Copyright (c) 2017 José Gutiérrez de la Concha Copyright (c) 2019 David Loffredo Copyright (c) 2021 Dong-hee Na Copyright (c) 2022 Martin Ettl Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2000 Clark Cooper Copyright (c) 2001-2003 Fred L. Drake, Jr. Copyright (c) 2004-2009 Karl Waclawek Copyright (c) 2005-2007 Steven Solie Copyright (c) 2016-2022 Sebastian Pipping Copyright (c) 2017 Rhodri James Copyright (c) 2019 David Loffredo Copyright (c) 2020 Joe Orton Copyright (c) 2020 Kleber Tarcísio Copyright (c) 2021 Tim Bray Copyright (c) 2022 Martin Ettl Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2000 Clark Cooper Copyright (c) 2001-2004 Fred L. Drake, Jr. Copyright (c) 2002-2009 Karl Waclawek Copyright (c) 2016-2017 Sebastian Pipping Copyright (c) 2017 Rhodri James Copyright (c) 2017 Franek Korta Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2000 Clark Cooper Copyright (c) 2002 Fred L. Drake, Jr. Copyright (c) 2002-2005 Karl Waclawek Copyright (c) 2016-2017 Sebastian Pipping Copyright (c) 2017 Rhodri James Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2000 Clark Cooper Copyright (c) 2002 Fred L. Drake, Jr. Copyright (c) 2002-2016 Karl Waclawek Copyright (c) 2016-2022 Sebastian Pipping Copyright (c) 2017 Rhodri James Copyright (c) 2018 Benjamin Peterson Copyright (c) 2018 Anton Maklakov Copyright (c) 2019 David Loffredo Copyright (c) 2020 Boris Kolpackov Copyright (c) 2022 Martin Ettl Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2000 Clark Cooper Copyright (c) 2002 Fred L. Drake, Jr. Copyright (c) 2005 Karl Waclawek Copyright (c) 2016-2019 Sebastian Pipping Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2000 Clark Cooper Copyright (c) 2002 Fred L. Drake, Jr. Copyright (c) 2005-2006 Karl Waclawek Copyright (c) 2016-2019 Sebastian Pipping Copyright (c) 2019 David Loffredo Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2000 Clark Cooper Copyright (c) 2002 Fred L. Drake, Jr. Copyright (c) 2016-2017 Sebastian Pipping Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2000 Clark Cooper Copyright (c) 2002 Fred L. Drake, Jr. Copyright (c) 2016-2022 Sebastian Pipping Copyright (c) 2022 Martin Ettl Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2000 Clark Cooper Copyright (c) 2002 Fred L. Drake, Jr. Copyright (c) 2017 Sebastian Pipping Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2000 Clark Cooper Copyright (c) 2002 Greg Stein Copyright (c) 2002 Fred L. Drake, Jr. Copyright (c) 2002-2006 Karl Waclawek Copyright (c) 2017-2021 Sebastian Pipping Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2000 Clark Cooper Copyright (c) 2002 Greg Stein Copyright (c) 2002-2006 Karl Waclawek Copyright (c) 2002-2003 Fred L. Drake, Jr. Copyright (c) 2005-2009 Steven Solie Copyright (c) 2016-2021 Sebastian Pipping Copyright (c) 2017 Rhodri James Copyright (c) 2019 David Loffredo Copyright (c) 2021 Dong-hee Na Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2000 Clark Cooper Copyright (c) 2002 Karl Waclawek Copyright (c) 2002 Fred L. Drake, Jr. Copyright (c) 2017 Sebastian Pipping Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2000 Clark Cooper Copyright (c) 2002-2003 Fred L. Drake, Jr. Copyright (c) 2004-2006 Karl Waclawek Copyright (c) 2005-2007 Steven Solie Copyright (c) 2016-2021 Sebastian Pipping Copyright (c) 2017 Rhodri James Copyright (c) 2019 David Loffredo Copyright (c) 2021 Dong-hee Na Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2000 Clark Cooper Copyright (c) 2017-2019 Sebastian Pipping Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2002 Fred L. Drake, Jr. Copyright (c) 2016-2017 Sebastian Pipping Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2002 Fred L. Drake, Jr. Copyright (c) 2016-2018 Sebastian Pipping Copyright (c) 2018 Marco Maggi Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1997-2000 Thai Open Source Software Center Ltd Copyright (c) 2016-2021 Sebastian Pipping Copyright (c) 2017 Rhodri James Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper Copyright (c) 2001-2022 Expat maintainers 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. -------------------------------------------------------------------------------- expat Copyright (c) 1999-2000 Thai Open Source Software Center Ltd Copyright (c) 2000 Clark Cooper Copyright (c) 2002 Fred L. Drake, Jr. Copyright (c) 2007 Karl Waclawek Copyright (c) 2017 Sebastian Pipping Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 2000 Clark Cooper Copyright (c) 2002 Greg Stein Copyright (c) 2005 Karl Waclawek Copyright (c) 2017-2021 Sebastian Pipping Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 2000 Clark Cooper Copyright (c) 2017 Sebastian Pipping Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat Copyright (c) 2002-2003 Fred L. Drake, Jr. Copyright (c) 2002-2006 Karl Waclawek Copyright (c) 2003 Greg Stein Copyright (c) 2016-2022 Sebastian Pipping Copyright (c) 2018 Yury Gribov Copyright (c) 2019 David Loffredo Licensed under the MIT license: 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. -------------------------------------------------------------------------------- expat harfbuzz Copyright (c) 2021 Google Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fallback_root_certificates Mozilla Public License Version 2.0 ================================== 1. Definitions -------------- 1.1. "Contributor" means each individual or legal entity that creates, contributes to the creation of, or owns Covered Software. 1.2. "Contributor Version" means the combination of the Contributions of others (if any) used by a Contributor and that particular Contributor's Contribution. 1.3. "Contribution" means Covered Software of a particular Contributor. 1.4. "Covered Software" means Source Code Form to which the initial Contributor has attached the notice in Exhibit A, the Executable Form of such Source Code Form, and Modifications of such Source Code Form, in each case including portions thereof. 1.5. "Incompatible With Secondary Licenses" means (a) that the initial Contributor has attached the notice described in Exhibit B to the Covered Software; or (b) that the Covered Software was made available under the terms of version 1.1 or earlier of the License, but not also under the terms of a Secondary License. 1.6. "Executable Form" means any form of the work other than Source Code Form. 1.7. "Larger Work" means a work that combines Covered Software with other material, in a separate file or files, that is not Covered Software. 1.8. "License" means this document. 1.9. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently, any and all of the rights conveyed by this License. 1.10. "Modifications" means any of the following: (a) any file in Source Code Form that results from an addition to, deletion from, or modification of the contents of Covered Software; or (b) any new file in Source Code Form that contains any Covered Software. 1.11. "Patent Claims" of a Contributor means any patent claim(s), including without limitation, method, process, and apparatus claims, in any patent Licensable by such Contributor that would be infringed, but for the grant of the License, by the making, using, selling, offering for sale, having made, import, or transfer of either its Contributions or its Contributor Version. 1.12. "Secondary License" means either the GNU General Public License, Version 2.0, the GNU Lesser General Public License, Version 2.1, the GNU Affero General Public License, Version 3.0, or any later versions of those licenses. 1.13. "Source Code Form" means the form of the work preferred for making modifications. 1.14. "You" (or "Your") means an individual or a legal entity exercising rights under this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. 2. License Grants and Conditions -------------------------------- 2.1. Grants Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license: (a) under intellectual property rights (other than patent or trademark) Licensable by such Contributor to use, reproduce, make available, modify, display, perform, distribute, and otherwise exploit its Contributions, either on an unmodified basis, with Modifications, or as part of a Larger Work; and (b) under Patent Claims of such Contributor to make, use, sell, offer for sale, have made, import, and otherwise transfer either its Contributions or its Contributor Version. 2.2. Effective Date The licenses granted in Section 2.1 with respect to any Contribution become effective for each Contribution on the date the Contributor first distributes such Contribution. 2.3. Limitations on Grant Scope The licenses granted in this Section 2 are the only rights granted under this License. No additional rights or licenses will be implied from the distribution or licensing of Covered Software under this License. Notwithstanding Section 2.1(b) above, no patent license is granted by a Contributor: (a) for any code that a Contributor has removed from Covered Software; or (b) for infringements caused by: (i) Your and any other third party's modifications of Covered Software, or (ii) the combination of its Contributions with other software (except as part of its Contributor Version); or (c) under Patent Claims infringed by Covered Software in the absence of its Contributions. This License does not grant any rights in the trademarks, service marks, or logos of any Contributor (except as may be necessary to comply with the notice requirements in Section 3.4). 2.4. Subsequent Licenses No Contributor makes additional grants as a result of Your choice to distribute the Covered Software under a subsequent version of this License (see Section 10.2) or under the terms of a Secondary License (if permitted under the terms of Section 3.3). 2.5. Representation Each Contributor represents that the Contributor believes its Contributions are its original creation(s) or it has sufficient rights to grant the rights to its Contributions conveyed by this License. 2.6. Fair Use This License is not intended to limit any rights You have under applicable copyright doctrines of fair use, fair dealing, or other equivalents. 2.7. Conditions Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in Section 2.1. 3. Responsibilities ------------------- 3.1. Distribution of Source Form All distribution of Covered Software in Source Code Form, including any Modifications that You create or to which You contribute, must be under the terms of this License. You must inform recipients that the Source Code Form of the Covered Software is governed by the terms of this License, and how they can obtain a copy of this License. You may not attempt to alter or restrict the recipients' rights in the Source Code Form. 3.2. Distribution of Executable Form If You distribute Covered Software in Executable Form then: (a) such Covered Software must also be made available in Source Code Form, as described in Section 3.1, and You must inform recipients of the Executable Form how they can obtain a copy of such Source Code Form by reasonable means in a timely manner, at a charge no more than the cost of distribution to the recipient; and (b) You may distribute such Executable Form under the terms of this License, or sublicense it under different terms, provided that the license for the Executable Form does not attempt to limit or alter the recipients' rights in the Source Code Form under this License. 3.3. Distribution of a Larger Work You may create and distribute a Larger Work under terms of Your choice, provided that You also comply with the requirements of this License for the Covered Software. If the Larger Work is a combination of Covered Software with a work governed by one or more Secondary Licenses, and the Covered Software is not Incompatible With Secondary Licenses, this License permits You to additionally distribute such Covered Software under the terms of such Secondary License(s), so that the recipient of the Larger Work may, at their option, further distribute the Covered Software under the terms of either this License or such Secondary License(s). 3.4. Notices You may not remove or alter the substance of any license notices (including copyright notices, patent notices, disclaimers of warranty, or limitations of liability) contained within the Source Code Form of the Covered Software, except that You may alter any license notices to the extent required to remedy known factual inaccuracies. 3.5. Application of Additional Terms You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, You may do so only on Your own behalf, and not on behalf of any Contributor. You must make it absolutely clear that any such warranty, support, indemnity, or liability obligation is offered by You alone, and You hereby agree to indemnify every Contributor for any liability incurred by such Contributor as a result of warranty, support, indemnity or liability terms You offer. You may include additional disclaimers of warranty and limitations of liability specific to any jurisdiction. 4. Inability to Comply Due to Statute or Regulation --------------------------------------------------- If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Software due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be placed in a text file included with all distributions of the Covered Software under this License. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. 5. Termination -------------- 5.1. The rights granted under this License will terminate automatically if You fail to comply with any of its terms. However, if You become compliant, then the rights granted under this License from a particular Contributor are reinstated (a) provisionally, unless and until such Contributor explicitly and finally terminates Your grants, and (b) on an ongoing basis, if such Contributor fails to notify You of the non-compliance by some reasonable means prior to 60 days after You have come back into compliance. Moreover, Your grants from a particular Contributor are reinstated on an ongoing basis if such Contributor notifies You of the non-compliance by some reasonable means, this is the first time You have received notice of non-compliance with this License from such Contributor, and You become compliant prior to 30 days after Your receipt of the notice. 5.2. If You initiate litigation against any entity by asserting a patent infringement claim (excluding declaratory judgment actions, counter-claims, and cross-claims) alleging that a Contributor Version directly or indirectly infringes any patent, then the rights granted to You by any and all Contributors for the Covered Software under Section 2.1 of this License shall terminate. 5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or Your distributors under this License prior to termination shall survive termination. ************************************************************************ * * * 6. Disclaimer of Warranty * * ------------------------- * * * * Covered Software is provided under this License on an "as is" * * basis, without warranty of any kind, either expressed, implied, or * * statutory, including, without limitation, warranties that the * * Covered Software is free of defects, merchantable, fit for a * * particular purpose or non-infringing. The entire risk as to the * * quality and performance of the Covered Software is with You. * * Should any Covered Software prove defective in any respect, You * * (not any Contributor) assume the cost of any necessary servicing, * * repair, or correction. This disclaimer of warranty constitutes an * * essential part of this License. No use of any Covered Software is * * authorized under this License except under this disclaimer. * * * ************************************************************************ ************************************************************************ * * * 7. Limitation of Liability * * -------------------------- * * * * Under no circumstances and under no legal theory, whether tort * * (including negligence), contract, or otherwise, shall any * * Contributor, or anyone who distributes Covered Software as * * permitted above, be liable to You for any direct, indirect, * * special, incidental, or consequential damages of any character * * including, without limitation, damages for lost profits, loss of * * goodwill, work stoppage, computer failure or malfunction, or any * * and all other commercial damages or losses, even if such party * * shall have been informed of the possibility of such damages. This * * limitation of liability shall not apply to liability for death or * * personal injury resulting from such party's negligence to the * * extent applicable law prohibits such limitation. Some * * jurisdictions do not allow the exclusion or limitation of * * incidental or consequential damages, so this exclusion and * * limitation may not apply to You. * * * ************************************************************************ 8. Litigation ------------- Any litigation relating to this License may be brought only in the courts of a jurisdiction where the defendant maintains its principal place of business and such litigation shall be governed by laws of that jurisdiction, without reference to its conflict-of-law provisions. Nothing in this Section shall prevent a party's ability to bring cross-claims or counter-claims. 9. Miscellaneous ---------------- This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not be used to construe this License against a Contributor. 10. Versions of the License --------------------------- 10.1. New Versions Mozilla Foundation is the license steward. Except as provided in Section 10.3, no one other than the license steward has the right to modify or publish new versions of this License. Each version will be given a distinguishing version number. 10.2. Effect of New Versions You may distribute the Covered Software under the terms of the version of the License under which You originally received the Covered Software, or under the terms of any subsequent version published by the license steward. 10.3. Modified Versions If you create software not governed by this License, and you want to create a new license for such software, you may create and use a modified version of this License if you rename the license and remove any references to the name of the license steward (except to note that such modified license differs from this License). 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses If You choose to distribute Source Code Form that is Incompatible With Secondary Licenses under the terms of this version of the License, the notice described in Exhibit B of this License must be attached. Exhibit A - Source Code Form License Notice ------------------------------------------- This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice. You may add additional accurate notices of copyright ownership. Exhibit B - "Incompatible With Secondary Licenses" Notice --------------------------------------------------------- This Source Code Form is "Incompatible With Secondary Licenses", as defined by the Mozilla Public License, v. 2.0. You may obtain a copy of this library's Source Code Form from: https://dart.googlesource.com/sdk/+/bb65648e20e29abc47acf3dd984518d29fd625c3 /third_party/fallback_root_certificates/ -------------------------------------------------------------------------------- ffx_spd Copyright (c) 2017-2019 Advanced Micro Devices, Inc. All rights reserved. Copyright (c) <2014> 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. -------------------------------------------------------------------------------- ffx_spd Copyright (c) 2017-2020 Advanced Micro Devices, Inc. All rights reserved. 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. -------------------------------------------------------------------------------- fiat Copyright (c) 2015-2020 the fiat-crypto authors (see https://github.com/mit-plv/fiat-crypto/blob/master/AUTHORS). 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 Copyright 2017, the Dart project authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- file_picker MIT License Copyright (c) 2018 Miguel Ruivo 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 NON INFRINGEMENT. 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. -------------------------------------------------------------------------------- flatbuffers Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2014 Google Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -------------------------------------------------------------------------------- flutter Copyright 2014 The Flutter Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- flutter_highlight highlight MIT License Copyright (c) 2019 Rongjian Zhang 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. -------------------------------------------------------------------------------- flutter_image_compress flutter_image_compress_common flutter_image_compress_macos flutter_image_compress_ohos flutter_image_compress_platform_interface flutter_image_compress_web MIT License Copyright (c) 2023 FlutterCandies 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. -------------------------------------------------------------------------------- flutter_secure_storage flutter_secure_storage_linux flutter_secure_storage_macos flutter_secure_storage_platform_interface flutter_secure_storage_web flutter_secure_storage_windows BSD 3-Clause License Copyright 2017 German Saprykin All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- flutter_tts MIT License Copyright (c) 2018 Daniel Lutton 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. -------------------------------------------------------------------------------- freetype2 Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- freetype2 Copyright (C) 2000, 2001, 2002, 2003, 2006, 2010 by Francesco Zappa Nardelli 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. -------------------------------------------------------------------------------- freetype2 Copyright (C) 2000-2004, 2006-2011, 2013, 2014 by Francesco Zappa Nardelli 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. -------------------------------------------------------------------------------- freetype2 Copyright (C) 2001, 2002 by Francesco Zappa Nardelli 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. -------------------------------------------------------------------------------- freetype2 Copyright (C) 2001, 2002, 2003, 2004 by Francesco Zappa Nardelli 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. -------------------------------------------------------------------------------- freetype2 Copyright (C) 2001-2008, 2011, 2013, 2014 by Francesco Zappa Nardelli 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. -------------------------------------------------------------------------------- freetype2 Copyright 1990, 1994, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. 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 OPEN GROUP 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. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. -------------------------------------------------------------------------------- freetype2 Copyright 2000 Computing Research Labs, New Mexico State University Copyright 2001-2004, 2011 Francesco Zappa Nardelli 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 COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY 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. -------------------------------------------------------------------------------- freetype2 Copyright 2000 Computing Research Labs, New Mexico State University Copyright 2001-2014 Francesco Zappa Nardelli 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 COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY 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. -------------------------------------------------------------------------------- freetype2 Copyright 2000 Computing Research Labs, New Mexico State University Copyright 2001-2015 Francesco Zappa Nardelli 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 COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY 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. -------------------------------------------------------------------------------- freetype2 Copyright 2000, 2001, 2004 by Francesco Zappa Nardelli 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. -------------------------------------------------------------------------------- freetype2 Copyright 2000-2001, 2002 by Francesco Zappa Nardelli 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. -------------------------------------------------------------------------------- freetype2 Copyright 2000-2001, 2003 by Francesco Zappa Nardelli 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. -------------------------------------------------------------------------------- freetype2 Copyright 2000-2010, 2012-2014 by Francesco Zappa Nardelli 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. -------------------------------------------------------------------------------- freetype2 Copyright 2001, 2002, 2012 Francesco Zappa Nardelli 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 COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY 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. -------------------------------------------------------------------------------- freetype2 Copyright 2003 by Francesco Zappa Nardelli 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. -------------------------------------------------------------------------------- freetype2 The FreeType Project LICENSE ---------------------------- 2006-Jan-27 Copyright 1996-2002, 2006 by David Turner, Robert Wilhelm, and Werner Lemberg Introduction ============ The FreeType Project is distributed in several archive packages; some of them may contain, in addition to the FreeType font engine, various tools and contributions which rely on, or relate to, the FreeType Project. This license applies to all files found in such packages, and which do not fall under their own explicit license. The license affects thus the FreeType font engine, the test programs, documentation and makefiles, at the very least. This license was inspired by the BSD, Artistic, and IJG (Independent JPEG Group) licenses, which all encourage inclusion and use of free software in commercial and freeware products alike. As a consequence, its main points are that: o We don't promise that this software works. However, we will be interested in any kind of bug reports. (`as is' distribution) o You can use this software for whatever you want, in parts or full form, without having to pay us. (`royalty-free' usage) o You may not pretend that you wrote this software. If you use it, or only parts of it, in a program, you must acknowledge somewhere in your documentation that you have used the FreeType code. (`credits') We specifically permit and encourage the inclusion of this software, with or without modifications, in commercial products. We disclaim all warranties covering The FreeType Project and assume no liability related to The FreeType Project. Finally, many people asked us for a preferred form for a credit/disclaimer to use in compliance with this license. We thus encourage you to use the following text: """ Portions of this software are copyright © The FreeType Project (www.freetype.org). All rights reserved. """ Please replace with the value from the FreeType version you actually use. Legal Terms =========== 0. Definitions -------------- Throughout this license, the terms `package', `FreeType Project', and `FreeType archive' refer to the set of files originally distributed by the authors (David Turner, Robert Wilhelm, and Werner Lemberg) as the `FreeType Project', be they named as alpha, beta or final release. `You' refers to the licensee, or person using the project, where `using' is a generic term including compiling the project's source code as well as linking it to form a `program' or `executable'. This program is referred to as `a program using the FreeType engine'. This license applies to all files distributed in the original FreeType Project, including all source code, binaries and documentation, unless otherwise stated in the file in its original, unmodified form as distributed in the original archive. If you are unsure whether or not a particular file is covered by this license, you must contact us to verify this. The FreeType Project is copyright (C) 1996-2000 by David Turner, Robert Wilhelm, and Werner Lemberg. All rights reserved except as specified below. 1. No Warranty -------------- THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE OR THE INABILITY TO USE, OF THE FREETYPE PROJECT. 2. Redistribution ----------------- This license grants a worldwide, royalty-free, perpetual and irrevocable right and license to use, execute, perform, compile, display, copy, create derivative works of, distribute and sublicense the FreeType Project (in both source and object code forms) and derivative works thereof for any purpose; and to authorize others to exercise some or all of the rights granted herein, subject to the following conditions: o Redistribution of source code must retain this license file (`FTL.TXT') unaltered; any additions, deletions or changes to the original files must be clearly indicated in accompanying documentation. The copyright notices of the unaltered, original files must be preserved in all copies of source files. o Redistribution in binary form must provide a disclaimer that states that the software is based in part of the work of the FreeType Team, in the distribution documentation. We also encourage you to put an URL to the FreeType web page in your documentation, though this isn't mandatory. These conditions apply to any software derived from or based on the FreeType Project, not just the unmodified files. If you use our work, you must acknowledge us. However, no fee need be paid to us. 3. Advertising -------------- Neither the FreeType authors and contributors nor you shall use the name of the other for commercial, advertising, or promotional purposes without specific prior written permission. We suggest, but do not require, that you use one or more of the following phrases to refer to this software in your documentation or advertising materials: `FreeType Project', `FreeType Engine', `FreeType library', or `FreeType Distribution'. As you have not signed this license, you are not required to accept it. However, as the FreeType Project is copyrighted material, only this license, or another one contracted with the authors, grants you the right to use, distribute, and modify it. Therefore, by using, distributing, or modifying the FreeType Project, you indicate that you understand and accept all the terms of this license. 4. Contacts ----------- There are two mailing lists related to FreeType: o freetype@nongnu.org Discusses general use and applications of FreeType, as well as future and wanted additions to the library and distribution. If you are looking for support, start in this list if you haven't found anything to help you in the documentation. o freetype-devel@nongnu.org Discusses bugs, as well as engine internals, design issues, specific licenses, porting, etc. Our home page can be found at https://www.freetype.org --- end of FTL.TXT --- -------------------------------------------------------------------------------- freetype2 This software was written by Alexander Peslyak in 2001. No copyright is claimed, and the software is hereby placed in the public domain. In case this attempt to disclaim copyright and place the software in the public domain is deemed null and void, then the software is Copyright (c) 2001 Alexander Peslyak and it is hereby released to the general public under the following terms: Redistribution and use in source and binary forms, with or without modification, are permitted. There's ABSOLUTELY NO WARRANTY, express or implied. -------------------------------------------------------------------------------- freetype2 This software was written by Alexander Peslyak in 2001. No copyright is claimed, and the software is hereby placed in the public domain. In case this attempt to disclaim copyright and place the software in the public domain is deemed null and void, then the software is Copyright (c) 2001 Alexander Peslyak and it is hereby released to the general public under the following terms: Redistribution and use in source and binary forms, with or without modification, are permitted. There's ABSOLUTELY NO WARRANTY, express or implied. (This is a heavily cut-down "BSD license".) -------------------------------------------------------------------------------- fuchsia_sdk Copyright 2014 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk Copyright 2016 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk Copyright 2017 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk Copyright 2018 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk Copyright 2019 The Fuchsia Authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk Copyright 2019 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk Copyright 2021 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk Copyright 2022 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk Copyright 2023 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk Copyright 2024 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk musl as a whole is licensed under the following standard MIT license: Copyright © 2005-2014 Rich Felker, et al. 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. Authors/contributors include: Alex Dowad Alexander Monakov Anthony G. Basile Arvid Picciani Bobby Bingham Boris Brezillon Brent Cook Chris Spiegel Clément Vasseur Daniel Micay Denys Vlasenko Emil Renner Berthing Felix Fietkau Felix Janda Gianluca Anzolin Hauke Mehrtens Hiltjo Posthuma Isaac Dunham Jaydeep Patil Jens Gustedt Jeremy Huntwork Jo-Philipp Wich Joakim Sindholt John Spencer Josiah Worcester Justin Cormack Khem Raj Kylie McClain Luca Barbato Luka Perkov M Farkas-Dyck (Strake) Mahesh Bodapati Michael Forney Natanael Copa Nicholas J. Kain orc Pascal Cuoq Petr Hosek Pierre Carrier Rich Felker Richard Pennington Shiz sin Solar Designer Stefan Kristiansson Szabolcs Nagy Timo Teräs Trutz Behn Valentin Ochs William Haddon Portions of this software are derived from third-party works licensed under terms compatible with the above MIT license: Much of the math library code (third_party/math/* and third_party/complex/*, and third_party/include/libm.h) is Copyright © 1993,2004 Sun Microsystems or Copyright © 2003-2011 David Schultz or Copyright © 2003-2009 Steven G. Kargl or Copyright © 2003-2009 Bruce D. Evans or Copyright © 2008 Stephen L. Moshier and labelled as such in comments in the individual source files. All have been licensed under extremely permissive terms. The smoothsort implementation (third_party/smoothsort/qsort.c) is Copyright © 2011 Valentin Ochs and is licensed under an MIT-style license. The x86_64 files in third_party/arch were written by Nicholas J. Kain and is licensed under the standard MIT terms. All other files which have no copyright comments are original works produced specifically for use as part of this library, written either by Rich Felker, the main author of the library, or by one or more contibutors listed above. Details on authorship of individual files can be found in the git version control history of the project. The omission of copyright and license comments in each file is in the interest of source tree size. In addition, permission is hereby granted for all public header files (include/* and arch/*/bits/*) and crt files intended to be linked into applications (crt/*, ldso/dlstart.c, and arch/*/crt_arch.h) to omit the copyright notice and permission notice otherwise required by the license, and to use these files without any requirement of attribution. These files include substantial contributions from: Bobby Bingham John Spencer Nicholas J. Kain Rich Felker Richard Pennington Stefan Kristiansson Szabolcs Nagy all of whom have explicitly granted such permission. This file previously contained text expressing a belief that most of the files covered by the above exception were sufficiently trivial not to be subject to copyright, resulting in confusion over whether it negated the permissions granted in the license. In the spirit of permissive licensing, and of not having licensing issues being an obstacle to adoption, that text has been removed. -------------------------------------------------------------------------------- glfw Copyright (C) 1997-2013 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- glfw Copyright (c) 2002-2006 Marcus Geelnard Copyright (c) 2006-2019 Camilla Löwy This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- glfw Copyright (c) 2002-2006 Marcus Geelnard Copyright (c) 2006-2016 Camilla Löwy This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- glfw Copyright (c) 2002-2006 Marcus Geelnard Copyright (c) 2006-2017 Camilla Löwy This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- glfw Copyright (c) 2002-2006 Marcus Geelnard Copyright (c) 2006-2018 Camilla Löwy This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- glfw Copyright (c) 2002-2006 Marcus Geelnard Copyright (c) 2006-2019 Camilla Löwy This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- glfw Copyright (c) 2002-2006 Marcus Geelnard Copyright (c) 2006-2019 Camilla Löwy Copyright (c) 2012 Torsten Walluhn This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- glfw Copyright (c) 2006-2017 Camilla Löwy This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- glfw Copyright (c) 2006-2018 Camilla Löwy This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- glfw Copyright (c) 2009-2016 Camilla Löwy This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- glfw Copyright (c) 2009-2019 Camilla Löwy This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- glfw Copyright (c) 2009-2019 Camilla Löwy Copyright (c) 2012 Torsten Walluhn This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- glfw Copyright (c) 2009-2021 Camilla Löwy This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- glfw Copyright (c) 2014 Jonas Ådahl This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- glfw Copyright (c) 2016 Google Inc. Copyright (c) 2016-2017 Camilla Löwy This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- glfw Copyright (c) 2016 Google Inc. Copyright (c) 2016-2019 Camilla Löwy This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- glfw Copyright (c) 2016-2017 Camilla Löwy This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- glfw Copyright (c) 2021 Camilla Löwy This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- glfw Copyright (c) 2022 Camilla Löwy This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2012-2013 LunarG, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2012-2013 LunarG, Inc. Copyright (C) 2015-2018 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2012-2013 LunarG, Inc. Copyright (C) 2017 ARM Limited. Copyright (C) 2015-2018 Google, Inc. Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2012-2013 LunarG, Inc. Copyright (C) 2017 ARM Limited. Copyright (C) 2015-2019 Google, Inc. Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2012-2013 LunarG, Inc. Copyright (C) 2017 ARM Limited. Copyright (C) 2018-2020 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2012-2013 LunarG, Inc. Copyright (C) 2017 ARM Limited. Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2012-2013 LunarG, Inc. Copyright (C) 2017, 2022-2024 Arm Limited. Copyright (C) 2015-2018 Google, Inc. Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2012-2013 LunarG, Inc. Copyright (C) 2017, 2022-2024 Arm Limited. Copyright (C) 2015-2020 Google, Inc. Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2012-2015 LunarG, Inc. Copyright (C) 2015-2018 Google, Inc. Copyright (C) 2017, 2019 ARM Limited. Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2012-2015 LunarG, Inc. Copyright (C) 2015-2020 Google, Inc. Copyright (C) 2017 ARM Limited. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2012-2016 LunarG, Inc. Copyright (C) 2015-2016 Google, Inc. Copyright (C) 2017 ARM Limited. Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2012-2016 LunarG, Inc. Copyright (C) 2015-2020 Google, Inc. Copyright (C) 2017, 2022-2024 Arm Limited. Modifications Copyright (C) 2020-2021 Advanced Micro Devices, Inc. All rights reserved. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2012-2016 LunarG, Inc. Copyright (C) 2017, 2022-2024 Arm Limited. Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2013 LunarG, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2013 LunarG, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2013 LunarG, Inc. Copyright (C) 2015-2018 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2013 LunarG, Inc. Copyright (C) 2015-2018 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2013 LunarG, Inc. Copyright (C) 2017 ARM Limited. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2013 LunarG, Inc. Copyright (C) 2017 ARM Limited. Copyright (C) 2015-2018 Google, Inc. Copyright (c) 2023, Mobica Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2013 LunarG, Inc. Copyright (C) 2017 ARM Limited. Copyright (C) 2020 Google, Inc. Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2013 LunarG, Inc. Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2013-2016 LunarG, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2013-2016 LunarG, Inc. Copyright (C) 2015-2018 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2013-2016 LunarG, Inc. Copyright (C) 2015-2020 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2013-2016 LunarG, Inc. Copyright (C) 2016-2020 Google, Inc. Modifications Copyright(C) 2021 Advanced Micro Devices, Inc.All rights reserved. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2016 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2016 LunarG, Inc. Copyright (C) 2017 ARM Limited. Copyright (C) 2015-2018 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2002-2005 3Dlabs Inc. Ltd. Copyright (C) 2017 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2013 LunarG, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2013 LunarG, Inc. Copyright (C) 2015-2018 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2013 LunarG, Inc. Copyright (C) 2017 ARM Limited. Copyright (C) 2015-2018 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2013-2016 LunarG, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2014 LunarG, Inc. Copyright (C) 2015-2018 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2014-2015 LunarG, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2014-2015 LunarG, Inc. Copyright (C) 2015-2018 Google, Inc. Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2014-2015 LunarG, Inc. Copyright (C) 2015-2020 Google, Inc. Copyright (C) 2017 ARM Limited. Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2014-2015 LunarG, Inc. Copyright (C) 2022-2024 Arm Limited. Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2014-2016 LunarG, Inc. Copyright (C) 2015-2020 Google, Inc. Copyright (C) 2017, 2022-2024 Arm Limited. Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2014-2016 LunarG, Inc. Copyright (C) 2018 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2014-2016 LunarG, Inc. Copyright (C) 2018-2020 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2015 LunarG, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2015-2016 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2015-2018 Google, Inc. Copyright (C) 2017 ARM Limited. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2016 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2016 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2016 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Google, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2016 Google, Inc. Copyright (C) 2016 LunarG, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2016 Google, Inc. Copyright (C) 2016 LunarG, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Google, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2016 Google, Inc. Copyright (C) 2019, 2022-2024 Arm Limited. Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2016 Google, Inc. Copyright (C) 2022-2024 Arm Limited. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2016 LunarG, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2016 LunarG, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2016 LunarG, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Google, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2016-2017 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2016-2017 Google, Inc. Copyright (C) 2020 The Khronos Group Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2016-2017 LunarG, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2016-2018 Google, Inc. Copyright (C) 2016 LunarG, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2016-2018 Google, Inc. Copyright (C) 2016 LunarG, Inc. Copyright (C) 2023 Mobica Limited. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Google, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2017 LunarG, Inc. Copyright (C) 2018 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2017 LunarG, Inc. Copyright (C) 2018 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Google, Inc., nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2017-2018 Google, Inc. Copyright (C) 2017 LunarG, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2018 Google, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2018 The Khronos Group Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2020 The Khronos Group Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of The Khronos Group Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (C) 2023 LunarG, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (c) 2002, NVIDIA Corporation. NVIDIA Corporation("NVIDIA") supplies this software to you in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this NVIDIA software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this NVIDIA software. In consideration of your agreement to abide by the following terms, and subject to these terms, NVIDIA grants you a personal, non-exclusive license, under NVIDIA's copyrights in this original NVIDIA software (the "NVIDIA Software"), to use, reproduce, modify and redistribute the NVIDIA Software, with or without modifications, in source and/or binary forms; provided that if you redistribute the NVIDIA Software, you must retain the copyright notice of NVIDIA, this notice and the following text and disclaimers in all such redistributions of the NVIDIA Software. Neither the name, trademarks, service marks nor logos of NVIDIA Corporation may be used to endorse or promote products derived from the NVIDIA Software without specific prior written permission from NVIDIA. Except as expressly stated in this notice, no other rights or licenses express or implied, are granted by NVIDIA herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the NVIDIA Software may be incorporated. No hardware is licensed hereunder. THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR ITS USE AND OPERATION EITHER ALONE OR IN COMBINATION WITH OTHER PRODUCTS. IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOST PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE NVIDIA SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (c) 2013 The Khronos Group Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and/or associated documentation files (the "Materials"), to deal in the Materials without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Materials, and to permit persons to whom the Materials are 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 Materials. THE MATERIALS ARE 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 MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -------------------------------------------------------------------------------- glslang Copyright (c) 2014-2017 The Khronos Group Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and/or associated documentation files (the "Materials"), to deal in the Materials without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Materials, and to permit persons to whom the Materials are 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 Materials. MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ THE MATERIALS ARE 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 MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -------------------------------------------------------------------------------- glslang Copyright (c) 2014-2020 The Khronos Group Inc. Copyright (C) 2022-2024 Arm Limited. Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and/or associated documentation files (the "Materials"), to deal in the Materials without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Materials, and to permit persons to whom the Materials are 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 Materials. MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ THE MATERIALS ARE 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 MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -------------------------------------------------------------------------------- glslang Copyright (c) 2018 The Khronos Group Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and/or associated documentation files (the "Materials"), to deal in the Materials without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Materials, and to permit persons to whom the Materials are 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 Materials. MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ THE MATERIALS ARE 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 MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -------------------------------------------------------------------------------- glslang Copyright (c) 2019, Viktor Latypov All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (c) 2020 The Khronos Group Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and/or associated documentation files (the "Materials"), to deal in the Materials without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Materials, and to permit persons to whom the Materials are 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 Materials. MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ THE MATERIALS ARE 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 MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -------------------------------------------------------------------------------- glslang Copyright (c) 2020, Travis Fort All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang Copyright (c) 2021 The Khronos Group Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and/or associated documentation files (the "Materials"), to deal in the Materials without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Materials, and to permit persons to whom the Materials are 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 Materials. MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ THE MATERIALS ARE 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 MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -------------------------------------------------------------------------------- glslang Copyright (c) 2022 ARM Limited Permission is hereby granted, free of charge, to any person obtaining a copy of this software and/or associated documentation files (the "Materials"), to deal in the Materials without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Materials, and to permit persons to whom the Materials are 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 Materials. MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ THE MATERIALS ARE 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 MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -------------------------------------------------------------------------------- glslang Copyright(C) 2021 Advanced Micro Devices, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of 3Dlabs Inc. Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- glslang skia Copyright (c) 2014-2016 The Khronos Group Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and/or associated documentation files (the "Materials"), to deal in the Materials without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Materials, and to permit persons to whom the Materials are 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 Materials. MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ THE MATERIALS ARE 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 MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -------------------------------------------------------------------------------- glslang spirv-cross Copyright (c) 2014-2020 The Khronos Group Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and/or associated documentation files (the "Materials"), to deal in the Materials without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Materials, and to permit persons to whom the Materials are 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 Materials. MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ THE MATERIALS ARE 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 MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -------------------------------------------------------------------------------- harfbuzz Copyright (C) 2011 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright (C) 2012 Grigori Goronzy Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -------------------------------------------------------------------------------- harfbuzz Copyright (C) 2013 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright (c) Microsoft Corporation. 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 -------------------------------------------------------------------------------- harfbuzz Copyright © 1998-2004 David Turner and Werner Lemberg Copyright © 2004,2007,2009 Red Hat, Inc. Copyright © 2011,2012 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 1998-2004 David Turner and Werner Lemberg Copyright © 2004,2007,2009,2010 Red Hat, Inc. Copyright © 2011,2012 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 1998-2004 David Turner and Werner Lemberg Copyright © 2006 Behdad Esfahbod Copyright © 2007,2008,2009 Red Hat, Inc. Copyright © 2012,2013 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2007 Chris Wilson Copyright © 2009,2010 Red Hat, Inc. Copyright © 2011,2012 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2007,2008,2009 Red Hat, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2007,2008,2009 Red Hat, Inc. Copyright © 2010,2011,2012 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2007,2008,2009 Red Hat, Inc. Copyright © 2010,2012 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2007,2008,2009 Red Hat, Inc. Copyright © 2011,2012 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2007,2008,2009 Red Hat, Inc. Copyright © 2012 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2007,2008,2009 Red Hat, Inc. Copyright © 2012,2013 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2007,2008,2009 Red Hat, Inc. Copyright © 2012,2013 Google, Inc. Copyright © 2019, Facebook Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2007,2008,2009 Red Hat, Inc. Copyright © 2018,2019,2020 Ebrahim Byagowi Copyright © 2018 Khaled Hosny This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2007,2008,2009,2010 Red Hat, Inc. Copyright © 2010,2012 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2007,2008,2009,2010 Red Hat, Inc. Copyright © 2010,2012,2013 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2007,2008,2009,2010 Red Hat, Inc. Copyright © 2012 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2007,2008,2009,2010 Red Hat, Inc. Copyright © 2012,2018 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2007,2008,2009,2010 Red Hat, Inc. Copyright © 2012,2018 Google, Inc. Copyright © 2019 Facebook, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2009 Red Hat, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2009 Red Hat, Inc. Copyright © 2009 Keith Stribley Copyright © 2011 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2009 Red Hat, Inc. Copyright © 2009 Keith Stribley Copyright © 2015 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2009 Red Hat, Inc. Copyright © 2011 Codethink Limited Copyright © 2010,2011,2012 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2009 Red Hat, Inc. Copyright © 2011 Codethink Limited Copyright © 2011,2012 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2009 Red Hat, Inc. Copyright © 2011 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2009 Red Hat, Inc. Copyright © 2012 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2009 Red Hat, Inc. Copyright © 2015 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2009 Red Hat, Inc. Copyright © 2018 Ebrahim Byagowi This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2009 Red Hat, Inc. Copyright © 2018 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2009,2010 Red Hat, Inc. Copyright © 2010,2011,2012 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2009,2010 Red Hat, Inc. Copyright © 2010,2011,2012,2013 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2009,2010 Red Hat, Inc. Copyright © 2010,2011,2013 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2009,2010 Red Hat, Inc. Copyright © 2011,2012 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2010 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2010 Red Hat, Inc. Copyright © 2012 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2010,2011 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2010,2011,2012 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2010,2011,2013 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2010,2012 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2011 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2011 Martin Hosken Copyright © 2011 SIL International This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2011 Martin Hosken Copyright © 2011 SIL International Copyright © 2011,2012 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2011,2012 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2011,2012 Google, Inc. Copyright © 2018 Ebrahim Byagowi This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2011,2012,2013 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2011,2012,2013 Google, Inc. Copyright © 2021 Khaled Hosny This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2011,2012,2014 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2011,2014 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2012 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2012 Mozilla Foundation. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2012,2013 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2012,2013 Mozilla Foundation. Copyright © 2012,2013 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2012,2017 Google, Inc. Copyright © 2021 Behdad Esfahbod This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2012,2018 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2013 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2013 Red Hat, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2014 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2015 Google, Inc. Copyright © 2019 Adobe Inc. Copyright © 2019 Ebrahim Byagowi This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2015 Mozilla Foundation. Copyright © 2015 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2015-2019 Ebrahim Byagowi This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2016 Elie Roux Copyright © 2018 Google, Inc. Copyright © 2018-2019 Ebrahim Byagowi This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2016 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2016 Google, Inc. Copyright © 2018 Ebrahim Byagowi This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2016 Google, Inc. Copyright © 2018 Khaled Hosny Copyright © 2018 Ebrahim Byagowi This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2016 Igalia S.L. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2017 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2017 Google, Inc. Copyright © 2018 Ebrahim Byagowi This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2017 Google, Inc. Copyright © 2019 Facebook, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2017,2018 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2018 Ebrahim Byagowi This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2018 Ebrahim Byagowi Copyright © 2018 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2018 Ebrahim Byagowi Copyright © 2020 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2018 Ebrahim Byagowi. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2018 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2018 Google, Inc. Copyright © 2019 Facebook, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2018 Google, Inc. Copyright © 2023 Behdad Esfahbod This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2018 Adobe Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2018-2019 Ebrahim Byagowi This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2019 Adobe Inc. Copyright © 2019 Ebrahim Byagowi This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2019 Adobe, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2019 Ebrahim Byagowi This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2019 Facebook, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2019 Adobe Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2019-2020 Ebrahim Byagowi This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2020 Ebrahim Byagowi This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2020 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2021 Behdad Esfahbod This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2021 Behdad Esfahbod. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2021 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2022 Behdad Esfahbod This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2022 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2022 Red Hat, Inc This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2022 Red Hat, Inc Copyright © 2021, 2022 Black Foundry This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2022 Red Hat, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2022 Behdad Esfahbod This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2022 Matthias Clasen This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2022 Red Hat, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2023 Behdad Esfahbod This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2023 Behdad Esfahbod Copyright © 1999 David Turner Copyright © 2005 Werner Lemberg Copyright © 2013-2015 Alexei Podtelezhnikov This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz Copyright © 2023 Google, Inc. This is part of HarfBuzz, a text shaping library. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz HarfBuzz is licensed under the so-called "Old MIT" license. Details follow. For parts of HarfBuzz that are licensed under different licenses see individual files names COPYING in subdirectories where applicable. Copyright © 2010-2022 Google, Inc. Copyright © 2015-2020 Ebrahim Byagowi Copyright © 2019,2020 Facebook, Inc. Copyright © 2012,2015 Mozilla Foundation Copyright © 2011 Codethink Limited Copyright © 2008,2010 Nokia Corporation and/or its subsidiary(-ies) Copyright © 2009 Keith Stribley Copyright © 2011 Martin Hosken and SIL International Copyright © 2007 Chris Wilson Copyright © 2005,2006,2020,2021,2022,2023 Behdad Esfahbod Copyright © 2004,2007,2008,2009,2010,2013,2021,2022,2023 Red Hat, Inc. Copyright © 1998-2005 David Turner and Werner Lemberg Copyright © 2016 Igalia S.L. Copyright © 2022 Matthias Clasen Copyright © 2018,2021 Khaled Hosny Copyright © 2018,2019,2020 Adobe, Inc Copyright © 2013-2015 Alexei Podtelezhnikov For full copyright notices consult the individual files in the package. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -------------------------------------------------------------------------------- harfbuzz icu web_unicode Unicode® Copyright and Terms of Use For the general privacy policy governing access to this site, see the Unicode Privacy Policy. A. Unicode Copyright 1. Copyright © 1991-2022 Unicode, Inc. All rights reserved. B. Definitions Unicode Data Files ("DATA FILES") include all data files under the directories: https://www.unicode.org/Public/ https://www.unicode.org/reports/ https://www.unicode.org/ivd/data/ Unicode Data Files do not include PDF online code charts under the directory: https://www.unicode.org/Public/ Unicode Software ("SOFTWARE") includes any source code published in the Unicode Standard or any source code or compiled code under the directories: https://www.unicode.org/Public/PROGRAMS/ https://www.unicode.org/Public/cldr/ http://site.icu-project.org/download/ C. Terms of Use 1. Certain documents and files on this website contain a legend indicating that "Modification is permitted." Any person is hereby authorized, without fee, to modify such documents and files to create derivative works conforming to the Unicode® Standard, subject to Terms and Conditions herein. 2. Any person is hereby authorized, without fee, to view, use, reproduce, and distribute all documents and files, subject to the Terms and Conditions herein. 3. Further specifications of rights and restrictions pertaining to the use of the Unicode DATA FILES and SOFTWARE can be found in the Unicode Data Files and Software License. 4. Each version of the Unicode Standard has further specifications of rights and restrictions of use. For the book editions (Unicode 5.0 and earlier), these are found on the back of the title page. 5. The Unicode PDF online code charts carry specific restrictions. Those restrictions are incorporated as the first page of each PDF code chart. 6. All other files, including online documentation of the core specification for Unicode 6.0 and later, are covered under these general Terms of Use. 7. No license is granted to "mirror" the Unicode website where a fee is charged for access to the "mirror" site. 8. Modification is not permitted with respect to this document. All copies of this document must be verbatim. D. Restricted Rights Legend 1. Any technical data or software which is licensed to the United States of America, its agencies and/or instrumentalities under this Agreement is commercial technical data or commercial computer software developed exclusively at private expense as defined in FAR 2.101, or DFARS 252.227-7014 (June 1995), as applicable. For technical data, use, duplication, or disclosure by the Government is subject to restrictions as set forth in DFARS 202.227-7015 Technical Data, Commercial and Items (Nov 1995) and this Agreement. For Software, in accordance with FAR 12-212 or DFARS 227-7202, as applicable, use, duplication or disclosure by the Government is subject to the restrictions set forth in this Agreement. E.Warranties and Disclaimers 1. This publication and/or website may include technical or typographical errors or other inaccuracies. Changes are periodically added to the information herein; these changes will be incorporated in new editions of the publication and/or website. Unicode, Inc. may make improvements and/or changes in the product(s) and/or program(s) described in this publication and/or website at any time. 2. If this file has been purchased on magnetic or optical media from Unicode, Inc. the sole and exclusive remedy for any claim will be exchange of the defective media within ninety (90) days of original purchase. 3. EXCEPT AS PROVIDED IN SECTION E.2, THIS PUBLICATION AND/OR SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND EITHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. UNICODE, INC. AND ITS LICENSORS ASSUME NO RESPONSIBILITY FOR ERRORS OR OMISSIONS IN THIS PUBLICATION AND/OR SOFTWARE OR OTHER DOCUMENTS WHICH ARE REFERENCED BY OR LINKED TO THIS PUBLICATION OR THE UNICODE WEBSITE. F. Waiver of Damages 1. In no event shall Unicode, Inc. or its licensors be liable for any special, incidental, indirect or consequential damages of any kind, or any damages whatsoever, whether or not Unicode, Inc. was advised of the possibility of the damage, including, without limitation, those resulting from the following: loss of use, data or profits, in connection with the use, modification or distribution of this information or its derivatives. G. Trademarks & Logos 1. The Unicode Word Mark and the Unicode Logo are trademarks of Unicode, Inc. “The Unicode Consortium” and “Unicode, Inc.” are trade names of Unicode, Inc. Use of the information and materials found on this website indicates your acknowledgement of Unicode, Inc.’s exclusive worldwide rights in the Unicode Word Mark, the Unicode Logo, and the Unicode trade names. 3. The Unicode Consortium Name and Trademark Usage Policy (“Trademark Policy”) are incorporated herein by reference and you agree to abide by the provisions of the Trademark Policy, which may be changed from time to time in the sole discretion of Unicode, Inc. 4. All third party trademarks referenced herein are the property of their respective owners. H. Miscellaneous 1. Jurisdiction and Venue. This website is operated from a location in the State of California, United States of America. Unicode, Inc. makes no representation that the materials are appropriate for use in other locations. If you access this website from other locations, you are responsible for compliance with local laws. This Agreement, all use of this website and any claims and damages resulting from use of this website are governed solely by the laws of the State of California without regard to any principles which would apply the laws of a different jurisdiction. The user agrees that any disputes regarding this website shall be resolved solely in the courts located in Santa Clara County, California. The user agrees said courts have personal jurisdiction and agree to waive any right to transfer the dispute to any other forum. 2. Modification by Unicode, Inc. Unicode, Inc. shall have the right to modify this Agreement at any time by posting it to this website. The user may not assign any part of this Agreement without Unicode, Inc.’s prior written consent. 3. Taxes. The user agrees to pay any taxes arising from access to this website or use of the information herein, except for those based on Unicode’s net income. 4. Severability. If any provision of this Agreement is declared invalid or unenforceable, the remaining provisions of this Agreement shall remain in effect. 5. Entire Agreement. This Agreement constitutes the entire agreement between the parties. EXHIBIT 1 UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE See Terms of Use for definitions of Unicode Inc.’s Data Files and Software. NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE. COPYRIGHT AND PERMISSION NOTICE Copyright © 1991-2022 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in https://www.unicode.org/copyright.html. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- http http_parser matcher path source_span string_scanner Copyright 2014, the Dart project authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- icu # Copyright (c) 2006-2015 International Business Machines Corporation, # Apple Inc., and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1995-2001, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1995-2002, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1995-2003, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1995-2005, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1995-2006, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1995-2007, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1995-2009, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1995-2010, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1995-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1995-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1995-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1996-2008, International Business Machines Corporation * and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1996-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1996-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1996-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1996-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1996-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1996-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1996-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1996-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1996-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1996-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1996-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1996-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1996-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2000, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2003, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2005, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2005, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2006, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2009,2014 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2010, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2010, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2011,2014-2015 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2012, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2013, International Business Machines * Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2013, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2015, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2016, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1997-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1998-2004, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1998-2005, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1998-2006, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1998-2008, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1998-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1998-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1998-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1998-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1998-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1998-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1998-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2001, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2003, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2004, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2005, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2006, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2006,2013 IBM Corp. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2007, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2007, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2008, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2009, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2010, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2010, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2014 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2014 International Business Machines Corporation * and others. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2015 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2016 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2016 International Business Machines Corporation and others. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2016 International Business Machines Corporation * and others. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 1999-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2000, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2000-2003, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2000-2004, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2000-2004, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2000-2006, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2000-2007, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2000-2008, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2000-2010, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2000-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2000-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2000-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2000-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2000-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2000-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2000-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2000-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2003, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2005, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2005, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2006, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2007, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2008, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2008,2010 IBM and others. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2010, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2011 IBM and others. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2011, International Business Machines * Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2011, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2011, International Business Machines Corporation. * All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2011,2014 IBM and others. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2012, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2014 IBM and others. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2014 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2014, International Business Machines * Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2014, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2014, International Business Machines Corporation. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2015 IBM and others. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2001-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2003, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2005, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2006, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2008 International Business Machines Corporation * and others. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2008, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2010, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2011 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2014 International Business Machines Corporation and others. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2015 International Business Machines Corporation and others. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2016 International Business Machines Corporation and others. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2016 International Business Machines Corporation * and others. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2016 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2002-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003 - 2008, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003 - 2009, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003 - 2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003 - 2013, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2003, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2004, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2006, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2007, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2008, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2009, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2009,2012,2016 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2010, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2013, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2015, International Business Machines * Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2016, International Business Machines * Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2003-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2004 - 2008, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2004-2005, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2004-2006, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2004-2007, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2004-2010, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2004-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2004-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2004-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2004-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2004-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2004-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2004-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2005, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2005-2006, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2005-2008, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2005-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2005-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2005-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2005-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2005-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2005-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2006 International Business Machines Corporation * and others. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2006, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2006-2012, International Business Machines Corporation and others. * All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2006-2014, International Business Machines Corporation * and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2006-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2007, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2007-2008, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2007-2008, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2007-2008, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2007-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2007-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2007-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2007-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2007-2013, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2007-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2007-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2007-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2007-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2007-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2007-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2007-2016, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2008, Google, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2008-2009, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2008-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2008-2011, International Business Machines Corporation, Google and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2008-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2008-2012, International Business Machines Corporation * and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2008-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2008-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2008-2014, Google, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2008-2014, Google, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2008-2015, Google, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2008-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2008-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2008-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2008-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2008-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2008-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2010 IBM Corporation and Others. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2010, Google, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2010, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2013, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2014 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2015, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2016, International Business Machines Corporation, * Google, and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2009-2017, International Business Machines Corporation, * Google, and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2010 , Yahoo! Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2010, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2010-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2010-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2010-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2010-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2010-2012,2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2010-2012,2015 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2010-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2010-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2010-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2010-2014, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2010-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2010-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2010-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2010-2016 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2010-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2010-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2010-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2011-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2011-2012, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2011-2013, Apple Inc. and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2011-2013, Apple Inc.; Unicode, Inc.; and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2011-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2011-2014 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2011-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2011-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2011-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2011-2015, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2011-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2012 International Business Machines Corporation and others. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2012,2014 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2012-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2012-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2012-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2013, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2013-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2013-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2013-2014, International Business Machines Corporation and * others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2013-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2013-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2013-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2013-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2014 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2014 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2014-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2014-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2014-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2014-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2014-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2014-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2015-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2015-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2015-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2016 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2016 and later: Unicode, Inc. and others. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) 2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (C) The Internet Society (2002). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. -------------------------------------------------------------------------------- icu Copyright (C) {1999-2001}, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 1996-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 1996-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 1996-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 1996-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 1996-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 1996-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 1997-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 1997-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 1997-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 1997-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 1997-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 1999-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 1999-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2000-2004 IBM, Inc. and Others. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2000-2005, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2000-2007, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2001-2005, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2001-2007, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2001-2010 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2001-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2001-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2001-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2001-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2001-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2001-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2001-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2002-2004, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2002-2005, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2002-2005, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2002-2006, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2002-2006, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2002-2007, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2002-2010, International Business Machines Corporation * and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2002-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2002-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2002-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2002-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2002-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2002-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2002-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2002-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2002-2016 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2002-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2003, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2003-2004, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2003-2008, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2003-2010 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2003-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2003-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2003-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2004, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2004-2006, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2004-2010, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2004-2014 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2004-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2004-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2004-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2004-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2007-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2007-2012, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2007-2013, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2007-2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2007-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2008-2010, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2008-2011, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2008-2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2009, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2011-2012 International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2014, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2014-2016, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) 2015, International Business Machines Corporation and others. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright (c) IBM Corporation, 2000-2010. All rights reserved. This software is made available under the terms of the ICU License -- ICU 1.8.1 and later. -------------------------------------------------------------------------------- icu Copyright (c) IBM Corporation, 2000-2011. All rights reserved. This software is made available under the terms of the ICU License -- ICU 1.8.1 and later. -------------------------------------------------------------------------------- icu Copyright (c) IBM Corporation, 2000-2012. All rights reserved. This software is made available under the terms of the ICU License -- ICU 1.8.1 and later. -------------------------------------------------------------------------------- icu Copyright (c) IBM Corporation, 2000-2014. All rights reserved. This software is made available under the terms of the ICU License -- ICU 1.8.1 and later. -------------------------------------------------------------------------------- icu Copyright (c) IBM Corporation, 2000-2016. All rights reserved. This software is made available under the terms of the ICU License -- ICU 1.8.1 and later. -------------------------------------------------------------------------------- icu Copyright 2001 and onwards Google Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright 2004 and onwards Google Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu Copyright 2007 Google Inc. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. -------------------------------------------------------------------------------- icu UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE See Terms of Use for definitions of Unicode Inc.’s Data Files and Software. NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE. COPYRIGHT AND PERMISSION NOTICE Copyright © 1991-2023 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in https://www.unicode.org/copyright.html. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. Third-Party Software Licenses This section contains third-party software notices and/or additional terms for licensed third-party software components included within ICU libraries. ICU License - ICU 1.8.1 to ICU 57.1 COPYRIGHT AND PERMISSION NOTICE Copyright (c) 1995-2016 International Business Machines Corporation and others All rights reserved. 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, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation. 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. All trademarks and registered trademarks mentioned herein are the property of their respective owners. Chinese/Japanese Word Break Dictionary Data (cjdict.txt) The Google Chrome software developed by Google is licensed under the BSD license. Other software included in this distribution is provided under other licenses, as set forth below. The BSD License http://opensource.org/licenses/bsd-license.php Copyright (C) 2006-2008, Google Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The word list in cjdict.txt are generated by combining three word lists listed below with further processing for compound word breaking. The frequency is generated with an iterative training against Google web corpora. * Libtabe (Chinese) - https://sourceforge.net/project/?group_id=1519 - Its license terms and conditions are shown below. * IPADIC (Japanese) - http://chasen.aist-nara.ac.jp/chasen/distribution.html - Its license terms and conditions are shown below. Copyright (c) 1999 TaBE Project. Copyright (c) 1999 Pai-Hsiang Hsiao. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. . Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . Neither the name of the TaBE Project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Copyright (c) 1999 Computer Systems and Communication Lab, Institute of Information Science, Academia Sinica. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. . Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . Neither the name of the Computer Systems and Communication Lab nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Copyright 1996 Chih-Hao Tsai @ Beckman Institute, University of Illinois c-tsai4@uiuc.edu http://casper.beckman.uiuc.edu/~c-tsai4 Copyright 2000, 2001, 2002, 2003 Nara Institute of Science and Technology. All Rights Reserved. Use, reproduction, and distribution of this software is permitted. Any copy of this software, whether in its original form or modified, must include both the above copyright notice and the following paragraphs. Nara Institute of Science and Technology (NAIST), the copyright holders, disclaims all warranties with regard to this software, including all implied warranties of merchantability and fitness, in no event shall NAIST be liable for any special, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortuous action, arising out of or in connection with the use or performance of this software. A large portion of the dictionary entries originate from ICOT Free Software. The following conditions for ICOT Free Software applies to the current dictionary as well. Each User may also freely distribute the Program, whether in its original form or modified, to any third party or parties, PROVIDED that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear on, or be attached to, the Program, which is distributed substantially in the same form as set out herein and that such intended distribution, if actually made, will neither violate or otherwise contravene any of the laws and regulations of the countries having jurisdiction over the User or the intended distribution itself. NO WARRANTY The program was produced on an experimental basis in the course of the research and development conducted during the project and is provided to users as so produced on an experimental basis. Accordingly, the program is provided without any warranty whatsoever, whether express, implied, statutory or otherwise. The term "warranty" used herein includes, but is not limited to, any warranty of the quality, performance, merchantability and fitness for a particular purpose of the program and the nonexistence of any infringement or violation of any right of any third party. Each user of the program will agree and understand, and be deemed to have agreed and understood, that there is no warranty whatsoever for the program and, accordingly, the entire risk arising from or otherwise connected with the program is assumed by the user. Therefore, neither ICOT, the copyright holder, or any other organization that participated in or was otherwise related to the development of the program and their respective officials, directors, officers and other employees shall be held liable for any and all damages, including, without limitation, general, special, incidental and consequential damages, arising out of or otherwise in connection with the use or inability to use the program or any product, material or result produced or otherwise obtained by using the program, regardless of whether they have been advised of, or otherwise had knowledge of, the possibility of such damages at any time during the project or thereafter. Each user will be deemed to have agreed to the foregoing by his or her commencement of use of the program. The term "use" as used herein includes, but is not limited to, the use, modification, copying and distribution of the program and the production of secondary products from the program. In the case where the program, whether in its original form or modified, was distributed or delivered to or received by a user from any person, organization or entity other than ICOT, unless it makes or grants independently of ICOT any specific warranty to the user in writing, such person, organization or entity, will also be exempted from and not be held liable to the user for any such damages as noted above as far as the program is concerned. Lao Word Break Dictionary Data (laodict.txt) Copyright (C) 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html Copyright (c) 2015 International Business Machines Corporation and others. All Rights Reserved. Project: https://github.com/rober42539/lao-dictionary Dictionary: https://github.com/rober42539/lao-dictionary/laodict.txt License: https://github.com/rober42539/lao-dictionary/LICENSE.txt (copied below) This file is derived from the above dictionary version of Nov 22, 2020 Copyright (C) 2013 Brian Eugene Wilson, Robert Martin Campbell. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Burmese Word Break Dictionary Data (burmesedict.txt) Copyright (c) 2014 International Business Machines Corporation and others. All Rights Reserved. This list is part of a project hosted at: github.com/kanyawtech/myanmar-karen-word-lists Copyright (c) 2013, LeRoy Benjamin Sharon All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name Myanmar Karen Word Lists, nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Google double-conversion Copyright 2006-2011, the V8 project authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. File: install-sh (only for ICU4C) Copyright 1991 by the Massachusetts Institute of Technology Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of M.I.T. not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. M.I.T. makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. -------------------------------------------------------------------------------- icu punycode.c 0.4.0 (2001-Nov-17-Sat) http://www.cs.berkeley.edu/~amc/idn/ Adam M. Costello http://www.nicemice.net/amc/ Disclaimer and license Regarding this entire document or any portion of it (including the pseudocode and C code), the author makes no guarantees and is not responsible for any damage resulting from its use. The author grants irrevocable permission to anyone to use, modify, and distribute it in any way that does not diminish the rights of anyone else to use, modify, and distribute it, provided that redistributed derivative works do not contain misleading author or version information. Derivative works need not be licensed under similar terms. -------------------------------------------------------------------------------- include Copyright (C) 2011 Nick Bruun Copyright (C) 2013 Vlad Lazarenko Copyright (C) 2014 Nicolas Pauss -------------------------------------------------------------------------------- include Copyright (c) 2008-2009 Bjoern Hoehrmann 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. -------------------------------------------------------------------------------- include Copyright (c) 2009 Florian Loitsch. 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. -------------------------------------------------------------------------------- include Copyright (c) 2011 - Nick Bruun. This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. If you meet (any of) the author(s), you're encouraged to buy them a beer, a drink or whatever is suited to the situation, given that you like the software. 4. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- include Copyright (c) 2013-2019 Niels Lohmann . 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. -------------------------------------------------------------------------------- inja Copyright (c) 2018-2021 Berscheid 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. -------------------------------------------------------------------------------- inja Copyright (c) 2018-2021 Lars Berscheid 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. -------------------------------------------------------------------------------- js Copyright 2012, the Dart project authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- json Copyright (c) 2013-2022 Niels Lohmann 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. -------------------------------------------------------------------------------- khronos Copyright (c) 2013-2014 The Khronos Group Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and/or associated documentation files (the "Materials"), to deal in the Materials without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Materials, and to permit persons to whom the Materials are 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 Materials. THE MATERIALS ARE 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 MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -------------------------------------------------------------------------------- leak_tracker leak_tracker_flutter_testing leak_tracker_testing Copyright 2022, the Dart project authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- libXNVCtrl Copyright (c) 2008 NVIDIA, Corporation 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 (including the next paragraph) 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. -------------------------------------------------------------------------------- libXNVCtrl Copyright (c) 2010 NVIDIA, Corporation 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 (including the next paragraph) 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. -------------------------------------------------------------------------------- libcxx Copyright 2018 Ulf Adams Copyright (c) Microsoft Corporation. All rights reserved. Boost Software License - Version 1.0 - August 17th, 2003 Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. 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, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- libcxx libcxxabi Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --- LLVM Exceptions to the Apache 2.0 License ---- As an exception, if, as a result of your compiling your source code, portions of this Software are embedded into an Object form of such source code, you may redistribute such embedded portions in such Object form without complying with the conditions of Sections 4(a), 4(b) and 4(d) of the License. In addition, if you combine or link compiled forms of this Software with software that is licensed under the GPLv2 ("Combined Software") and if a court of competent jurisdiction determines that the patent provision (Section 3), the indemnity provision (Section 9) or other Section of the License conflicts with the conditions of the GPLv2, you may retroactively and prospectively choose to deem waived or otherwise exclude such Section(s) of the License, but only in their entirety and only with respect to the Combined Software. -------------------------------------------------------------------------------- libcxx libcxxabi Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT 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. -------------------------------------------------------------------------------- libcxx libcxxabi Copyright (c) 2009-2019 by the contributors listed in CREDITS.TXT All rights reserved. Developed by: LLVM Team University of Illinois at Urbana-Champaign http://llvm.org Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal with 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: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimers. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimers in the documentation and/or other materials provided with the distribution. * Neither the names of the LLVM Team, University of Illinois at Urbana-Champaign, nor the names of its contributors may be used to endorse or promote products derived from this Software without specific prior written permission. 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 CONTRIBUTORS 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 WITH THE SOFTWARE. -------------------------------------------------------------------------------- libjpeg-turbo Copyright (C) 1988 by Jef Poskanzer. Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. This software is provided "as is" without express or implied warranty. -------------------------------------------------------------------------------- libjpeg-turbo Copyright (C) 1989 by Jef Poskanzer. Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. This software is provided "as is" without express or implied warranty. -------------------------------------------------------------------------------- libjpeg-turbo Copyright (C) 2009-2011, Nokia Corporation and/or its subsidiary(-ies). All Rights Reserved. Author: Siarhei Siamashka Copyright (C) 2013-2014, Linaro Limited. All Rights Reserved. Author: Ragesh Radhakrishnan Copyright (C) 2014-2016, D. R. Commander. All Rights Reserved. Copyright (C) 2015-2016, Matthieu Darbois. All Rights Reserved. Copyright (C) 2016, Siarhei Siamashka. All Rights Reserved. This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- libjpeg-turbo Copyright (C) 2009-2011, Nokia Corporation and/or its subsidiary(-ies). All Rights Reserved. Author: Siarhei Siamashka Copyright (C) 2014, Siarhei Siamashka. All Rights Reserved. Copyright (C) 2014, Linaro Limited. All Rights Reserved. Copyright (C) 2015, D. R. Commander. All Rights Reserved. Copyright (C) 2015-2016, Matthieu Darbois. All Rights Reserved. This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- libjpeg-turbo Copyright (C) 2013, MIPS Technologies, Inc., California. All Rights Reserved. Authors: Teodora Novkovic (teodora.novkovic@imgtec.com) Darko Laus (darko.laus@imgtec.com) This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- libjpeg-turbo Copyright (C) 2013-2014, MIPS Technologies, Inc., California. All Rights Reserved. Authors: Teodora Novkovic (teodora.novkovic@imgtec.com) Darko Laus (darko.laus@imgtec.com) Copyright (C) 2015, D. R. Commander. All Rights Reserved. This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- libjpeg-turbo Copyright (C) 2014, D. R. Commander. All Rights Reserved. This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- libjpeg-turbo Copyright (C) 2014-2015, D. R. Commander. All Rights Reserved. This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- libjpeg-turbo Copyright (C) 2014-2015, D. R. Commander. All Rights Reserved. Copyright (C) 2014, Jay Foad. All Rights Reserved. This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- libjpeg-turbo Copyright (C) 2015, D. R. Commander. All Rights Reserved. This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- libjpeg-turbo Copyright (C)2009-2014 D. R. Commander. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the libjpeg-turbo Project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS", AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- libjpeg-turbo Copyright (C)2009-2015 D. R. Commander. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the libjpeg-turbo Project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS", AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- libjpeg-turbo Copyright (C)2009-2016 D. R. Commander. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the libjpeg-turbo Project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS", AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- libjpeg-turbo Copyright (C)2011 D. R. Commander. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the libjpeg-turbo Project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS", AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- libjpeg-turbo Copyright (C)2011, 2015 D. R. Commander. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the libjpeg-turbo Project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS", AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- libjpeg-turbo Copyright (C)2011-2016 D. R. Commander. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the libjpeg-turbo Project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS", AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- libjpeg-turbo Copyright 2009 Pierre Ossman for Cendio AB Copyright (C) 2010, D. R. Commander. Based on the x86 SIMD extension for IJG JPEG library - version 1.02 Copyright (C) 1999-2006, MIYASAKA Masaru. This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- libjpeg-turbo We are also required to state that "The Graphics Interchange Format(c) is the Copyright property of CompuServe Incorporated. GIF(sm) is a Service Mark property of CompuServe Incorporated." -------------------------------------------------------------------------------- libjpeg-turbo libjpeg-turbo Licenses ====================== libjpeg-turbo is covered by three compatible BSD-style open source licenses: - The IJG (Independent JPEG Group) License, which is listed in [README.ijg](README.ijg) This license applies to the libjpeg API library and associated programs (any code inherited from libjpeg, and any modifications to that code.) - The Modified (3-clause) BSD License, which is listed in [turbojpeg.c](turbojpeg.c) This license covers the TurboJPEG API library and associated programs. - The zlib License, which is listed in [simd/jsimdext.inc](simd/jsimdext.inc) This license is a subset of the other two, and it covers the libjpeg-turbo SIMD extensions. Complying with the libjpeg-turbo Licenses ========================================= This section provides a roll-up of the libjpeg-turbo licensing terms, to the best of our understanding. 1. If you are distributing a modified version of the libjpeg-turbo source, then: 1. You cannot alter or remove any existing copyright or license notices from the source. **Origin** - Clause 1 of the IJG License - Clause 1 of the Modified BSD License - Clauses 1 and 3 of the zlib License 2. You must add your own copyright notice to the header of each source file you modified, so others can tell that you modified that file (if there is not an existing copyright header in that file, then you can simply add a notice stating that you modified the file.) **Origin** - Clause 1 of the IJG License - Clause 2 of the zlib License 3. You must include the IJG README file, and you must not alter any of the copyright or license text in that file. **Origin** - Clause 1 of the IJG License 2. If you are distributing only libjpeg-turbo binaries without the source, or if you are distributing an application that statically links with libjpeg-turbo, then: 1. Your product documentation must include a message stating: This software is based in part on the work of the Independent JPEG Group. **Origin** - Clause 2 of the IJG license 2. If your binary distribution includes or uses the TurboJPEG API, then your product documentation must include the text of the Modified BSD License. **Origin** - Clause 2 of the Modified BSD License 3. You cannot use the name of the IJG or The libjpeg-turbo Project or the contributors thereof in advertising, publicity, etc. **Origin** - IJG License - Clause 3 of the Modified BSD License 4. The IJG and The libjpeg-turbo Project do not warrant libjpeg-turbo to be free of defects, nor do we accept any liability for undesirable consequences resulting from your use of the software. **Origin** - IJG License - Modified BSD License - zlib License -------------------------------------------------------------------------------- libjpeg-turbo libjpeg-turbo note: This file has been modified by The libjpeg-turbo Project to include only information relevant to libjpeg-turbo, to wordsmith certain sections, and to remove impolitic language that existed in the libjpeg v8 README. It is included only for reference. Please see README.md for information specific to libjpeg-turbo. The Independent JPEG Group's JPEG software ========================================== This distribution contains a release of the Independent JPEG Group's free JPEG software. You are welcome to redistribute this software and to use it for any purpose, subject to the conditions under LEGAL ISSUES, below. This software is the work of Tom Lane, Guido Vollbeding, Philip Gladstone, Bill Allombert, Jim Boucher, Lee Crocker, Bob Friesenhahn, Ben Jackson, Julian Minguillon, Luis Ortiz, George Phillips, Davide Rossi, Ge' Weijers, and other members of the Independent JPEG Group. IJG is not affiliated with the ISO/IEC JTC1/SC29/WG1 standards committee (also known as JPEG, together with ITU-T SG16). DOCUMENTATION ROADMAP ===================== This file contains the following sections: OVERVIEW General description of JPEG and the IJG software. LEGAL ISSUES Copyright, lack of warranty, terms of distribution. REFERENCES Where to learn more about JPEG. ARCHIVE LOCATIONS Where to find newer versions of this software. FILE FORMAT WARS Software *not* to get. TO DO Plans for future IJG releases. Other documentation files in the distribution are: User documentation: usage.txt Usage instructions for cjpeg, djpeg, jpegtran, rdjpgcom, and wrjpgcom. *.1 Unix-style man pages for programs (same info as usage.txt). wizard.txt Advanced usage instructions for JPEG wizards only. change.log Version-to-version change highlights. Programmer and internal documentation: libjpeg.txt How to use the JPEG library in your own programs. example.c Sample code for calling the JPEG library. structure.txt Overview of the JPEG library's internal structure. coderules.txt Coding style rules --- please read if you contribute code. Please read at least usage.txt. Some information can also be found in the JPEG FAQ (Frequently Asked Questions) article. See ARCHIVE LOCATIONS below to find out where to obtain the FAQ article. If you want to understand how the JPEG code works, we suggest reading one or more of the REFERENCES, then looking at the documentation files (in roughly the order listed) before diving into the code. OVERVIEW ======== This package contains C software to implement JPEG image encoding, decoding, and transcoding. JPEG (pronounced "jay-peg") is a standardized compression method for full-color and grayscale images. JPEG's strong suit is compressing photographic images or other types of images that have smooth color and brightness transitions between neighboring pixels. Images with sharp lines or other abrupt features may not compress well with JPEG, and a higher JPEG quality may have to be used to avoid visible compression artifacts with such images. JPEG is lossy, meaning that the output pixels are not necessarily identical to the input pixels. However, on photographic content and other "smooth" images, very good compression ratios can be obtained with no visible compression artifacts, and extremely high compression ratios are possible if you are willing to sacrifice image quality (by reducing the "quality" setting in the compressor.) This software implements JPEG baseline, extended-sequential, and progressive compression processes. Provision is made for supporting all variants of these processes, although some uncommon parameter settings aren't implemented yet. We have made no provision for supporting the hierarchical or lossless processes defined in the standard. We provide a set of library routines for reading and writing JPEG image files, plus two sample applications "cjpeg" and "djpeg", which use the library to perform conversion between JPEG and some other popular image file formats. The library is intended to be reused in other applications. In order to support file conversion and viewing software, we have included considerable functionality beyond the bare JPEG coding/decoding capability; for example, the color quantization modules are not strictly part of JPEG decoding, but they are essential for output to colormapped file formats or colormapped displays. These extra functions can be compiled out of the library if not required for a particular application. We have also included "jpegtran", a utility for lossless transcoding between different JPEG processes, and "rdjpgcom" and "wrjpgcom", two simple applications for inserting and extracting textual comments in JFIF files. The emphasis in designing this software has been on achieving portability and flexibility, while also making it fast enough to be useful. In particular, the software is not intended to be read as a tutorial on JPEG. (See the REFERENCES section for introductory material.) Rather, it is intended to be reliable, portable, industrial-strength code. We do not claim to have achieved that goal in every aspect of the software, but we strive for it. We welcome the use of this software as a component of commercial products. No royalty is required, but we do ask for an acknowledgement in product documentation, as described under LEGAL ISSUES. LEGAL ISSUES ============ In plain English: 1. We don't promise that this software works. (But if you find any bugs, please let us know!) 2. You can use this software for whatever you want. You don't have to pay us. 3. You may not pretend that you wrote this software. If you use it in a program, you must acknowledge somewhere in your documentation that you've used the IJG code. In legalese: The authors make NO WARRANTY or representation, either express or implied, with respect to this software, its quality, accuracy, merchantability, or fitness for a particular purpose. This software is provided "AS IS", and you, its user, assume the entire risk as to its quality and accuracy. This software is copyright (C) 1991-2016, Thomas G. Lane, Guido Vollbeding. All Rights Reserved except as specified below. Permission is hereby granted to use, copy, modify, and distribute this software (or portions thereof) for any purpose, without fee, subject to these conditions: (1) If any part of the source code for this software is distributed, then this README file must be included, with this copyright and no-warranty notice unaltered; and any additions, deletions, or changes to the original files must be clearly indicated in accompanying documentation. (2) If only executable code is distributed, then the accompanying documentation must state that "this software is based in part on the work of the Independent JPEG Group". (3) Permission for use of this software is granted only if the user accepts full responsibility for any undesirable consequences; the authors accept NO LIABILITY for damages of any kind. These conditions apply to any software derived from or based on the IJG code, not just to the unmodified library. If you use our work, you ought to acknowledge us. Permission is NOT granted for the use of any IJG author's name or company name in advertising or publicity relating to this software or products derived from it. This software may be referred to only as "the Independent JPEG Group's software". We specifically permit and encourage the use of this software as the basis of commercial products, provided that all warranty or liability claims are assumed by the product vendor. The Unix configuration script "configure" was produced with GNU Autoconf. It is copyright by the Free Software Foundation but is freely distributable. The same holds for its supporting scripts (config.guess, config.sub, ltmain.sh). Another support script, install-sh, is copyright by X Consortium but is also freely distributable. The IJG distribution formerly included code to read and write GIF files. To avoid entanglement with the Unisys LZW patent (now expired), GIF reading support has been removed altogether, and the GIF writer has been simplified to produce "uncompressed GIFs". This technique does not use the LZW algorithm; the resulting GIF files are larger than usual, but are readable by all standard GIF decoders. We are required to state that "The Graphics Interchange Format(c) is the Copyright property of CompuServe Incorporated. GIF(sm) is a Service Mark property of CompuServe Incorporated." REFERENCES ========== We recommend reading one or more of these references before trying to understand the innards of the JPEG software. The best short technical introduction to the JPEG compression algorithm is Wallace, Gregory K. "The JPEG Still Picture Compression Standard", Communications of the ACM, April 1991 (vol. 34 no. 4), pp. 30-44. (Adjacent articles in that issue discuss MPEG motion picture compression, applications of JPEG, and related topics.) If you don't have the CACM issue handy, a PDF file containing a revised version of Wallace's article is available at http://www.ijg.org/files/Wallace.JPEG.pdf. The file (actually a preprint for an article that appeared in IEEE Trans. Consumer Electronics) omits the sample images that appeared in CACM, but it includes corrections and some added material. Note: the Wallace article is copyright ACM and IEEE, and it may not be used for commercial purposes. A somewhat less technical, more leisurely introduction to JPEG can be found in "The Data Compression Book" by Mark Nelson and Jean-loup Gailly, published by M&T Books (New York), 2nd ed. 1996, ISBN 1-55851-434-1. This book provides good explanations and example C code for a multitude of compression methods including JPEG. It is an excellent source if you are comfortable reading C code but don't know much about data compression in general. The book's JPEG sample code is far from industrial-strength, but when you are ready to look at a full implementation, you've got one here... The best currently available description of JPEG is the textbook "JPEG Still Image Data Compression Standard" by William B. Pennebaker and Joan L. Mitchell, published by Van Nostrand Reinhold, 1993, ISBN 0-442-01272-1. Price US$59.95, 638 pp. The book includes the complete text of the ISO JPEG standards (DIS 10918-1 and draft DIS 10918-2). The original JPEG standard is divided into two parts, Part 1 being the actual specification, while Part 2 covers compliance testing methods. Part 1 is titled "Digital Compression and Coding of Continuous-tone Still Images, Part 1: Requirements and guidelines" and has document numbers ISO/IEC IS 10918-1, ITU-T T.81. Part 2 is titled "Digital Compression and Coding of Continuous-tone Still Images, Part 2: Compliance testing" and has document numbers ISO/IEC IS 10918-2, ITU-T T.83. The JPEG standard does not specify all details of an interchangeable file format. For the omitted details we follow the "JFIF" conventions, revision 1.02. JFIF 1.02 has been adopted as an Ecma International Technical Report and thus received a formal publication status. It is available as a free download in PDF format from http://www.ecma-international.org/publications/techreports/E-TR-098.htm. A PostScript version of the JFIF document is available at http://www.ijg.org/files/jfif.ps.gz. There is also a plain text version at http://www.ijg.org/files/jfif.txt.gz, but it is missing the figures. The TIFF 6.0 file format specification can be obtained by FTP from ftp://ftp.sgi.com/graphics/tiff/TIFF6.ps.gz. The JPEG incorporation scheme found in the TIFF 6.0 spec of 3-June-92 has a number of serious problems. IJG does not recommend use of the TIFF 6.0 design (TIFF Compression tag 6). Instead, we recommend the JPEG design proposed by TIFF Technical Note #2 (Compression tag 7). Copies of this Note can be obtained from http://www.ijg.org/files/. It is expected that the next revision of the TIFF spec will replace the 6.0 JPEG design with the Note's design. Although IJG's own code does not support TIFF/JPEG, the free libtiff library uses our library to implement TIFF/JPEG per the Note. ARCHIVE LOCATIONS ================= The "official" archive site for this software is www.ijg.org. The most recent released version can always be found there in directory "files". The JPEG FAQ (Frequently Asked Questions) article is a source of some general information about JPEG. It is available on the World Wide Web at http://www.faqs.org/faqs/jpeg-faq/ and other news.answers archive sites, including the official news.answers archive at rtfm.mit.edu: ftp://rtfm.mit.edu/pub/usenet/news.answers/jpeg-faq/. If you don't have Web or FTP access, send e-mail to mail-server@rtfm.mit.edu with body send usenet/news.answers/jpeg-faq/part1 send usenet/news.answers/jpeg-faq/part2 FILE FORMAT WARS ================ The ISO/IEC JTC1/SC29/WG1 standards committee (also known as JPEG, together with ITU-T SG16) currently promotes different formats containing the name "JPEG" which are incompatible with original DCT-based JPEG. IJG therefore does not support these formats (see REFERENCES). Indeed, one of the original reasons for developing this free software was to help force convergence on common, interoperable format standards for JPEG files. Don't use an incompatible file format! (In any case, our decoder will remain capable of reading existing JPEG image files indefinitely.) TO DO ===== Please send bug reports, offers of help, etc. to jpeg-info@jpegclub.org. -------------------------------------------------------------------------------- libjxl Copyright 2021 The Chromium Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- libmicrohttpd skia Copyright (c) 2011 Google Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- libpng COPYRIGHT NOTICE, DISCLAIMER, and LICENSE ========================================= PNG Reference Library License version 2 --------------------------------------- * Copyright (c) 1995-2019 The PNG Reference Library Authors. * Copyright (c) 2018-2019 Cosmin Truta. * Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson. * Copyright (c) 1996-1997 Andreas Dilger. * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. The software is supplied "as is", without warranty of any kind, express or implied, including, without limitation, the warranties of merchantability, fitness for a particular purpose, title, and non-infringement. In no event shall the Copyright owners, or anyone distributing the software, be liable for any damages or other liability, whether in contract, tort or otherwise, arising from, out of, or in connection with the software, or the use or other dealings in the software, even if advised of the possibility of such damage. Permission is hereby granted to use, copy, modify, and distribute this software, or portions hereof, for any purpose, without fee, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated, but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This Copyright notice may not be removed or altered from any source or altered source distribution. PNG Reference Library License version 1 (for libpng 0.5 through 1.6.35) ----------------------------------------------------------------------- libpng versions 1.0.7, July 1, 2000, through 1.6.35, July 15, 2018 are Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson, are derived from libpng-1.0.6, and are distributed according to the same disclaimer and license as libpng-1.0.6 with the following individuals added to the list of Contributing Authors: Simon-Pierre Cadieux Eric S. Raymond Mans Rullgard Cosmin Truta Gilles Vollant James Yu Mandar Sahastrabuddhe Google Inc. Vadim Barkov and with the following additions to the disclaimer: There is no warranty against interference with your enjoyment of the library or against infringement. There is no warranty that our efforts or the library will fulfill any of your particular purposes or needs. This library is provided with all faults, and the entire risk of satisfactory quality, performance, accuracy, and effort is with the user. Some files in the "contrib" directory and some configure-generated files that are distributed with libpng have other copyright owners, and are released under other open source licenses. libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are Copyright (c) 1998-2000 Glenn Randers-Pehrson, are derived from libpng-0.96, and are distributed according to the same disclaimer and license as libpng-0.96, with the following individuals added to the list of Contributing Authors: Tom Lane Glenn Randers-Pehrson Willem van Schaik libpng versions 0.89, June 1996, through 0.96, May 1997, are Copyright (c) 1996-1997 Andreas Dilger, are derived from libpng-0.88, and are distributed according to the same disclaimer and license as libpng-0.88, with the following individuals added to the list of Contributing Authors: John Bowler Kevin Bracey Sam Bushell Magnus Holmgren Greg Roelofs Tom Tanner Some files in the "scripts" directory have other copyright owners, but are released under this license. libpng versions 0.5, May 1995, through 0.88, January 1996, are Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. For the purposes of this copyright and license, "Contributing Authors" is defined as the following set of individuals: Andreas Dilger Dave Martindale Guy Eric Schalnat Paul Schmidt Tim Wegner The PNG Reference Library is supplied "AS IS". The Contributing Authors and Group 42, Inc. disclaim all warranties, expressed or implied, including, without limitation, the warranties of merchantability and of fitness for any purpose. The Contributing Authors and Group 42, Inc. assume no liability for direct, indirect, incidental, special, exemplary, or consequential damages, which may result from the use of the PNG Reference Library, even if advised of the possibility of such damage. Permission is hereby granted to use, copy, modify, and distribute this source code, or portions hereof, for any purpose, without fee, subject to the following restrictions: 1. The origin of this source code must not be misrepresented. 2. Altered versions must be plainly marked as such and must not be misrepresented as being the original source. 3. This Copyright notice may not be removed or altered from any source or altered source distribution. The Contributing Authors and Group 42, Inc. specifically permit, without fee, and encourage the use of this source code as a component to supporting the PNG file format in commercial products. If you use this source code in a product, acknowledgment is not required but would be appreciated. -------------------------------------------------------------------------------- libtess2 Copyright (C) [dates of first publication] Silicon Graphics, Inc. All Rights Reserved. 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 including the dates of first publication and either this permission notice or a reference to http://oss.sgi.com/projects/FreeB/ 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 SILICON GRAPHICS, INC. 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. Except as contained in this notice, the name of Silicon Graphics, Inc. shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Silicon Graphics, Inc. -------------------------------------------------------------------------------- libwebp Copyright (c) 2010, Google Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- libwebp Copyright 2010 Google Inc. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- libwebp Copyright 2011 Google Inc. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- libwebp Copyright 2012 Google Inc. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- libwebp Copyright 2013 Google Inc. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- libwebp Copyright 2014 Google Inc. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- libwebp Copyright 2015 Google Inc. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- libwebp Copyright 2016 Google Inc. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- libwebp Copyright 2017 Google Inc. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- libwebp Copyright 2018 Google Inc. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- libwebp Copyright 2021 Google Inc. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- libwebp Copyright 2022 Google Inc. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- lints Copyright 2021, the Dart project authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- material_color_utilities Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS Copyright 2021 Google LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -------------------------------------------------------------------------------- perfetto Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS Copyright (c) 2017, The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -------------------------------------------------------------------------------- platform_detect Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2017 Workiva Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -------------------------------------------------------------------------------- rapidjson Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip-> All rights reserved-> 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. -------------------------------------------------------------------------------- rapidjson Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. 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. -------------------------------------------------------------------------------- rapidjson Copyright (c) 2006-2013 Alexander Chemeris Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the product nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- rapidjson The above software in this distribution may have been modified by THL A29 Limited ("Tencent Modifications"). All Tencent Modifications are Copyright (C) 2015 THL A29 Limited. -------------------------------------------------------------------------------- skia Copyright (C) 2014 Google Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright (c) 2011 Google Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright (c) 2014 Google Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2005 The Android Open Source Project Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2006 The Android Open Source Project Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2006-2012 The Android Open Source Project Copyright 2012 Mozilla Foundation Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2007 The Android Open Source Project Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2008 Google Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2008 The Android Open Source Project Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2009 The Android Open Source Project Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2009-2015 Google Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2010 Google Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2010 The Android Open Source Project Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2011 Google Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2011 Google Inc. Copyright 2012 Mozilla Foundation Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2011 The Android Open Source Project Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2012 Google Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2012 Google LLC Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2012 The Android Open Source Project Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2013 Google Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2013 The Android Open Source Project Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2014 Google Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2014 Google Inc. Copyright 2017 ARM Ltd. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2014 The Android Open Source Project Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2015 Google Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2015 The Android Open Source Project Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2016 Google Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2016 Mozilla Foundation Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2016 The Android Open Source Project Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2017 ARM Ltd. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2017 Google Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2018 Google Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2018 Google LLC Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2018 Google LLC. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2018 Google, LLC Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2018 The Android Open Source Project Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2019 Google Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2019 Google LLC Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2019 Google LLC. -------------------------------------------------------------------------------- skia Copyright 2019 Google LLC. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2019 Google, LLC Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2019 The Android Open Source Project Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2020 Google Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2020 Google LLC Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2020 Google LLC. -------------------------------------------------------------------------------- skia Copyright 2020 Google LLC. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2020 Google, LLC Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2021 Google Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2021 Google LLC Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2021 Google LLC. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2021 Google, LLC Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2022 Google Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2022 Google LLC Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2022 Google LLC. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2022 Google, LLC Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2023 Google Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2023 Google LLC Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2023 Google LLC. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2023 Google, LLC Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2023 The Android Open Source Project Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2024 Google Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2024 Google LLC Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- skia Copyright 2024 The Android Open Source Project Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- spirv-cross Copyright 2014-2016,2021 The Khronos Group, Inc. 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. -------------------------------------------------------------------------------- spring_animation Copyright (c) Meta Platforms, Inc. and affiliates. 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. -------------------------------------------------------------------------------- sqlite The source code for SQLite is in the public domain. No claim of copyright is made on any part of the core source code. (The documentation and test code is a different matter - some sections of documentation and test logic are governed by open-source licenses.) All contributors to the SQLite core software have signed affidavits specifically disavowing any copyright interest in the code. This means that anybody is able to legally do anything they want with the SQLite source code. There are other SQL database engines with liberal licenses that allow the code to be broadly and freely used. But those other engines are still governed by copyright law. SQLite is different in that copyright law simply does not apply. The source code files for other SQL database engines typically begin with a comment describing your legal rights to view and copy that file. The SQLite source code contains no license since it is not governed by copyright. Instead of a license, the SQLite source code offers a blessing: May you do good and not evil May you find forgiveness for yourself and forgive others May you share freely, never taking more than you give. -------------------------------------------------------------------------------- stack_trace Copyright 2014, the Dart project authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- term_glyph Copyright 2017, the Dart project authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- test_api Copyright 2018, the Dart project authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- vector_math Copyright 2015, Google Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Copyright (C) 2013 Andrew Magill This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- vm_service Copyright 2015, the Dart project authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- vulkan-validation-layers Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. File: layers/external/vma/vk_mem_alloc.h Copyright (c) 2017-2022 Advanced Micro Devices, Inc. All rights reserved. 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. -------------------------------------------------------------------------------- vulkan-validation-layers Copyright (C) 2012-2021 Yann Collet BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- vulkan-validation-layers vulkan_memory_allocator Copyright (c) 2017-2022 Advanced Micro Devices, Inc. All rights reserved. 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. -------------------------------------------------------------------------------- web Copyright 2023, the Dart project authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- web_locale_keymap Copyright (c) 2022 Google LLC 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. -------------------------------------------------------------------------------- webview_flutter_android Copyright 2013 The Flutter Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- win32 Copyright 2019, Dart | Windows. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- xxhash Copyright (C) 2012-2016, Yann Collet BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- xxhash Copyright (C) 2012-2016, Yann Collet. BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- zlib Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- zlib Copyright (C) 1998-2005 Gilles Vollant -------------------------------------------------------------------------------- zlib Copyright (C) 2017 ARM, Inc. Copyright 2017 The Chromium Authors Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- zlib Copyright 2017 The Chromium Authors Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- zlib Copyright 2018 The Chromium Authors Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- zlib Copyright 2019 The Chromium Authors Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- zlib Copyright 2022 The Chromium Authors Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- zlib This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -------------------------------------------------------------------------------- zlib version 1.2.12, March 27th, 2022 Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. ================================================ FILE: legacy/dist/assets/assets/talk.glowbom ================================================ {"title":"Glowby","main_color":"Black","conclusion":"Please send us your information and we'll come back to you shortly!","start_over":"Glowby","show_number_result":true,"show_percentage_result":true,"voice":true,"questions":[{"title":"","description":"Hello","buttonsTexts":["Hello!","Hi!","Hi there!","Hey, What's up?"],"buttonAnswers":[0,0,0,0],"answersCount":0,"goIndexes":[2,2,2,2],"answerPicture":"","answerPictureDelay":0,"goConditions":[],"heroValues":[],"picturesSpriteNames":["","","","","",""]},{"title":"","description":"How's it going?","buttonsTexts":["I'm ok.","I'm doing quite well, thank you.","Pretty good. How goes it for you?","I'm good, thanks for asking!"],"buttonAnswers":[0,0,0,0],"answersCount":0,"goIndexes":[2,2,2,2],"answerPicture":"","answerPictureDelay":0,"goConditions":[],"heroValues":[],"picturesSpriteNames":["","","","","",""]},{"title":"","description":"What's up?","buttonsTexts":["Not much. Just enjoying my time on this sim.","You just summed up my worldview.","Nothing really, just keeping busy.","I can't tell you!"],"buttonAnswers":[0,0,0,0],"answersCount":0,"goIndexes":[2,2,2,2],"answerPicture":"","answerPictureDelay":0,"goConditions":[],"heroValues":[],"picturesSpriteNames":["","","","","",""]}],"dnsgs":false} ================================================ FILE: legacy/dist/assets/shaders/ink_sparkle.frag ================================================ { "sksl": { "entrypoint": "ink_sparkle_fragment_main", "shader": "// This SkSL shader is autogenerated by spirv-cross.\n\nfloat4 flutter_FragCoord;\n\nuniform vec4 u_color;\nuniform vec4 u_composite_1;\nuniform vec2 u_center;\nuniform float u_max_radius;\nuniform vec2 u_resolution_scale;\nuniform vec2 u_noise_scale;\nuniform float u_noise_phase;\nuniform vec2 u_circle1;\nuniform vec2 u_circle2;\nuniform vec2 u_circle3;\nuniform vec2 u_rotation1;\nuniform vec2 u_rotation2;\nuniform vec2 u_rotation3;\n\nvec4 fragColor;\n\nfloat u_alpha;\nfloat u_sparkle_alpha;\nfloat u_blur;\nfloat u_radius_scale;\n\nvec2 FLT_flutter_local_FlutterFragCoord()\n{\n return flutter_FragCoord.xy;\n}\n\nmat2 FLT_flutter_local_rotate2d(vec2 rad)\n{\n return mat2(vec2(rad.x, -rad.y), vec2(rad.y, rad.x));\n}\n\nfloat FLT_flutter_local_soft_circle(vec2 uv, vec2 xy, float radius, float blur)\n{\n float blur_half = blur * 0.5;\n float d = distance(uv, xy);\n return 1.0 - smoothstep(1.0 - blur_half, 1.0 + blur_half, d / radius);\n}\n\nfloat FLT_flutter_local_circle_grid(vec2 resolution, inout vec2 p, vec2 xy, vec2 rotation, float cell_diameter)\n{\n vec2 param = rotation;\n p = (FLT_flutter_local_rotate2d(param) * (xy - p)) + xy;\n p = mod(p, vec2(cell_diameter)) / resolution;\n float cell_uv = (cell_diameter / resolution.y) * 0.5;\n float r = 0.64999997615814208984375 * cell_uv;\n vec2 param_1 = p;\n vec2 param_2 = vec2(cell_uv);\n float param_3 = r;\n float param_4 = r * 50.0;\n return FLT_flutter_local_soft_circle(param_1, param_2, param_3, param_4);\n}\n\nfloat FLT_flutter_local_turbulence(vec2 uv)\n{\n vec2 uv_scale = uv * vec2(0.800000011920928955078125);\n vec2 param = vec2(0.800000011920928955078125);\n vec2 param_1 = uv_scale;\n vec2 param_2 = u_circle1;\n vec2 param_3 = u_rotation1;\n float param_4 = 0.17000000178813934326171875;\n float _319 = FLT_flutter_local_circle_grid(param, param_1, param_2, param_3, param_4);\n float g1 = _319;\n vec2 param_5 = vec2(0.800000011920928955078125);\n vec2 param_6 = uv_scale;\n vec2 param_7 = u_circle2;\n vec2 param_8 = u_rotation2;\n float param_9 = 0.20000000298023223876953125;\n float _331 = FLT_flutter_local_circle_grid(param_5, param_6, param_7, param_8, param_9);\n float g2 = _331;\n vec2 param_10 = vec2(0.800000011920928955078125);\n vec2 param_11 = uv_scale;\n vec2 param_12 = u_circle3;\n vec2 param_13 = u_rotation3;\n float param_14 = 0.2750000059604644775390625;\n float _344 = FLT_flutter_local_circle_grid(param_10, param_11, param_12, param_13, param_14);\n float g3 = _344;\n float v = (((g1 * g1) + g2) - g3) * 0.5;\n return clamp(0.449999988079071044921875 + (0.800000011920928955078125 * v), 0.0, 1.0);\n}\n\nfloat FLT_flutter_local_soft_ring(vec2 uv, vec2 xy, float radius, float thickness, float blur)\n{\n vec2 param = uv;\n vec2 param_1 = xy;\n float param_2 = radius + thickness;\n float param_3 = blur;\n float circle_outer = FLT_flutter_local_soft_circle(param, param_1, param_2, param_3);\n vec2 param_4 = uv;\n vec2 param_5 = xy;\n float param_6 = max(radius - thickness, 0.0);\n float param_7 = blur;\n float circle_inner = FLT_flutter_local_soft_circle(param_4, param_5, param_6, param_7);\n return clamp(circle_outer - circle_inner, 0.0, 1.0);\n}\n\nfloat FLT_flutter_local_triangle_noise(inout vec2 n)\n{\n n = fract(n * vec2(5.398700237274169921875, 5.442100048065185546875));\n n += vec2(dot(n.yx, n + vec2(21.5351009368896484375, 14.3136997222900390625)));\n float xy = n.x * n.y;\n return (fract(xy * 95.43070220947265625) + fract(xy * 75.0496063232421875)) - 1.0;\n}\n\nfloat FLT_flutter_local_threshold(float v, float l, float h)\n{\n return step(l, v) * (1.0 - step(h, v));\n}\n\nfloat FLT_flutter_local_sparkle(vec2 uv, float t)\n{\n vec2 param = uv;\n float _242 = FLT_flutter_local_triangle_noise(param);\n float n = _242;\n float param_1 = n;\n float param_2 = 0.0;\n float param_3 = 0.0500000007450580596923828125;\n float s = FLT_flutter_local_threshold(param_1, param_2, param_3);\n float param_4 = n + sin(3.1415927410125732421875 * (t + 0.3499999940395355224609375));\n float param_5 = 0.100000001490116119384765625;\n float param_6 = 0.1500000059604644775390625;\n s += FLT_flutter_local_threshold(param_4, param_5, param_6);\n float param_7 = n + sin(3.1415927410125732421875 * (t + 0.699999988079071044921875));\n float param_8 = 0.20000000298023223876953125;\n float param_9 = 0.25;\n s += FLT_flutter_local_threshold(param_7, param_8, param_9);\n float param_10 = n + sin(3.1415927410125732421875 * (t + 1.0499999523162841796875));\n float param_11 = 0.300000011920928955078125;\n float param_12 = 0.3499999940395355224609375;\n s += FLT_flutter_local_threshold(param_10, param_11, param_12);\n return clamp(s, 0.0, 1.0) * 0.550000011920928955078125;\n}\n\nvoid FLT_main()\n{\n u_alpha = u_composite_1.x;\n u_sparkle_alpha = u_composite_1.y;\n u_blur = u_composite_1.z;\n u_radius_scale = u_composite_1.w;\n vec2 p = FLT_flutter_local_FlutterFragCoord();\n vec2 uv_1 = p * u_resolution_scale;\n vec2 density_uv = uv_1 - mod(p, u_noise_scale);\n float radius = u_max_radius * u_radius_scale;\n vec2 param_13 = uv_1;\n float turbulence = FLT_flutter_local_turbulence(param_13);\n vec2 param_14 = p;\n vec2 param_15 = u_center;\n float param_16 = radius;\n float param_17 = 0.0500000007450580596923828125 * u_max_radius;\n float param_18 = u_blur;\n float ring = FLT_flutter_local_soft_ring(param_14, param_15, param_16, param_17, param_18);\n vec2 param_19 = density_uv;\n float param_20 = u_noise_phase;\n float sparkle = ((FLT_flutter_local_sparkle(param_19, param_20) * ring) * turbulence) * u_sparkle_alpha;\n vec2 param_21 = p;\n vec2 param_22 = u_center;\n float param_23 = radius;\n float param_24 = u_blur;\n float wave_alpha = (FLT_flutter_local_soft_circle(param_21, param_22, param_23, param_24) * u_alpha) * u_color.w;\n vec4 wave_color = vec4(u_color.xyz * wave_alpha, wave_alpha);\n fragColor = mix(wave_color, vec4(1.0), vec4(sparkle));\n}\n\nhalf4 main(float2 iFragCoord)\n{\n flutter_FragCoord = float4(iFragCoord, 0, 0);\n FLT_main();\n return fragColor;\n}\n", "stage": 1, "uniforms": [ { "array_elements": 0, "bit_width": 32, "columns": 1, "location": 0, "name": "u_color", "rows": 4, "type": 10 }, { "array_elements": 0, "bit_width": 32, "columns": 1, "location": 1, "name": "u_composite_1", "rows": 4, "type": 10 }, { "array_elements": 0, "bit_width": 32, "columns": 1, "location": 2, "name": "u_center", "rows": 2, "type": 10 }, { "array_elements": 0, "bit_width": 32, "columns": 1, "location": 3, "name": "u_max_radius", "rows": 1, "type": 10 }, { "array_elements": 0, "bit_width": 32, "columns": 1, "location": 4, "name": "u_resolution_scale", "rows": 2, "type": 10 }, { "array_elements": 0, "bit_width": 32, "columns": 1, "location": 5, "name": "u_noise_scale", "rows": 2, "type": 10 }, { "array_elements": 0, "bit_width": 32, "columns": 1, "location": 6, "name": "u_noise_phase", "rows": 1, "type": 10 }, { "array_elements": 0, "bit_width": 32, "columns": 1, "location": 7, "name": "u_circle1", "rows": 2, "type": 10 }, { "array_elements": 0, "bit_width": 32, "columns": 1, "location": 8, "name": "u_circle2", "rows": 2, "type": 10 }, { "array_elements": 0, "bit_width": 32, "columns": 1, "location": 9, "name": "u_circle3", "rows": 2, "type": 10 }, { "array_elements": 0, "bit_width": 32, "columns": 1, "location": 10, "name": "u_rotation1", "rows": 2, "type": 10 }, { "array_elements": 0, "bit_width": 32, "columns": 1, "location": 11, "name": "u_rotation2", "rows": 2, "type": 10 }, { "array_elements": 0, "bit_width": 32, "columns": 1, "location": 12, "name": "u_rotation3", "rows": 2, "type": 10 } ] } } ================================================ FILE: legacy/dist/canvaskit/canvaskit.js ================================================ var CanvasKitInit = (() => { var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; return ( function(moduleArg = {}) { var r=moduleArg,aa,ba;r.ready=new Promise((a,b)=>{aa=a;ba=b}); (function(a){a.Md=a.Md||[];a.Md.push(function(){a.MakeSWCanvasSurface=function(b){var c=b,d="undefined"!==typeof OffscreenCanvas&&c instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&c instanceof HTMLCanvasElement||d||(c=document.getElementById(b),c)))throw"Canvas with id "+b+" was not found";if(b=a.MakeSurface(c.width,c.height))b.me=c;return b};a.MakeCanvasSurface||(a.MakeCanvasSurface=a.MakeSWCanvasSurface);a.MakeSurface=function(b,c){var d={width:b,height:c,colorType:a.ColorType.RGBA_8888, alphaType:a.AlphaType.Unpremul,colorSpace:a.ColorSpace.SRGB},f=b*c*4,k=a._malloc(f);if(d=a.Surface._makeRasterDirect(d,k,4*b))d.me=null,d.Ue=b,d.Re=c,d.Se=f,d.xe=k,d.getCanvas().clear(a.TRANSPARENT);return d};a.MakeRasterDirectSurface=function(b,c,d){return a.Surface._makeRasterDirect(b,c.byteOffset,d)};a.Surface.prototype.flush=function(b){a.Jd(this.Id);this._flush();if(this.me){var c=new Uint8ClampedArray(a.HEAPU8.buffer,this.xe,this.Se);c=new ImageData(c,this.Ue,this.Re);b?this.me.getContext("2d").putImageData(c, 0,0,b[0],b[1],b[2]-b[0],b[3]-b[1]):this.me.getContext("2d").putImageData(c,0,0)}};a.Surface.prototype.dispose=function(){this.xe&&a._free(this.xe);this.delete()};a.Jd=a.Jd||function(){};a.ne=a.ne||function(){return null}})})(r); (function(a){a.Md=a.Md||[];a.Md.push(function(){function b(m,p,w){return m&&m.hasOwnProperty(p)?m[p]:w}function c(m){var p=da(ea);ea[p]=m;return p}function d(m){return m.naturalHeight||m.videoHeight||m.displayHeight||m.height}function f(m){return m.naturalWidth||m.videoWidth||m.displayWidth||m.width}function k(m,p,w,y){m.bindTexture(m.TEXTURE_2D,p);y||w.alphaType!==a.AlphaType.Premul||m.pixelStorei(m.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0);return p}function l(m,p,w){w||p.alphaType!==a.AlphaType.Premul|| m.pixelStorei(m.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);m.bindTexture(m.TEXTURE_2D,null)}a.GetWebGLContext=function(m,p){if(!m)throw"null canvas passed into makeWebGLContext";var w={alpha:b(p,"alpha",1),depth:b(p,"depth",1),stencil:b(p,"stencil",8),antialias:b(p,"antialias",0),premultipliedAlpha:b(p,"premultipliedAlpha",1),preserveDrawingBuffer:b(p,"preserveDrawingBuffer",0),preferLowPowerToHighPerformance:b(p,"preferLowPowerToHighPerformance",0),failIfMajorPerformanceCaveat:b(p,"failIfMajorPerformanceCaveat", 0),enableExtensionsByDefault:b(p,"enableExtensionsByDefault",1),explicitSwapControl:b(p,"explicitSwapControl",0),renderViaOffscreenBackBuffer:b(p,"renderViaOffscreenBackBuffer",0)};w.majorVersion=p&&p.majorVersion?p.majorVersion:"undefined"!==typeof WebGL2RenderingContext?2:1;if(w.explicitSwapControl)throw"explicitSwapControl is not supported";m=fa(m,w);if(!m)return 0;ha(m);v.Ud.getExtension("WEBGL_debug_renderer_info");return m};a.deleteContext=function(m){v===ia[m]&&(v=null);"object"==typeof JSEvents&& JSEvents.yf(ia[m].Ud.canvas);ia[m]&&ia[m].Ud.canvas&&(ia[m].Ud.canvas.Oe=void 0);ia[m]=null};a._setTextureCleanup({deleteTexture:function(m,p){var w=ea[p];w&&ia[m].Ud.deleteTexture(w);ea[p]=null}});a.MakeWebGLContext=function(m){if(!this.Jd(m))return null;var p=this._MakeGrContext();if(!p)return null;p.Id=m;var w=p.delete.bind(p);p["delete"]=function(){a.Jd(this.Id);w()}.bind(p);return v.ze=p};a.MakeGrContext=a.MakeWebGLContext;a.GrDirectContext.prototype.getResourceCacheLimitBytes=function(){a.Jd(this.Id); this._getResourceCacheLimitBytes()};a.GrDirectContext.prototype.getResourceCacheUsageBytes=function(){a.Jd(this.Id);this._getResourceCacheUsageBytes()};a.GrDirectContext.prototype.releaseResourcesAndAbandonContext=function(){a.Jd(this.Id);this._releaseResourcesAndAbandonContext()};a.GrDirectContext.prototype.setResourceCacheLimitBytes=function(m){a.Jd(this.Id);this._setResourceCacheLimitBytes(m)};a.MakeOnScreenGLSurface=function(m,p,w,y,B,D){if(!this.Jd(m.Id))return null;p=void 0===B||void 0===D? this._MakeOnScreenGLSurface(m,p,w,y):this._MakeOnScreenGLSurface(m,p,w,y,B,D);if(!p)return null;p.Id=m.Id;return p};a.MakeRenderTarget=function(){var m=arguments[0];if(!this.Jd(m.Id))return null;if(3===arguments.length){var p=this._MakeRenderTargetWH(m,arguments[1],arguments[2]);if(!p)return null}else if(2===arguments.length){if(p=this._MakeRenderTargetII(m,arguments[1]),!p)return null}else return null;p.Id=m.Id;return p};a.MakeWebGLCanvasSurface=function(m,p,w){p=p||null;var y=m,B="undefined"!== typeof OffscreenCanvas&&y instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&y instanceof HTMLCanvasElement||B||(y=document.getElementById(m),y)))throw"Canvas with id "+m+" was not found";m=this.GetWebGLContext(y,w);if(!m||0>m)throw"failed to create webgl context: err "+m;m=this.MakeWebGLContext(m);p=this.MakeOnScreenGLSurface(m,y.width,y.height,p);return p?p:(p=y.cloneNode(!0),y.parentNode.replaceChild(p,y),p.classList.add("ck-replaced"),a.MakeSWCanvasSurface(p))};a.MakeCanvasSurface= a.MakeWebGLCanvasSurface;a.Surface.prototype.makeImageFromTexture=function(m,p){a.Jd(this.Id);m=c(m);if(p=this._makeImageFromTexture(this.Id,m,p))p.he=m;return p};a.Surface.prototype.makeImageFromTextureSource=function(m,p,w){p||(p={height:d(m),width:f(m),colorType:a.ColorType.RGBA_8888,alphaType:w?a.AlphaType.Premul:a.AlphaType.Unpremul});p.colorSpace||(p.colorSpace=a.ColorSpace.SRGB);a.Jd(this.Id);var y=v.Ud;w=k(y,y.createTexture(),p,w);2===v.version?y.texImage2D(y.TEXTURE_2D,0,y.RGBA,p.width,p.height, 0,y.RGBA,y.UNSIGNED_BYTE,m):y.texImage2D(y.TEXTURE_2D,0,y.RGBA,y.RGBA,y.UNSIGNED_BYTE,m);l(y,p);this._resetContext();return this.makeImageFromTexture(w,p)};a.Surface.prototype.updateTextureFromSource=function(m,p,w){if(m.he){a.Jd(this.Id);var y=m.getImageInfo(),B=v.Ud,D=k(B,ea[m.he],y,w);2===v.version?B.texImage2D(B.TEXTURE_2D,0,B.RGBA,f(p),d(p),0,B.RGBA,B.UNSIGNED_BYTE,p):B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,p);l(B,y,w);this._resetContext();ea[m.he]=null;m.he=c(D);y.colorSpace= m.getColorSpace();p=this._makeImageFromTexture(this.Id,m.he,y);w=m.kd.Kd;B=m.kd.Pd;m.kd.Kd=p.kd.Kd;m.kd.Pd=p.kd.Pd;p.kd.Kd=w;p.kd.Pd=B;p.delete();y.colorSpace.delete()}};a.MakeLazyImageFromTextureSource=function(m,p,w){p||(p={height:d(m),width:f(m),colorType:a.ColorType.RGBA_8888,alphaType:w?a.AlphaType.Premul:a.AlphaType.Unpremul});p.colorSpace||(p.colorSpace=a.ColorSpace.SRGB);var y={makeTexture:function(){var B=v,D=B.Ud,u=k(D,D.createTexture(),p,w);2===B.version?D.texImage2D(D.TEXTURE_2D,0,D.RGBA, p.width,p.height,0,D.RGBA,D.UNSIGNED_BYTE,m):D.texImage2D(D.TEXTURE_2D,0,D.RGBA,D.RGBA,D.UNSIGNED_BYTE,m);l(D,p,w);return c(u)},freeSrc:function(){}};"VideoFrame"===m.constructor.name&&(y.freeSrc=function(){m.close()});return a.Image._makeFromGenerator(p,y)};a.Jd=function(m){return m?ha(m):!1};a.ne=function(){return v&&v.ze&&!v.ze.isDeleted()?v.ze:null}})})(r); (function(a){function b(g){return(f(255*g[3])<<24|f(255*g[0])<<16|f(255*g[1])<<8|f(255*g[2])<<0)>>>0}function c(g){if(g&&g._ck)return g;if(g instanceof Float32Array){for(var e=Math.floor(g.length/4),h=new Uint32Array(e),n=0;nz;z++)a.HEAPF32[t+n]=g[x][z],n++;g=h}else g=M;e.Rd=g}else throw"Invalid argument to copyFlexibleColorArray, Not a color array "+typeof g;return e}function p(g){if(!g)return M;var e=T.toTypedArray();if(g.length){if(6===g.length||9===g.length)return l(g,"HEAPF32",H),6===g.length&&a.HEAPF32.set(fd,6+H/4),H;if(16===g.length)return e[0]=g[0],e[1]=g[1],e[2]=g[3],e[3]=g[4],e[4]=g[5],e[5]=g[7],e[6]=g[12],e[7]=g[13],e[8]=g[15],H;throw"invalid matrix size"; }if(void 0===g.m11)throw"invalid matrix argument";e[0]=g.m11;e[1]=g.m21;e[2]=g.m41;e[3]=g.m12;e[4]=g.m22;e[5]=g.m42;e[6]=g.m14;e[7]=g.m24;e[8]=g.m44;return H}function w(g){if(!g)return M;var e=Y.toTypedArray();if(g.length){if(16!==g.length&&6!==g.length&&9!==g.length)throw"invalid matrix size";if(16===g.length)return l(g,"HEAPF32",ca);e.fill(0);e[0]=g[0];e[1]=g[1];e[3]=g[2];e[4]=g[3];e[5]=g[4];e[7]=g[5];e[10]=1;e[12]=g[6];e[13]=g[7];e[15]=g[8];6===g.length&&(e[12]=0,e[13]=0,e[15]=1);return ca}if(void 0=== g.m11)throw"invalid matrix argument";e[0]=g.m11;e[1]=g.m21;e[2]=g.m31;e[3]=g.m41;e[4]=g.m12;e[5]=g.m22;e[6]=g.m32;e[7]=g.m42;e[8]=g.m13;e[9]=g.m23;e[10]=g.m33;e[11]=g.m43;e[12]=g.m14;e[13]=g.m24;e[14]=g.m34;e[15]=g.m44;return ca}function y(g,e){return l(g,"HEAPF32",e||va)}function B(g,e,h,n){var t=Ma.toTypedArray();t[0]=g;t[1]=e;t[2]=h;t[3]=n;return va}function D(g){for(var e=new Float32Array(4),h=0;4>h;h++)e[h]=a.HEAPF32[g/4+h];return e}function u(g,e){return l(g,"HEAPF32",e||X)}function F(g,e){return l(g, "HEAPF32",e||Eb)}a.Color=function(g,e,h,n){void 0===n&&(n=1);return a.Color4f(f(g)/255,f(e)/255,f(h)/255,n)};a.ColorAsInt=function(g,e,h,n){void 0===n&&(n=255);return(f(n)<<24|f(g)<<16|f(e)<<8|f(h)<<0&268435455)>>>0};a.Color4f=function(g,e,h,n){void 0===n&&(n=1);return Float32Array.of(g,e,h,n)};Object.defineProperty(a,"TRANSPARENT",{get:function(){return a.Color4f(0,0,0,0)}});Object.defineProperty(a,"BLACK",{get:function(){return a.Color4f(0,0,0,1)}});Object.defineProperty(a,"WHITE",{get:function(){return a.Color4f(1, 1,1,1)}});Object.defineProperty(a,"RED",{get:function(){return a.Color4f(1,0,0,1)}});Object.defineProperty(a,"GREEN",{get:function(){return a.Color4f(0,1,0,1)}});Object.defineProperty(a,"BLUE",{get:function(){return a.Color4f(0,0,1,1)}});Object.defineProperty(a,"YELLOW",{get:function(){return a.Color4f(1,1,0,1)}});Object.defineProperty(a,"CYAN",{get:function(){return a.Color4f(0,1,1,1)}});Object.defineProperty(a,"MAGENTA",{get:function(){return a.Color4f(1,0,1,1)}});a.getColorComponents=function(g){return[Math.floor(255* g[0]),Math.floor(255*g[1]),Math.floor(255*g[2]),g[3]]};a.parseColorString=function(g,e){g=g.toLowerCase();if(g.startsWith("#")){e=255;switch(g.length){case 9:e=parseInt(g.slice(7,9),16);case 7:var h=parseInt(g.slice(1,3),16);var n=parseInt(g.slice(3,5),16);var t=parseInt(g.slice(5,7),16);break;case 5:e=17*parseInt(g.slice(4,5),16);case 4:h=17*parseInt(g.slice(1,2),16),n=17*parseInt(g.slice(2,3),16),t=17*parseInt(g.slice(3,4),16)}return a.Color(h,n,t,e/255)}return g.startsWith("rgba")?(g=g.slice(5, -1),g=g.split(","),a.Color(+g[0],+g[1],+g[2],d(g[3]))):g.startsWith("rgb")?(g=g.slice(4,-1),g=g.split(","),a.Color(+g[0],+g[1],+g[2],d(g[3]))):g.startsWith("gray(")||g.startsWith("hsl")||!e||(g=e[g],void 0===g)?a.BLACK:g};a.multiplyByAlpha=function(g,e){g=g.slice();g[3]=Math.max(0,Math.min(g[3]*e,1));return g};a.Malloc=function(g,e){var h=a._malloc(e*g.BYTES_PER_ELEMENT);return{_ck:!0,length:e,byteOffset:h,be:null,subarray:function(n,t){n=this.toTypedArray().subarray(n,t);n._ck=!0;return n},toTypedArray:function(){if(this.be&& this.be.length)return this.be;this.be=new g(a.HEAPU8.buffer,h,e);this.be._ck=!0;return this.be}}};a.Free=function(g){a._free(g.byteOffset);g.byteOffset=M;g.toTypedArray=null;g.be=null};var H=M,T,ca=M,Y,va=M,Ma,na,X=M,fc,Ba=M,gc,Fb=M,hc,Gb=M,hb,Sa=M,ic,Eb=M,jc,kc=M,fd=Float32Array.of(0,0,1),M=0;a.onRuntimeInitialized=function(){function g(e,h,n,t,x,z,E){z||(z=4*t.width,t.colorType===a.ColorType.RGBA_F16?z*=2:t.colorType===a.ColorType.RGBA_F32&&(z*=4));var J=z*t.height;var I=x?x.byteOffset:a._malloc(J); if(E?!e._readPixels(t,I,z,h,n,E):!e._readPixels(t,I,z,h,n))return x||a._free(I),null;if(x)return x.toTypedArray();switch(t.colorType){case a.ColorType.RGBA_8888:case a.ColorType.RGBA_F16:e=(new Uint8Array(a.HEAPU8.buffer,I,J)).slice();break;case a.ColorType.RGBA_F32:e=(new Float32Array(a.HEAPU8.buffer,I,J)).slice();break;default:return null}a._free(I);return e}Ma=a.Malloc(Float32Array,4);va=Ma.byteOffset;Y=a.Malloc(Float32Array,16);ca=Y.byteOffset;T=a.Malloc(Float32Array,9);H=T.byteOffset;ic=a.Malloc(Float32Array, 12);Eb=ic.byteOffset;jc=a.Malloc(Float32Array,12);kc=jc.byteOffset;na=a.Malloc(Float32Array,4);X=na.byteOffset;fc=a.Malloc(Float32Array,4);Ba=fc.byteOffset;gc=a.Malloc(Float32Array,3);Fb=gc.byteOffset;hc=a.Malloc(Float32Array,3);Gb=hc.byteOffset;hb=a.Malloc(Int32Array,4);Sa=hb.byteOffset;a.ColorSpace.SRGB=a.ColorSpace._MakeSRGB();a.ColorSpace.DISPLAY_P3=a.ColorSpace._MakeDisplayP3();a.ColorSpace.ADOBE_RGB=a.ColorSpace._MakeAdobeRGB();a.GlyphRunFlags={IsWhiteSpace:a._GlyphRunFlags_isWhiteSpace};a.Path.MakeFromCmds= function(e){var h=l(e,"HEAPF32"),n=a.Path._MakeFromCmds(h,e.length);k(h,e);return n};a.Path.MakeFromVerbsPointsWeights=function(e,h,n){var t=l(e,"HEAPU8"),x=l(h,"HEAPF32"),z=l(n,"HEAPF32"),E=a.Path._MakeFromVerbsPointsWeights(t,e.length,x,h.length,z,n&&n.length||0);k(t,e);k(x,h);k(z,n);return E};a.Path.prototype.addArc=function(e,h,n){e=u(e);this._addArc(e,h,n);return this};a.Path.prototype.addCircle=function(e,h,n,t){this._addCircle(e,h,n,!!t);return this};a.Path.prototype.addOval=function(e,h,n){void 0=== n&&(n=1);e=u(e);this._addOval(e,!!h,n);return this};a.Path.prototype.addPath=function(){var e=Array.prototype.slice.call(arguments),h=e[0],n=!1;"boolean"===typeof e[e.length-1]&&(n=e.pop());if(1===e.length)this._addPath(h,1,0,0,0,1,0,0,0,1,n);else if(2===e.length)e=e[1],this._addPath(h,e[0],e[1],e[2],e[3],e[4],e[5],e[6]||0,e[7]||0,e[8]||1,n);else if(7===e.length||10===e.length)this._addPath(h,e[1],e[2],e[3],e[4],e[5],e[6],e[7]||0,e[8]||0,e[9]||1,n);else return null;return this};a.Path.prototype.addPoly= function(e,h){var n=l(e,"HEAPF32");this._addPoly(n,e.length/2,h);k(n,e);return this};a.Path.prototype.addRect=function(e,h){e=u(e);this._addRect(e,!!h);return this};a.Path.prototype.addRRect=function(e,h){e=F(e);this._addRRect(e,!!h);return this};a.Path.prototype.addVerbsPointsWeights=function(e,h,n){var t=l(e,"HEAPU8"),x=l(h,"HEAPF32"),z=l(n,"HEAPF32");this._addVerbsPointsWeights(t,e.length,x,h.length,z,n&&n.length||0);k(t,e);k(x,h);k(z,n)};a.Path.prototype.arc=function(e,h,n,t,x,z){e=a.LTRBRect(e- n,h-n,e+n,h+n);x=(x-t)/Math.PI*180-360*!!z;z=new a.Path;z.addArc(e,t/Math.PI*180,x);this.addPath(z,!0);z.delete();return this};a.Path.prototype.arcToOval=function(e,h,n,t){e=u(e);this._arcToOval(e,h,n,t);return this};a.Path.prototype.arcToRotated=function(e,h,n,t,x,z,E){this._arcToRotated(e,h,n,!!t,!!x,z,E);return this};a.Path.prototype.arcToTangent=function(e,h,n,t,x){this._arcToTangent(e,h,n,t,x);return this};a.Path.prototype.close=function(){this._close();return this};a.Path.prototype.conicTo= function(e,h,n,t,x){this._conicTo(e,h,n,t,x);return this};a.Path.prototype.computeTightBounds=function(e){this._computeTightBounds(X);var h=na.toTypedArray();return e?(e.set(h),e):h.slice()};a.Path.prototype.cubicTo=function(e,h,n,t,x,z){this._cubicTo(e,h,n,t,x,z);return this};a.Path.prototype.dash=function(e,h,n){return this._dash(e,h,n)?this:null};a.Path.prototype.getBounds=function(e){this._getBounds(X);var h=na.toTypedArray();return e?(e.set(h),e):h.slice()};a.Path.prototype.lineTo=function(e, h){this._lineTo(e,h);return this};a.Path.prototype.moveTo=function(e,h){this._moveTo(e,h);return this};a.Path.prototype.offset=function(e,h){this._transform(1,0,e,0,1,h,0,0,1);return this};a.Path.prototype.quadTo=function(e,h,n,t){this._quadTo(e,h,n,t);return this};a.Path.prototype.rArcTo=function(e,h,n,t,x,z,E){this._rArcTo(e,h,n,t,x,z,E);return this};a.Path.prototype.rConicTo=function(e,h,n,t,x){this._rConicTo(e,h,n,t,x);return this};a.Path.prototype.rCubicTo=function(e,h,n,t,x,z){this._rCubicTo(e, h,n,t,x,z);return this};a.Path.prototype.rLineTo=function(e,h){this._rLineTo(e,h);return this};a.Path.prototype.rMoveTo=function(e,h){this._rMoveTo(e,h);return this};a.Path.prototype.rQuadTo=function(e,h,n,t){this._rQuadTo(e,h,n,t);return this};a.Path.prototype.stroke=function(e){e=e||{};e.width=e.width||1;e.miter_limit=e.miter_limit||4;e.cap=e.cap||a.StrokeCap.Butt;e.join=e.join||a.StrokeJoin.Miter;e.precision=e.precision||1;return this._stroke(e)?this:null};a.Path.prototype.transform=function(){if(1=== arguments.length){var e=arguments[0];this._transform(e[0],e[1],e[2],e[3],e[4],e[5],e[6]||0,e[7]||0,e[8]||1)}else if(6===arguments.length||9===arguments.length)e=arguments,this._transform(e[0],e[1],e[2],e[3],e[4],e[5],e[6]||0,e[7]||0,e[8]||1);else throw"transform expected to take 1 or 9 arguments. Got "+arguments.length;return this};a.Path.prototype.trim=function(e,h,n){return this._trim(e,h,!!n)?this:null};a.Image.prototype.encodeToBytes=function(e,h){var n=a.ne();e=e||a.ImageFormat.PNG;h=h||100; return n?this._encodeToBytes(e,h,n):this._encodeToBytes(e,h)};a.Image.prototype.makeShaderCubic=function(e,h,n,t,x){x=p(x);return this._makeShaderCubic(e,h,n,t,x)};a.Image.prototype.makeShaderOptions=function(e,h,n,t,x){x=p(x);return this._makeShaderOptions(e,h,n,t,x)};a.Image.prototype.readPixels=function(e,h,n,t,x){var z=a.ne();return g(this,e,h,n,t,x,z)};a.Canvas.prototype.clear=function(e){a.Jd(this.Id);e=y(e);this._clear(e)};a.Canvas.prototype.clipRRect=function(e,h,n){a.Jd(this.Id);e=F(e);this._clipRRect(e, h,n)};a.Canvas.prototype.clipRect=function(e,h,n){a.Jd(this.Id);e=u(e);this._clipRect(e,h,n)};a.Canvas.prototype.concat=function(e){a.Jd(this.Id);e=w(e);this._concat(e)};a.Canvas.prototype.drawArc=function(e,h,n,t,x){a.Jd(this.Id);e=u(e);this._drawArc(e,h,n,t,x)};a.Canvas.prototype.drawAtlas=function(e,h,n,t,x,z,E){if(e&&t&&h&&n&&h.length===n.length){a.Jd(this.Id);x||(x=a.BlendMode.SrcOver);var J=l(h,"HEAPF32"),I=l(n,"HEAPF32"),U=n.length/4,V=l(c(z),"HEAPU32");if(E&&"B"in E&&"C"in E)this._drawAtlasCubic(e, I,J,V,U,x,E.B,E.C,t);else{let q=a.FilterMode.Linear,A=a.MipmapMode.None;E&&(q=E.filter,"mipmap"in E&&(A=E.mipmap));this._drawAtlasOptions(e,I,J,V,U,x,q,A,t)}k(J,h);k(I,n);k(V,z)}};a.Canvas.prototype.drawCircle=function(e,h,n,t){a.Jd(this.Id);this._drawCircle(e,h,n,t)};a.Canvas.prototype.drawColor=function(e,h){a.Jd(this.Id);e=y(e);void 0!==h?this._drawColor(e,h):this._drawColor(e)};a.Canvas.prototype.drawColorInt=function(e,h){a.Jd(this.Id);this._drawColorInt(e,h||a.BlendMode.SrcOver)};a.Canvas.prototype.drawColorComponents= function(e,h,n,t,x){a.Jd(this.Id);e=B(e,h,n,t);void 0!==x?this._drawColor(e,x):this._drawColor(e)};a.Canvas.prototype.drawDRRect=function(e,h,n){a.Jd(this.Id);e=F(e,Eb);h=F(h,kc);this._drawDRRect(e,h,n)};a.Canvas.prototype.drawImage=function(e,h,n,t){a.Jd(this.Id);this._drawImage(e,h,n,t||null)};a.Canvas.prototype.drawImageCubic=function(e,h,n,t,x,z){a.Jd(this.Id);this._drawImageCubic(e,h,n,t,x,z||null)};a.Canvas.prototype.drawImageOptions=function(e,h,n,t,x,z){a.Jd(this.Id);this._drawImageOptions(e, h,n,t,x,z||null)};a.Canvas.prototype.drawImageNine=function(e,h,n,t,x){a.Jd(this.Id);h=l(h,"HEAP32",Sa);n=u(n);this._drawImageNine(e,h,n,t,x||null)};a.Canvas.prototype.drawImageRect=function(e,h,n,t,x){a.Jd(this.Id);u(h,X);u(n,Ba);this._drawImageRect(e,X,Ba,t,!!x)};a.Canvas.prototype.drawImageRectCubic=function(e,h,n,t,x,z){a.Jd(this.Id);u(h,X);u(n,Ba);this._drawImageRectCubic(e,X,Ba,t,x,z||null)};a.Canvas.prototype.drawImageRectOptions=function(e,h,n,t,x,z){a.Jd(this.Id);u(h,X);u(n,Ba);this._drawImageRectOptions(e, X,Ba,t,x,z||null)};a.Canvas.prototype.drawLine=function(e,h,n,t,x){a.Jd(this.Id);this._drawLine(e,h,n,t,x)};a.Canvas.prototype.drawOval=function(e,h){a.Jd(this.Id);e=u(e);this._drawOval(e,h)};a.Canvas.prototype.drawPaint=function(e){a.Jd(this.Id);this._drawPaint(e)};a.Canvas.prototype.drawParagraph=function(e,h,n){a.Jd(this.Id);this._drawParagraph(e,h,n)};a.Canvas.prototype.drawPatch=function(e,h,n,t,x){if(24>e.length)throw"Need 12 cubic points";if(h&&4>h.length)throw"Need 4 colors";if(n&&8>n.length)throw"Need 4 shader coordinates"; a.Jd(this.Id);const z=l(e,"HEAPF32"),E=h?l(c(h),"HEAPU32"):M,J=n?l(n,"HEAPF32"):M;t||(t=a.BlendMode.Modulate);this._drawPatch(z,E,J,t,x);k(J,n);k(E,h);k(z,e)};a.Canvas.prototype.drawPath=function(e,h){a.Jd(this.Id);this._drawPath(e,h)};a.Canvas.prototype.drawPicture=function(e){a.Jd(this.Id);this._drawPicture(e)};a.Canvas.prototype.drawPoints=function(e,h,n){a.Jd(this.Id);var t=l(h,"HEAPF32");this._drawPoints(e,t,h.length/2,n);k(t,h)};a.Canvas.prototype.drawRRect=function(e,h){a.Jd(this.Id);e=F(e); this._drawRRect(e,h)};a.Canvas.prototype.drawRect=function(e,h){a.Jd(this.Id);e=u(e);this._drawRect(e,h)};a.Canvas.prototype.drawRect4f=function(e,h,n,t,x){a.Jd(this.Id);this._drawRect4f(e,h,n,t,x)};a.Canvas.prototype.drawShadow=function(e,h,n,t,x,z,E){a.Jd(this.Id);var J=l(x,"HEAPF32"),I=l(z,"HEAPF32");h=l(h,"HEAPF32",Fb);n=l(n,"HEAPF32",Gb);this._drawShadow(e,h,n,t,J,I,E);k(J,x);k(I,z)};a.getShadowLocalBounds=function(e,h,n,t,x,z,E){e=p(e);n=l(n,"HEAPF32",Fb);t=l(t,"HEAPF32",Gb);if(!this._getShadowLocalBounds(e, h,n,t,x,z,X))return null;h=na.toTypedArray();return E?(E.set(h),E):h.slice()};a.Canvas.prototype.drawTextBlob=function(e,h,n,t){a.Jd(this.Id);this._drawTextBlob(e,h,n,t)};a.Canvas.prototype.drawVertices=function(e,h,n){a.Jd(this.Id);this._drawVertices(e,h,n)};a.Canvas.prototype.getDeviceClipBounds=function(e){this._getDeviceClipBounds(Sa);var h=hb.toTypedArray();e?e.set(h):e=h.slice();return e};a.Canvas.prototype.getLocalToDevice=function(){this._getLocalToDevice(ca);for(var e=ca,h=Array(16),n=0;16> n;n++)h[n]=a.HEAPF32[e/4+n];return h};a.Canvas.prototype.getTotalMatrix=function(){this._getTotalMatrix(H);for(var e=Array(9),h=0;9>h;h++)e[h]=a.HEAPF32[H/4+h];return e};a.Canvas.prototype.makeSurface=function(e){e=this._makeSurface(e);e.Id=this.Id;return e};a.Canvas.prototype.readPixels=function(e,h,n,t,x){a.Jd(this.Id);return g(this,e,h,n,t,x)};a.Canvas.prototype.saveLayer=function(e,h,n,t){h=u(h);return this._saveLayer(e||null,h,n||null,t||0)};a.Canvas.prototype.writePixels=function(e,h,n,t,x, z,E,J){if(e.byteLength%(h*n))throw"pixels length must be a multiple of the srcWidth * srcHeight";a.Jd(this.Id);var I=e.byteLength/(h*n);z=z||a.AlphaType.Unpremul;E=E||a.ColorType.RGBA_8888;J=J||a.ColorSpace.SRGB;var U=I*h;I=l(e,"HEAPU8");h=this._writePixels({width:h,height:n,colorType:E,alphaType:z,colorSpace:J},I,U,t,x);k(I,e);return h};a.ColorFilter.MakeBlend=function(e,h,n){e=y(e);n=n||a.ColorSpace.SRGB;return a.ColorFilter._MakeBlend(e,h,n)};a.ColorFilter.MakeMatrix=function(e){if(!e||20!==e.length)throw"invalid color matrix"; var h=l(e,"HEAPF32"),n=a.ColorFilter._makeMatrix(h);k(h,e);return n};a.ContourMeasure.prototype.getPosTan=function(e,h){this._getPosTan(e,X);e=na.toTypedArray();return h?(h.set(e),h):e.slice()};a.ImageFilter.prototype.getOutputBounds=function(e,h,n){e=u(e,X);h=p(h);this._getOutputBounds(e,h,Sa);h=hb.toTypedArray();return n?(n.set(h),n):h.slice()};a.ImageFilter.MakeDropShadow=function(e,h,n,t,x,z){x=y(x,va);return a.ImageFilter._MakeDropShadow(e,h,n,t,x,z)};a.ImageFilter.MakeDropShadowOnly=function(e, h,n,t,x,z){x=y(x,va);return a.ImageFilter._MakeDropShadowOnly(e,h,n,t,x,z)};a.ImageFilter.MakeImage=function(e,h,n,t){n=u(n,X);t=u(t,Ba);if("B"in h&&"C"in h)return a.ImageFilter._MakeImageCubic(e,h.B,h.C,n,t);const x=h.filter;let z=a.MipmapMode.None;"mipmap"in h&&(z=h.mipmap);return a.ImageFilter._MakeImageOptions(e,x,z,n,t)};a.ImageFilter.MakeMatrixTransform=function(e,h,n){e=p(e);if("B"in h&&"C"in h)return a.ImageFilter._MakeMatrixTransformCubic(e,h.B,h.C,n);const t=h.filter;let x=a.MipmapMode.None; "mipmap"in h&&(x=h.mipmap);return a.ImageFilter._MakeMatrixTransformOptions(e,t,x,n)};a.Paint.prototype.getColor=function(){this._getColor(va);return D(va)};a.Paint.prototype.setColor=function(e,h){h=h||null;e=y(e);this._setColor(e,h)};a.Paint.prototype.setColorComponents=function(e,h,n,t,x){x=x||null;e=B(e,h,n,t);this._setColor(e,x)};a.Path.prototype.getPoint=function(e,h){this._getPoint(e,X);e=na.toTypedArray();return h?(h[0]=e[0],h[1]=e[1],h):e.slice(0,2)};a.Picture.prototype.makeShader=function(e, h,n,t,x){t=p(t);x=u(x);return this._makeShader(e,h,n,t,x)};a.Picture.prototype.cullRect=function(e){this._cullRect(X);var h=na.toTypedArray();return e?(e.set(h),e):h.slice()};a.PictureRecorder.prototype.beginRecording=function(e,h){e=u(e);return this._beginRecording(e,!!h)};a.Surface.prototype.getCanvas=function(){var e=this._getCanvas();e.Id=this.Id;return e};a.Surface.prototype.makeImageSnapshot=function(e){a.Jd(this.Id);e=l(e,"HEAP32",Sa);return this._makeImageSnapshot(e)};a.Surface.prototype.makeSurface= function(e){a.Jd(this.Id);e=this._makeSurface(e);e.Id=this.Id;return e};a.Surface.prototype.Te=function(e,h){this.ge||(this.ge=this.getCanvas());return requestAnimationFrame(function(){a.Jd(this.Id);e(this.ge);this.flush(h)}.bind(this))};a.Surface.prototype.requestAnimationFrame||(a.Surface.prototype.requestAnimationFrame=a.Surface.prototype.Te);a.Surface.prototype.Qe=function(e,h){this.ge||(this.ge=this.getCanvas());requestAnimationFrame(function(){a.Jd(this.Id);e(this.ge);this.flush(h);this.dispose()}.bind(this))}; a.Surface.prototype.drawOnce||(a.Surface.prototype.drawOnce=a.Surface.prototype.Qe);a.PathEffect.MakeDash=function(e,h){h||(h=0);if(!e.length||1===e.length%2)throw"Intervals array must have even length";var n=l(e,"HEAPF32");h=a.PathEffect._MakeDash(n,e.length,h);k(n,e);return h};a.PathEffect.MakeLine2D=function(e,h){h=p(h);return a.PathEffect._MakeLine2D(e,h)};a.PathEffect.MakePath2D=function(e,h){e=p(e);return a.PathEffect._MakePath2D(e,h)};a.Shader.MakeColor=function(e,h){h=h||null;e=y(e);return a.Shader._MakeColor(e, h)};a.Shader.Blend=a.Shader.MakeBlend;a.Shader.Color=a.Shader.MakeColor;a.Shader.MakeLinearGradient=function(e,h,n,t,x,z,E,J){J=J||null;var I=m(n),U=l(t,"HEAPF32");E=E||0;z=p(z);var V=na.toTypedArray();V.set(e);V.set(h,2);e=a.Shader._MakeLinearGradient(X,I.Rd,I.colorType,U,I.count,x,E,z,J);k(I.Rd,n);t&&k(U,t);return e};a.Shader.MakeRadialGradient=function(e,h,n,t,x,z,E,J){J=J||null;var I=m(n),U=l(t,"HEAPF32");E=E||0;z=p(z);e=a.Shader._MakeRadialGradient(e[0],e[1],h,I.Rd,I.colorType,U,I.count,x,E, z,J);k(I.Rd,n);t&&k(U,t);return e};a.Shader.MakeSweepGradient=function(e,h,n,t,x,z,E,J,I,U){U=U||null;var V=m(n),q=l(t,"HEAPF32");E=E||0;J=J||0;I=I||360;z=p(z);e=a.Shader._MakeSweepGradient(e,h,V.Rd,V.colorType,q,V.count,x,J,I,E,z,U);k(V.Rd,n);t&&k(q,t);return e};a.Shader.MakeTwoPointConicalGradient=function(e,h,n,t,x,z,E,J,I,U){U=U||null;var V=m(x),q=l(z,"HEAPF32");I=I||0;J=p(J);var A=na.toTypedArray();A.set(e);A.set(n,2);e=a.Shader._MakeTwoPointConicalGradient(X,h,t,V.Rd,V.colorType,q,V.count,E, I,J,U);k(V.Rd,x);z&&k(q,z);return e};a.Vertices.prototype.bounds=function(e){this._bounds(X);var h=na.toTypedArray();return e?(e.set(h),e):h.slice()};a.Md&&a.Md.forEach(function(e){e()})};a.computeTonalColors=function(g){var e=l(g.ambient,"HEAPF32"),h=l(g.spot,"HEAPF32");this._computeTonalColors(e,h);var n={ambient:D(e),spot:D(h)};k(e,g.ambient);k(h,g.spot);return n};a.LTRBRect=function(g,e,h,n){return Float32Array.of(g,e,h,n)};a.XYWHRect=function(g,e,h,n){return Float32Array.of(g,e,g+h,e+n)};a.LTRBiRect= function(g,e,h,n){return Int32Array.of(g,e,h,n)};a.XYWHiRect=function(g,e,h,n){return Int32Array.of(g,e,g+h,e+n)};a.RRectXY=function(g,e,h){return Float32Array.of(g[0],g[1],g[2],g[3],e,h,e,h,e,h,e,h)};a.MakeAnimatedImageFromEncoded=function(g){g=new Uint8Array(g);var e=a._malloc(g.byteLength);a.HEAPU8.set(g,e);return(g=a._decodeAnimatedImage(e,g.byteLength))?g:null};a.MakeImageFromEncoded=function(g){g=new Uint8Array(g);var e=a._malloc(g.byteLength);a.HEAPU8.set(g,e);return(g=a._decodeImage(e,g.byteLength))? g:null};var Ta=null;a.MakeImageFromCanvasImageSource=function(g){var e=g.width,h=g.height;Ta||(Ta=document.createElement("canvas"));Ta.width=e;Ta.height=h;var n=Ta.getContext("2d",{willReadFrequently:!0});n.drawImage(g,0,0);g=n.getImageData(0,0,e,h);return a.MakeImage({width:e,height:h,alphaType:a.AlphaType.Unpremul,colorType:a.ColorType.RGBA_8888,colorSpace:a.ColorSpace.SRGB},g.data,4*e)};a.MakeImage=function(g,e,h){var n=a._malloc(e.length);a.HEAPU8.set(e,n);return a._MakeImage(g,n,e.length,h)}; a.MakeVertices=function(g,e,h,n,t,x){var z=t&&t.length||0,E=0;h&&h.length&&(E|=1);n&&n.length&&(E|=2);void 0===x||x||(E|=4);g=new a._VerticesBuilder(g,e.length/2,z,E);l(e,"HEAPF32",g.positions());g.texCoords()&&l(h,"HEAPF32",g.texCoords());g.colors()&&l(c(n),"HEAPU32",g.colors());g.indices()&&l(t,"HEAPU16",g.indices());return g.detach()};(function(g){g.Md=g.Md||[];g.Md.push(function(){function e(q){q&&(q.dir=0===q.dir?g.TextDirection.RTL:g.TextDirection.LTR);return q}function h(q){if(!q||!q.length)return[]; for(var A=[],P=0;Pe)return a._free(g),null;t=new Uint16Array(a.HEAPU8.buffer,g,e);if(h)return h.set(t),a._free(g),h;h=Uint16Array.from(t);a._free(g);return h};a.Font.prototype.getGlyphIntercepts=function(g,e,h,n){var t=l(g,"HEAPU16"),x=l(e,"HEAPF32");return this._getGlyphIntercepts(t, g.length,!(g&&g._ck),x,e.length,!(e&&e._ck),h,n)};a.Font.prototype.getGlyphWidths=function(g,e,h){var n=l(g,"HEAPU16"),t=a._malloc(4*g.length);this._getGlyphWidthBounds(n,g.length,t,M,e||null);e=new Float32Array(a.HEAPU8.buffer,t,g.length);k(n,g);if(h)return h.set(e),a._free(t),h;g=Float32Array.from(e);a._free(t);return g};a.FontMgr.FromData=function(){if(!arguments.length)return null;var g=arguments;1===g.length&&Array.isArray(g[0])&&(g=arguments[0]);if(!g.length)return null;for(var e=[],h=[],n= 0;ne)return a._free(g),null;t=new Uint16Array(a.HEAPU8.buffer,g,e);if(h)return h.set(t),a._free(g),h;h=Uint16Array.from(t);a._free(g);return h};a.TextBlob.MakeOnPath=function(g,e,h,n){if(g&&g.length&&e&&e.countPoints()){if(1===e.countPoints())return this.MakeFromText(g,h);n||(n=0);var t=h.getGlyphIDs(g);t=h.getGlyphWidths(t);var x=[];e=new a.ContourMeasureIter(e,!1,1);for(var z=e.next(),E=new Float32Array(4),J=0;Jz.length()){z.delete();z=e.next();if(!z){g=g.substring(0,J);break}n=I/2}z.getPosTan(n,E);var U=E[2],V=E[3];x.push(U,V,E[0]-I/2*U,E[1]-I/2*V);n+=I/2}g=this.MakeFromRSXform(g,x,h);z&&z.delete();e.delete();return g}};a.TextBlob.MakeFromRSXform=function(g,e,h){var n=ja(g)+1,t=a._malloc(n);ka(g,C,t,n);g=l(e,"HEAPF32");h=a.TextBlob._MakeFromRSXform(t,n-1,g,h);a._free(t);return h?h:null};a.TextBlob.MakeFromRSXformGlyphs=function(g,e,h){var n=l(g,"HEAPU16");e=l(e,"HEAPF32"); h=a.TextBlob._MakeFromRSXformGlyphs(n,2*g.length,e,h);k(n,g);return h?h:null};a.TextBlob.MakeFromGlyphs=function(g,e){var h=l(g,"HEAPU16");e=a.TextBlob._MakeFromGlyphs(h,2*g.length,e);k(h,g);return e?e:null};a.TextBlob.MakeFromText=function(g,e){var h=ja(g)+1,n=a._malloc(h);ka(g,C,n,h);g=a.TextBlob._MakeFromText(n,h-1,e);a._free(n);return g?g:null};a.MallocGlyphIDs=function(g){return a.Malloc(Uint16Array,g)}});a.Md=a.Md||[];a.Md.push(function(){a.MakePicture=function(g){g=new Uint8Array(g);var e= a._malloc(g.byteLength);a.HEAPU8.set(g,e);return(g=a._MakePicture(e,g.byteLength))?g:null}});a.Md=a.Md||[];a.Md.push(function(){a.RuntimeEffect.Make=function(g,e){return a.RuntimeEffect._Make(g,{onError:e||function(h){console.log("RuntimeEffect error",h)}})};a.RuntimeEffect.MakeForBlender=function(g,e){return a.RuntimeEffect._MakeForBlender(g,{onError:e||function(h){console.log("RuntimeEffect error",h)}})};a.RuntimeEffect.prototype.makeShader=function(g,e){var h=!g._ck,n=l(g,"HEAPF32");e=p(e);return this._makeShader(n, 4*g.length,h,e)};a.RuntimeEffect.prototype.makeShaderWithChildren=function(g,e,h){var n=!g._ck,t=l(g,"HEAPF32");h=p(h);for(var x=[],z=0;z{throw b;},pa="object"==typeof window,ra="function"==typeof importScripts,sa="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,ta="",ua,wa,xa; if(sa){var fs=require("fs"),ya=require("path");ta=ra?ya.dirname(ta)+"/":__dirname+"/";ua=(a,b)=>{a=a.startsWith("file://")?new URL(a):ya.normalize(a);return fs.readFileSync(a,b?void 0:"utf8")};xa=a=>{a=ua(a,!0);a.buffer||(a=new Uint8Array(a));return a};wa=(a,b,c,d=!0)=>{a=a.startsWith("file://")?new URL(a):ya.normalize(a);fs.readFile(a,d?void 0:"utf8",(f,k)=>{f?c(f):b(d?k.buffer:k)})};!r.thisProgram&&1{process.exitCode= a;throw b;};r.inspect=()=>"[Emscripten Module object]"}else if(pa||ra)ra?ta=self.location.href:"undefined"!=typeof document&&document.currentScript&&(ta=document.currentScript.src),_scriptDir&&(ta=_scriptDir),0!==ta.indexOf("blob:")?ta=ta.substr(0,ta.replace(/[?#].*/,"").lastIndexOf("/")+1):ta="",ua=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.send(null);return b.responseText},ra&&(xa=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}), wa=(a,b,c)=>{var d=new XMLHttpRequest;d.open("GET",a,!0);d.responseType="arraybuffer";d.onload=()=>{200==d.status||0==d.status&&d.response?b(d.response):c()};d.onerror=c;d.send(null)};var Aa=r.print||console.log.bind(console),Ca=r.printErr||console.error.bind(console);Object.assign(r,la);la=null;r.thisProgram&&(ma=r.thisProgram);r.quit&&(oa=r.quit);var Da;r.wasmBinary&&(Da=r.wasmBinary);var noExitRuntime=r.noExitRuntime||!0;"object"!=typeof WebAssembly&&Ea("no native wasm support detected"); var Fa,G,Ga=!1,Ha,C,Ia,Ja,K,L,N,Ka;function La(){var a=Fa.buffer;r.HEAP8=Ha=new Int8Array(a);r.HEAP16=Ia=new Int16Array(a);r.HEAP32=K=new Int32Array(a);r.HEAPU8=C=new Uint8Array(a);r.HEAPU16=Ja=new Uint16Array(a);r.HEAPU32=L=new Uint32Array(a);r.HEAPF32=N=new Float32Array(a);r.HEAPF64=Ka=new Float64Array(a)}var Na,Oa=[],Pa=[],Qa=[];function Ra(){var a=r.preRun.shift();Oa.unshift(a)}var Ua=0,Va=null,Wa=null; function Ea(a){if(r.onAbort)r.onAbort(a);a="Aborted("+a+")";Ca(a);Ga=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");ba(a);throw a;}function Xa(a){return a.startsWith("data:application/octet-stream;base64,")}var Ya;Ya="canvaskit.wasm";if(!Xa(Ya)){var Za=Ya;Ya=r.locateFile?r.locateFile(Za,ta):ta+Za}function $a(a){if(a==Ya&&Da)return new Uint8Array(Da);if(xa)return xa(a);throw"both async and sync fetching of the wasm failed";} function ab(a){if(!Da&&(pa||ra)){if("function"==typeof fetch&&!a.startsWith("file://"))return fetch(a,{credentials:"same-origin"}).then(b=>{if(!b.ok)throw"failed to load wasm binary file at '"+a+"'";return b.arrayBuffer()}).catch(()=>$a(a));if(wa)return new Promise((b,c)=>{wa(a,d=>b(new Uint8Array(d)),c)})}return Promise.resolve().then(()=>$a(a))}function bb(a,b,c){return ab(a).then(d=>WebAssembly.instantiate(d,b)).then(d=>d).then(c,d=>{Ca("failed to asynchronously prepare wasm: "+d);Ea(d)})} function cb(a,b){var c=Ya;return Da||"function"!=typeof WebAssembly.instantiateStreaming||Xa(c)||c.startsWith("file://")||sa||"function"!=typeof fetch?bb(c,a,b):fetch(c,{credentials:"same-origin"}).then(d=>WebAssembly.instantiateStreaming(d,a).then(b,function(f){Ca("wasm streaming compile failed: "+f);Ca("falling back to ArrayBuffer instantiation");return bb(c,a,b)}))}function db(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a}var eb=a=>{for(;0>2]=b};this.we=function(b){L[this.Kd+8>>2]=b};this.Zd=function(b,c){this.ve();this.Pe(b);this.we(c)};this.ve=function(){L[this.Kd+16>>2]=0}} var gb=0,ib=0,jb="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,kb=(a,b,c)=>{var d=b+c;for(c=b;a[c]&&!(c>=d);)++c;if(16f?d+=String.fromCharCode(f):(f-=65536,d+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else d+=String.fromCharCode(f)}return d}, lb={};function mb(a){for(;a.length;){var b=a.pop();a.pop()(b)}}function nb(a){return this.fromWireType(K[a>>2])}var ob={},pb={},qb={},rb=void 0;function sb(a){throw new rb(a);} function tb(a,b,c){function d(m){m=c(m);m.length!==a.length&&sb("Mismatched type converter count");for(var p=0;p{pb.hasOwnProperty(m)?f[p]=pb[m]:(k.push(m),ob.hasOwnProperty(m)||(ob[m]=[]),ob[m].push(()=>{f[p]=pb[m];++l;l===k.length&&d(f)}))});0===k.length&&d(f)} function vb(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${a}`);}}var wb=void 0;function O(a){for(var b="";C[a];)b+=wb[C[a++]];return b}var xb=void 0;function Q(a){throw new xb(a);} function yb(a,b,c={}){var d=b.name;a||Q(`type "${d}" must have a positive integer typeid pointer`);if(pb.hasOwnProperty(a)){if(c.ff)return;Q(`Cannot register type '${d}' twice`)}pb[a]=b;delete qb[a];ob.hasOwnProperty(a)&&(b=ob[a],delete ob[a],b.forEach(f=>f()))}function ub(a,b,c={}){if(!("argPackAdvance"in b))throw new TypeError("registerType registeredInstance requires argPackAdvance");yb(a,b,c)}function zb(a){Q(a.kd.Nd.Ld.name+" instance already deleted")}var Ab=!1;function Bb(){} function Cb(a){--a.count.value;0===a.count.value&&(a.Pd?a.Td.Xd(a.Pd):a.Nd.Ld.Xd(a.Kd))}function Db(a,b,c){if(b===c)return a;if(void 0===c.Qd)return null;a=Db(a,b,c.Qd);return null===a?null:c.Ye(a)}var Jb={},Kb=[];function Lb(){for(;Kb.length;){var a=Kb.pop();a.kd.ee=!1;a["delete"]()}}var Mb=void 0,Nb={};function Ob(a,b){for(void 0===b&&Q("ptr should not be undefined");a.Qd;)b=a.ke(b),a=a.Qd;return Nb[b]} function Pb(a,b){b.Nd&&b.Kd||sb("makeClassHandle requires ptr and ptrType");!!b.Td!==!!b.Pd&&sb("Both smartPtrType and smartPtr must be specified");b.count={value:1};return Qb(Object.create(a,{kd:{value:b}}))}function Qb(a){if("undefined"===typeof FinalizationRegistry)return Qb=b=>b,a;Ab=new FinalizationRegistry(b=>{Cb(b.kd)});Qb=b=>{var c=b.kd;c.Pd&&Ab.register(b,{kd:c},b);return b};Bb=b=>{Ab.unregister(b)};return Qb(a)}function Rb(){} function Sb(a){if(void 0===a)return"_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?`_${a}`:a}function Tb(a,b){a=Sb(a);return{[a]:function(){return b.apply(this,arguments)}}[a]} function Ub(a,b,c){if(void 0===a[b].Od){var d=a[b];a[b]=function(){a[b].Od.hasOwnProperty(arguments.length)||Q(`Function '${c}' called with an invalid number of arguments (${arguments.length}) - expects one of (${a[b].Od})!`);return a[b].Od[arguments.length].apply(this,arguments)};a[b].Od=[];a[b].Od[d.ce]=d}} function Vb(a,b,c){r.hasOwnProperty(a)?((void 0===c||void 0!==r[a].Od&&void 0!==r[a].Od[c])&&Q(`Cannot register public name '${a}' twice`),Ub(r,a,a),r.hasOwnProperty(c)&&Q(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`),r[a].Od[c]=b):(r[a]=b,void 0!==c&&(r[a].xf=c))}function Wb(a,b,c,d,f,k,l,m){this.name=a;this.constructor=b;this.fe=c;this.Xd=d;this.Qd=f;this.af=k;this.ke=l;this.Ye=m;this.kf=[]} function Xb(a,b,c){for(;b!==c;)b.ke||Q(`Expected null or instance of ${c.name}, got an instance of ${b.name}`),a=b.ke(a),b=b.Qd;return a}function Yb(a,b){if(null===b)return this.Ae&&Q(`null is not a valid ${this.name}`),0;b.kd||Q(`Cannot pass "${Zb(b)}" as a ${this.name}`);b.kd.Kd||Q(`Cannot pass deleted object as a pointer of type ${this.name}`);return Xb(b.kd.Kd,b.kd.Nd.Ld,this.Ld)} function $b(a,b){if(null===b){this.Ae&&Q(`null is not a valid ${this.name}`);if(this.pe){var c=this.Be();null!==a&&a.push(this.Xd,c);return c}return 0}b.kd||Q(`Cannot pass "${Zb(b)}" as a ${this.name}`);b.kd.Kd||Q(`Cannot pass deleted object as a pointer of type ${this.name}`);!this.oe&&b.kd.Nd.oe&&Q(`Cannot convert argument of type ${b.kd.Td?b.kd.Td.name:b.kd.Nd.name} to parameter type ${this.name}`);c=Xb(b.kd.Kd,b.kd.Nd.Ld,this.Ld);if(this.pe)switch(void 0===b.kd.Pd&&Q("Passing raw pointer to smart pointer is illegal"), this.qf){case 0:b.kd.Td===this?c=b.kd.Pd:Q(`Cannot convert argument of type ${b.kd.Td?b.kd.Td.name:b.kd.Nd.name} to parameter type ${this.name}`);break;case 1:c=b.kd.Pd;break;case 2:if(b.kd.Td===this)c=b.kd.Pd;else{var d=b.clone();c=this.lf(c,ac(function(){d["delete"]()}));null!==a&&a.push(this.Xd,c)}break;default:Q("Unsupporting sharing policy")}return c} function bc(a,b){if(null===b)return this.Ae&&Q(`null is not a valid ${this.name}`),0;b.kd||Q(`Cannot pass "${Zb(b)}" as a ${this.name}`);b.kd.Kd||Q(`Cannot pass deleted object as a pointer of type ${this.name}`);b.kd.Nd.oe&&Q(`Cannot convert argument of type ${b.kd.Nd.name} to parameter type ${this.name}`);return Xb(b.kd.Kd,b.kd.Nd.Ld,this.Ld)} function cc(a,b,c,d,f,k,l,m,p,w,y){this.name=a;this.Ld=b;this.Ae=c;this.oe=d;this.pe=f;this.jf=k;this.qf=l;this.Ke=m;this.Be=p;this.lf=w;this.Xd=y;f||void 0!==b.Qd?this.toWireType=$b:(this.toWireType=d?Yb:bc,this.Sd=null)}function dc(a,b,c){r.hasOwnProperty(a)||sb("Replacing nonexistant public symbol");void 0!==r[a].Od&&void 0!==c?r[a].Od[c]=b:(r[a]=b,r[a].ce=c)} var ec=(a,b)=>{var c=[];return function(){c.length=0;Object.assign(c,arguments);if(a.includes("j")){var d=r["dynCall_"+a];d=c&&c.length?d.apply(null,[b].concat(c)):d.call(null,b)}else d=Na.get(b).apply(null,c);return d}};function mc(a,b){a=O(a);var c=a.includes("j")?ec(a,b):Na.get(b);"function"!=typeof c&&Q(`unknown function pointer with signature ${a}: ${b}`);return c}var nc=void 0;function oc(a){a=pc(a);var b=O(a);qc(a);return b} function rc(a,b){function c(k){f[k]||pb[k]||(qb[k]?qb[k].forEach(c):(d.push(k),f[k]=!0))}var d=[],f={};b.forEach(c);throw new nc(`${a}: `+d.map(oc).join([", "]));} function sc(a,b,c,d,f){var k=b.length;2>k&&Q("argTypes array size mismatch! Must at least get return value and 'this' types!");var l=null!==b[1]&&null!==c,m=!1;for(c=1;c>2]);return c}function uc(){this.Wd=[void 0];this.Ie=[]}var vc=new uc;function wc(a){a>=vc.Zd&&0===--vc.get(a).Le&&vc.we(a)} var xc=a=>{a||Q("Cannot use deleted val. handle = "+a);return vc.get(a).value},ac=a=>{switch(a){case void 0:return 1;case null:return 2;case !0:return 3;case !1:return 4;default:return vc.ve({Le:1,value:a})}};function yc(a,b,c){switch(b){case 0:return function(d){return this.fromWireType((c?Ha:C)[d])};case 1:return function(d){return this.fromWireType((c?Ia:Ja)[d>>1])};case 2:return function(d){return this.fromWireType((c?K:L)[d>>2])};default:throw new TypeError("Unknown integer type: "+a);}} function zc(a,b){var c=pb[a];void 0===c&&Q(b+" has unknown type "+oc(a));return c}function Zb(a){if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a}function Ac(a,b){switch(b){case 2:return function(c){return this.fromWireType(N[c>>2])};case 3:return function(c){return this.fromWireType(Ka[c>>3])};default:throw new TypeError("Unknown float type: "+a);}} function Bc(a,b,c){switch(b){case 0:return c?function(d){return Ha[d]}:function(d){return C[d]};case 1:return c?function(d){return Ia[d>>1]}:function(d){return Ja[d>>1]};case 2:return c?function(d){return K[d>>2]}:function(d){return L[d>>2]};default:throw new TypeError("Unknown integer type: "+a);}} var ka=(a,b,c,d)=>{if(!(0=l){var m=a.charCodeAt(++k);l=65536+((l&1023)<<10)|m&1023}if(127>=l){if(c>=d)break;b[c++]=l}else{if(2047>=l){if(c+1>=d)break;b[c++]=192|l>>6}else{if(65535>=l){if(c+2>=d)break;b[c++]=224|l>>12}else{if(c+3>=d)break;b[c++]=240|l>>18;b[c++]=128|l>>12&63}b[c++]=128|l>>6&63}b[c++]=128|l&63}}b[c]=0;return c-f},ja=a=>{for(var b=0,c=0;c=d?b++:2047>= d?b+=2:55296<=d&&57343>=d?(b+=4,++c):b+=3}return b},Cc="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0,Dc=(a,b)=>{var c=a>>1;for(var d=c+b/2;!(c>=d)&&Ja[c];)++c;c<<=1;if(32=b/2);++d){var f=Ia[a+2*d>>1];if(0==f)break;c+=String.fromCharCode(f)}return c},Ec=(a,b,c)=>{void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var f=0;f>1]=a.charCodeAt(f),b+=2;Ia[b>>1]=0;return b-d}, Fc=a=>2*a.length,Gc=(a,b)=>{for(var c=0,d="";!(c>=b/4);){var f=K[a+4*c>>2];if(0==f)break;++c;65536<=f?(f-=65536,d+=String.fromCharCode(55296|f>>10,56320|f&1023)):d+=String.fromCharCode(f)}return d},Hc=(a,b,c)=>{void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var f=0;f=k){var l=a.charCodeAt(++f);k=65536+((k&1023)<<10)|l&1023}K[b>>2]=k;b+=4;if(b+4>c)break}K[b>>2]=0;return b-d},Ic=a=>{for(var b=0,c=0;c=d&&++c;b+=4}return b},Jc={};function Kc(a){var b=Jc[a];return void 0===b?O(a):b}var Lc=[]; function Mc(){function a(b){b.$$$embind_global$$$=b;var c="object"==typeof $$$embind_global$$$&&b.$$$embind_global$$$==b;c||delete b.$$$embind_global$$$;return c}if("object"==typeof globalThis)return globalThis;if("object"==typeof $$$embind_global$$$)return $$$embind_global$$$;"object"==typeof global&&a(global)?$$$embind_global$$$=global:"object"==typeof self&&a(self)&&($$$embind_global$$$=self);if("object"==typeof $$$embind_global$$$)return $$$embind_global$$$;throw Error("unable to get global object."); }function Nc(a){var b=Lc.length;Lc.push(a);return b}function Oc(a,b){for(var c=Array(a),d=0;d>2],"parameter "+d);return c}var Pc=[];function Qc(a){var b=Array(a+1);return function(c,d,f){b[0]=c;for(var k=0;k>2],"parameter "+k);b[k+1]=l.readValueFromPointer(f);f+=l.argPackAdvance}c=new (c.bind.apply(c,b));return ac(c)}}var Rc={}; function Sc(a){var b=a.getExtension("ANGLE_instanced_arrays");b&&(a.vertexAttribDivisor=function(c,d){b.vertexAttribDivisorANGLE(c,d)},a.drawArraysInstanced=function(c,d,f,k){b.drawArraysInstancedANGLE(c,d,f,k)},a.drawElementsInstanced=function(c,d,f,k,l){b.drawElementsInstancedANGLE(c,d,f,k,l)})} function Tc(a){var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=function(){return b.createVertexArrayOES()},a.deleteVertexArray=function(c){b.deleteVertexArrayOES(c)},a.bindVertexArray=function(c){b.bindVertexArrayOES(c)},a.isVertexArray=function(c){return b.isVertexArrayOES(c)})}function Uc(a){var b=a.getExtension("WEBGL_draw_buffers");b&&(a.drawBuffers=function(c,d){b.drawBuffersWEBGL(c,d)})} var Vc=1,Wc=[],Xc=[],Yc=[],Zc=[],ea=[],$c=[],ad=[],ia=[],bd=[],cd=[],dd={},ed={},gd=4;function R(a){hd||(hd=a)}function da(a){for(var b=Vc++,c=a.length;ca.version||!b.Ge)b.Ge=b.getExtension("EXT_disjoint_timer_query");b.wf=b.getExtension("WEBGL_multi_draw");(b.getSupportedExtensions()||[]).forEach(function(c){c.includes("lose_context")||c.includes("debug")||b.getExtension(c)})}} var v,hd,ld={},nd=()=>{if(!md){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:ma||"./this.program"},b;for(b in ld)void 0===ld[b]?delete a[b]:a[b]=ld[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);md=c}return md},md,od=[null,[],[]];function pd(a){S.bindVertexArray(ad[a])} function qd(a,b){for(var c=0;c>2];S.deleteVertexArray(ad[d]);ad[d]=null}}var rd=[];function sd(a,b,c,d){S.drawElements(a,b,c,d)}function td(a,b,c,d){for(var f=0;f>2]=l}}function ud(a,b){td(a,b,"createVertexArray",ad)} function vd(a,b,c){if(b){var d=void 0;switch(a){case 36346:d=1;break;case 36344:0!=c&&1!=c&&R(1280);return;case 34814:case 36345:d=0;break;case 34466:var f=S.getParameter(34467);d=f?f.length:0;break;case 33309:if(2>v.version){R(1282);return}d=2*(S.getSupportedExtensions()||[]).length;break;case 33307:case 33308:if(2>v.version){R(1280);return}d=33307==a?3:0}if(void 0===d)switch(f=S.getParameter(a),typeof f){case "number":d=f;break;case "boolean":d=f?1:0;break;case "string":R(1280);return;case "object":if(null=== f)switch(a){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:d=0;break;default:R(1280);return}else{if(f instanceof Float32Array||f instanceof Uint32Array||f instanceof Int32Array||f instanceof Array){for(a=0;a>2]=f[a];break;case 2:N[b+4*a>>2]=f[a];break;case 4:Ha[b+a>>0]=f[a]?1:0}return}try{d=f.name|0}catch(k){R(1280); Ca("GL_INVALID_ENUM in glGet"+c+"v: Unknown object returned from WebGL getParameter("+a+")! (error: "+k+")");return}}break;default:R(1280);Ca("GL_INVALID_ENUM in glGet"+c+"v: Native code calling glGet"+c+"v("+a+") and it returns "+f+" of type "+typeof f+"!");return}switch(c){case 1:c=d;L[b>>2]=c;L[b+4>>2]=(c-L[b>>2])/4294967296;break;case 0:K[b>>2]=d;break;case 2:N[b>>2]=d;break;case 4:Ha[b>>0]=d?1:0}}else R(1281)}var xd=a=>{var b=ja(a)+1,c=wd(b);c&&ka(a,C,c,b);return c}; function yd(a){return"]"==a.slice(-1)&&a.lastIndexOf("[")}function zd(a){a-=5120;return 0==a?Ha:1==a?C:2==a?Ia:4==a?K:6==a?N:5==a||28922==a||28520==a||30779==a||30782==a?L:Ja}function Ad(a,b,c,d,f){a=zd(a);var k=31-Math.clz32(a.BYTES_PER_ELEMENT),l=gd;return a.subarray(f>>k,f+d*(c*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[b-6402]||1)*(1<>k)} function W(a){var b=S.We;if(b){var c=b.je[a];"number"==typeof c&&(b.je[a]=c=S.getUniformLocation(b,b.Me[a]+(00===a%4&&(0!==a%100||0===a%400),Ed=[31,29,31,30,31,30,31,31,30,31,30,31],Fd=[31,28,31,30,31,30,31,31,30,31,30,31];function Gd(a){var b=Array(ja(a)+1);ka(a,b,0,b.length);return b} var Hd=(a,b,c,d)=>{function f(u,F,H){for(u="number"==typeof u?u.toString():u||"";u.lengthca?-1:0T-u.getDate())F-=T-u.getDate()+1,u.setDate(1),11>H?u.setMonth(H+1):(u.setMonth(0),u.setFullYear(u.getFullYear()+1));else{u.setDate(u.getDate()+F);break}}H=new Date(u.getFullYear()+1,0,4);F=m(new Date(u.getFullYear(), 0,4));H=m(H);return 0>=l(F,u)?0>=l(H,u)?u.getFullYear()+1:u.getFullYear():u.getFullYear()-1}var w=K[d+40>>2];d={tf:K[d>>2],sf:K[d+4>>2],te:K[d+8>>2],Ce:K[d+12>>2],ue:K[d+16>>2],ae:K[d+20>>2],Vd:K[d+24>>2],$d:K[d+28>>2],zf:K[d+32>>2],rf:K[d+36>>2],uf:w?w?kb(C,w):"":""};c=c?kb(C,c):"";w={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y", "%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var y in w)c=c.replace(new RegExp(y,"g"),w[y]);var B="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),D="January February March April May June July August September October November December".split(" ");w={"%a":u=>B[u.Vd].substring(0,3),"%A":u=>B[u.Vd],"%b":u=>D[u.ue].substring(0,3),"%B":u=>D[u.ue],"%C":u=>k((u.ae+1900)/ 100|0,2),"%d":u=>k(u.Ce,2),"%e":u=>f(u.Ce,2," "),"%g":u=>p(u).toString().substring(2),"%G":u=>p(u),"%H":u=>k(u.te,2),"%I":u=>{u=u.te;0==u?u=12:12{for(var F=0,H=0;H<=u.ue-1;F+=(Dd(u.ae+1900)?Ed:Fd)[H++]);return k(u.Ce+F,3)},"%m":u=>k(u.ue+1,2),"%M":u=>k(u.sf,2),"%n":()=>"\n","%p":u=>0<=u.te&&12>u.te?"AM":"PM","%S":u=>k(u.tf,2),"%t":()=>"\t","%u":u=>u.Vd||7,"%U":u=>k(Math.floor((u.$d+7-u.Vd)/7),2),"%V":u=>{var F=Math.floor((u.$d+7-(u.Vd+6)%7)/7);2>=(u.Vd+371-u.$d- 2)%7&&F++;if(F)53==F&&(H=(u.Vd+371-u.$d)%7,4==H||3==H&&Dd(u.ae)||(F=1));else{F=52;var H=(u.Vd+7-u.$d-1)%7;(4==H||5==H&&Dd(u.ae%400-1))&&F++}return k(F,2)},"%w":u=>u.Vd,"%W":u=>k(Math.floor((u.$d+7-(u.Vd+6)%7)/7),2),"%y":u=>(u.ae+1900).toString().substring(2),"%Y":u=>u.ae+1900,"%z":u=>{u=u.rf;var F=0<=u;u=Math.abs(u)/60;return(F?"+":"-")+String("0000"+(u/60*100+u%60)).slice(-4)},"%Z":u=>u.uf,"%%":()=>"%"};c=c.replace(/%%/g,"\x00\x00");for(y in w)c.includes(y)&&(c=c.replace(new RegExp(y,"g"),w[y](d))); c=c.replace(/\0\0/g,"%");y=Gd(c);if(y.length>b)return 0;Ha.set(y,a);return y.length-1};rb=r.InternalError=class extends Error{constructor(a){super(a);this.name="InternalError"}};for(var Id=Array(256),Jd=0;256>Jd;++Jd)Id[Jd]=String.fromCharCode(Jd);wb=Id;xb=r.BindingError=class extends Error{constructor(a){super(a);this.name="BindingError"}}; Rb.prototype.isAliasOf=function(a){if(!(this instanceof Rb&&a instanceof Rb))return!1;var b=this.kd.Nd.Ld,c=this.kd.Kd,d=a.kd.Nd.Ld;for(a=a.kd.Kd;b.Qd;)c=b.ke(c),b=b.Qd;for(;d.Qd;)a=d.ke(a),d=d.Qd;return b===d&&c===a}; Rb.prototype.clone=function(){this.kd.Kd||zb(this);if(this.kd.ie)return this.kd.count.value+=1,this;var a=Qb,b=Object,c=b.create,d=Object.getPrototypeOf(this),f=this.kd;a=a(c.call(b,d,{kd:{value:{count:f.count,ee:f.ee,ie:f.ie,Kd:f.Kd,Nd:f.Nd,Pd:f.Pd,Td:f.Td}}}));a.kd.count.value+=1;a.kd.ee=!1;return a};Rb.prototype["delete"]=function(){this.kd.Kd||zb(this);this.kd.ee&&!this.kd.ie&&Q("Object already scheduled for deletion");Bb(this);Cb(this.kd);this.kd.ie||(this.kd.Pd=void 0,this.kd.Kd=void 0)}; Rb.prototype.isDeleted=function(){return!this.kd.Kd};Rb.prototype.deleteLater=function(){this.kd.Kd||zb(this);this.kd.ee&&!this.kd.ie&&Q("Object already scheduled for deletion");Kb.push(this);1===Kb.length&&Mb&&Mb(Lb);this.kd.ee=!0;return this};r.getInheritedInstanceCount=function(){return Object.keys(Nb).length};r.getLiveInheritedInstances=function(){var a=[],b;for(b in Nb)Nb.hasOwnProperty(b)&&a.push(Nb[b]);return a};r.flushPendingDeletes=Lb;r.setDelayFunction=function(a){Mb=a;Kb.length&&Mb&&Mb(Lb)}; cc.prototype.bf=function(a){this.Ke&&(a=this.Ke(a));return a};cc.prototype.Ee=function(a){this.Xd&&this.Xd(a)};cc.prototype.argPackAdvance=8;cc.prototype.readValueFromPointer=nb;cc.prototype.deleteObject=function(a){if(null!==a)a["delete"]()}; cc.prototype.fromWireType=function(a){function b(){return this.pe?Pb(this.Ld.fe,{Nd:this.jf,Kd:c,Td:this,Pd:a}):Pb(this.Ld.fe,{Nd:this,Kd:a})}var c=this.bf(a);if(!c)return this.Ee(a),null;var d=Ob(this.Ld,c);if(void 0!==d){if(0===d.kd.count.value)return d.kd.Kd=c,d.kd.Pd=a,d.clone();d=d.clone();this.Ee(a);return d}d=this.Ld.af(c);d=Jb[d];if(!d)return b.call(this);d=this.oe?d.Ve:d.pointerType;var f=Db(c,this.Ld,d.Ld);return null===f?b.call(this):this.pe?Pb(d.Ld.fe,{Nd:d,Kd:f,Td:this,Pd:a}):Pb(d.Ld.fe, {Nd:d,Kd:f})};nc=r.UnboundTypeError=function(a,b){var c=Tb(b,function(d){this.name=b;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+"\n"+d.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(a.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`};return c}(Error,"UnboundTypeError"); Object.assign(uc.prototype,{get(a){return this.Wd[a]},has(a){return void 0!==this.Wd[a]},ve(a){var b=this.Ie.pop()||this.Wd.length;this.Wd[b]=a;return b},we(a){this.Wd[a]=void 0;this.Ie.push(a)}});vc.Wd.push({value:void 0},{value:null},{value:!0},{value:!1});vc.Zd=vc.Wd.length;r.count_emval_handles=function(){for(var a=0,b=vc.Zd;bKd;++Kd)rd.push(Array(Kd));var Ld=new Float32Array(288); for(Kd=0;288>Kd;++Kd)Bd[Kd]=Ld.subarray(0,Kd+1);var Md=new Int32Array(288);for(Kd=0;288>Kd;++Kd)Cd[Kd]=Md.subarray(0,Kd+1); var $d={H:function(a,b,c){(new fb(a)).Zd(b,c);gb=a;ib++;throw gb;},$:function(){return 0},$c:()=>{},_c:function(){return 0},Zc:()=>{},Yc:()=>{},_:function(){},Xc:()=>{},D:function(a){var b=lb[a];delete lb[a];var c=b.Be,d=b.Xd,f=b.He,k=f.map(l=>l.ef).concat(f.map(l=>l.nf));tb([a],k,l=>{var m={};f.forEach((p,w)=>{var y=l[w],B=p.cf,D=p.df,u=l[w+f.length],F=p.mf,H=p.pf;m[p.$e]={read:T=>y.fromWireType(B(D,T)),write:(T,ca)=>{var Y=[];F(H,T,u.toWireType(Y,ca));mb(Y)}}});return[{name:b.name,fromWireType:function(p){var w= {},y;for(y in m)w[y]=m[y].read(p);d(p);return w},toWireType:function(p,w){for(var y in m)if(!(y in w))throw new TypeError(`Missing field: "${y}"`);var B=c();for(y in m)m[y].write(B,w[y]);null!==p&&p.push(d,B);return B},argPackAdvance:8,readValueFromPointer:nb,Sd:d}]})},fa:function(){},Tc:function(a,b,c,d,f){var k=vb(c);b=O(b);ub(a,{name:b,fromWireType:function(l){return!!l},toWireType:function(l,m){return m?d:f},argPackAdvance:8,readValueFromPointer:function(l){if(1===c)var m=Ha;else if(2===c)m=Ia; else if(4===c)m=K;else throw new TypeError("Unknown boolean type size: "+b);return this.fromWireType(m[l>>k])},Sd:null})},l:function(a,b,c,d,f,k,l,m,p,w,y,B,D){y=O(y);k=mc(f,k);m&&(m=mc(l,m));w&&(w=mc(p,w));D=mc(B,D);var u=Sb(y);Vb(u,function(){rc(`Cannot construct ${y} due to unbound types`,[d])});tb([a,b,c],d?[d]:[],function(F){F=F[0];if(d){var H=F.Ld;var T=H.fe}else T=Rb.prototype;F=Tb(u,function(){if(Object.getPrototypeOf(this)!==ca)throw new xb("Use 'new' to construct "+y);if(void 0===Y.Yd)throw new xb(y+ " has no accessible constructor");var Ma=Y.Yd[arguments.length];if(void 0===Ma)throw new xb(`Tried to invoke ctor of ${y} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(Y.Yd).toString()}) parameters instead!`);return Ma.apply(this,arguments)});var ca=Object.create(T,{constructor:{value:F}});F.prototype=ca;var Y=new Wb(y,F,ca,D,H,k,m,w);Y.Qd&&(void 0===Y.Qd.le&&(Y.Qd.le=[]),Y.Qd.le.push(Y));H=new cc(y,Y,!0,!1,!1);T=new cc(y+"*",Y,!1,!1,!1);var va=new cc(y+" const*", Y,!1,!0,!1);Jb[a]={pointerType:T,Ve:va};dc(u,F);return[H,T,va]})},e:function(a,b,c,d,f,k,l){var m=tc(c,d);b=O(b);k=mc(f,k);tb([],[a],function(p){function w(){rc(`Cannot call ${y} due to unbound types`,m)}p=p[0];var y=`${p.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);var B=p.Ld.constructor;void 0===B[b]?(w.ce=c-1,B[b]=w):(Ub(B,b,y),B[b].Od[c-1]=w);tb([],m,function(D){D=[D[0],null].concat(D.slice(1));D=sc(y,D,null,k,l);void 0===B[b].Od?(D.ce=c-1,B[b]=D):B[b].Od[c-1]=D;if(p.Ld.le)for(const u of p.Ld.le)u.constructor.hasOwnProperty(b)|| (u.constructor[b]=D);return[]});return[]})},B:function(a,b,c,d,f,k){var l=tc(b,c);f=mc(d,f);tb([],[a],function(m){m=m[0];var p=`constructor ${m.name}`;void 0===m.Ld.Yd&&(m.Ld.Yd=[]);if(void 0!==m.Ld.Yd[b-1])throw new xb(`Cannot register multiple constructors with identical number of parameters (${b-1}) for class '${m.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);m.Ld.Yd[b-1]=()=>{rc(`Cannot construct ${m.name} due to unbound types`,l)}; tb([],l,function(w){w.splice(1,0,null);m.Ld.Yd[b-1]=sc(p,w,null,f,k);return[]});return[]})},a:function(a,b,c,d,f,k,l,m){var p=tc(c,d);b=O(b);k=mc(f,k);tb([],[a],function(w){function y(){rc(`Cannot call ${B} due to unbound types`,p)}w=w[0];var B=`${w.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);m&&w.Ld.kf.push(b);var D=w.Ld.fe,u=D[b];void 0===u||void 0===u.Od&&u.className!==w.name&&u.ce===c-2?(y.ce=c-2,y.className=w.name,D[b]=y):(Ub(D,b,B),D[b].Od[c-2]=y);tb([],p,function(F){F=sc(B,F, w,k,l);void 0===D[b].Od?(F.ce=c-2,D[b]=F):D[b].Od[c-2]=F;return[]});return[]})},s:function(a,b,c){a=O(a);tb([],[b],function(d){d=d[0];r[a]=d.fromWireType(c);return[]})},Sc:function(a,b){b=O(b);ub(a,{name:b,fromWireType:function(c){var d=xc(c);wc(c);return d},toWireType:function(c,d){return ac(d)},argPackAdvance:8,readValueFromPointer:nb,Sd:null})},j:function(a,b,c,d){function f(){}c=vb(c);b=O(b);f.values={};ub(a,{name:b,constructor:f,fromWireType:function(k){return this.constructor.values[k]},toWireType:function(k, l){return l.value},argPackAdvance:8,readValueFromPointer:yc(b,c,d),Sd:null});Vb(b,f)},b:function(a,b,c){var d=zc(a,"enum");b=O(b);a=d.constructor;d=Object.create(d.constructor.prototype,{value:{value:c},constructor:{value:Tb(`${d.name}_${b}`,function(){})}});a.values[c]=d;a[b]=d},Y:function(a,b,c){c=vb(c);b=O(b);ub(a,{name:b,fromWireType:function(d){return d},toWireType:function(d,f){return f},argPackAdvance:8,readValueFromPointer:Ac(b,c),Sd:null})},v:function(a,b,c,d,f,k){var l=tc(b,c);a=O(a);f= mc(d,f);Vb(a,function(){rc(`Cannot call ${a} due to unbound types`,l)},b-1);tb([],l,function(m){m=[m[0],null].concat(m.slice(1));dc(a,sc(a,m,null,f,k),b-1);return[]})},E:function(a,b,c,d,f){b=O(b);-1===f&&(f=4294967295);f=vb(c);var k=m=>m;if(0===d){var l=32-8*c;k=m=>m<>>l}c=b.includes("unsigned")?function(m,p){return p>>>0}:function(m,p){return p};ub(a,{name:b,fromWireType:k,toWireType:c,argPackAdvance:8,readValueFromPointer:Bc(b,f,0!==d),Sd:null})},r:function(a,b,c){function d(k){k>>=2;var l= L;return new f(l.buffer,l[k+1],l[k])}var f=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=O(c);ub(a,{name:c,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{ff:!0})},p:function(a,b,c,d,f,k,l,m,p,w,y,B){c=O(c);k=mc(f,k);m=mc(l,m);w=mc(p,w);B=mc(y,B);tb([a],[b],function(D){D=D[0];return[new cc(c,D.Ld,!1,!1,!0,D,d,k,m,w,B)]})},X:function(a,b){b=O(b);var c="std::string"===b;ub(a,{name:b,fromWireType:function(d){var f=L[d>>2],k=d+4;if(c)for(var l= k,m=0;m<=f;++m){var p=k+m;if(m==f||0==C[p]){l=l?kb(C,l,p-l):"";if(void 0===w)var w=l;else w+=String.fromCharCode(0),w+=l;l=p+1}}else{w=Array(f);for(m=0;m>2]= l;if(c&&k)ka(f,C,p,l+1);else if(k)for(k=0;kJa;var m=1}else 4===b&&(d=Gc,f=Hc,k=Ic,l=()=>L,m=2);ub(a,{name:c,fromWireType:function(p){for(var w=L[p>>2],y=l(),B,D=p+4,u=0;u<=w;++u){var F= p+4+u*b;if(u==w||0==y[F>>m])D=d(D,F-D),void 0===B?B=D:(B+=String.fromCharCode(0),B+=D),D=F+b}qc(p);return B},toWireType:function(p,w){"string"!=typeof w&&Q(`Cannot pass non-string to C++ string type ${c}`);var y=k(w),B=wd(4+y+b);L[B>>2]=y>>m;f(w,B+4,y+b);null!==p&&p.push(qc,B);return B},argPackAdvance:8,readValueFromPointer:nb,Sd:function(p){qc(p)}})},C:function(a,b,c,d,f,k){lb[a]={name:O(b),Be:mc(c,d),Xd:mc(f,k),He:[]}},d:function(a,b,c,d,f,k,l,m,p,w){lb[a].He.push({$e:O(b),ef:c,cf:mc(d,f),df:k, nf:l,mf:mc(m,p),pf:w})},Rc:function(a,b){b=O(b);ub(a,{hf:!0,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},Qc:()=>!0,Pc:()=>{throw Infinity;},G:function(a,b,c){a=xc(a);b=zc(b,"emval::as");var d=[],f=ac(d);L[c>>2]=f;return b.toWireType(d,a)},N:function(a,b,c,d,f){a=Lc[a];b=xc(b);c=Kc(c);var k=[];L[d>>2]=ac(k);return a(b,c,k,f)},t:function(a,b,c,d){a=Lc[a];b=xc(b);c=Kc(c);a(b,c,null,d)},c:wc,M:function(a){if(0===a)return ac(Mc());a=Kc(a);return ac(Mc()[a])},q:function(a, b){var c=Oc(a,b),d=c[0];b=d.name+"_$"+c.slice(1).map(function(l){return l.name}).join("_")+"$";var f=Pc[b];if(void 0!==f)return f;var k=Array(a-1);f=Nc((l,m,p,w)=>{for(var y=0,B=0;B{Ea("")},Nc:()=>performance.now(),Mc:a=>{var b=C.length;a>>>=0;if(2147483648=c;c*=2){var d=b*(1+.2/c); d=Math.min(d,a+100663296);var f=Math;d=Math.max(a,d);a:{f=f.min.call(f,2147483648,d+(65536-d%65536)%65536)-Fa.buffer.byteLength+65535>>>16;try{Fa.grow(f);La();var k=1;break a}catch(l){}k=void 0}if(k)return!0}return!1},Lc:function(){return v?v.handle:0},Wc:(a,b)=>{var c=0;nd().forEach(function(d,f){var k=b+c;f=L[a+4*f>>2]=k;for(k=0;k>0]=d.charCodeAt(k);Ha[f>>0]=0;c+=d.length+1});return 0},Vc:(a,b)=>{var c=nd();L[a>>2]=c.length;var d=0;c.forEach(function(f){d+=f.length+1});L[b>> 2]=d;return 0},Kc:a=>{if(!noExitRuntime){if(r.onExit)r.onExit(a);Ga=!0}oa(a,new db(a))},P:()=>52,ha:function(){return 52},Uc:()=>52,ga:function(){return 70},Z:(a,b,c,d)=>{for(var f=0,k=0;k>2],m=L[b+4>>2];b+=8;for(var p=0;p>2]=f;return 0},Jc:function(a){S.activeTexture(a)},Ic:function(a,b){S.attachShader(Xc[a],$c[b])},Hc:function(a,b,c){S.bindAttribLocation(Xc[a],b,c?kb(C,c):"")},Gc:function(a, b){35051==a?S.ye=b:35052==a&&(S.de=b);S.bindBuffer(a,Wc[b])},W:function(a,b){S.bindFramebuffer(a,Yc[b])},Fc:function(a,b){S.bindRenderbuffer(a,Zc[b])},Ec:function(a,b){S.bindSampler(a,bd[b])},Dc:function(a,b){S.bindTexture(a,ea[b])},Cc:pd,Bc:pd,Ac:function(a,b,c,d){S.blendColor(a,b,c,d)},zc:function(a){S.blendEquation(a)},yc:function(a,b){S.blendFunc(a,b)},xc:function(a,b,c,d,f,k,l,m,p,w){S.blitFramebuffer(a,b,c,d,f,k,l,m,p,w)},wc:function(a,b,c,d){2<=v.version?c&&b?S.bufferData(a,C,d,c,b):S.bufferData(a, b,d):S.bufferData(a,c?C.subarray(c,c+b):b,d)},vc:function(a,b,c,d){2<=v.version?c&&S.bufferSubData(a,b,C,d,c):S.bufferSubData(a,b,C.subarray(d,d+c))},uc:function(a){return S.checkFramebufferStatus(a)},V:function(a){S.clear(a)},U:function(a,b,c,d){S.clearColor(a,b,c,d)},T:function(a){S.clearStencil(a)},ca:function(a,b,c,d){return S.clientWaitSync(cd[a],b,(c>>>0)+4294967296*d)},tc:function(a,b,c,d){S.colorMask(!!a,!!b,!!c,!!d)},sc:function(a){S.compileShader($c[a])},rc:function(a,b,c,d,f,k,l,m){2<= v.version?S.de||!l?S.compressedTexImage2D(a,b,c,d,f,k,l,m):S.compressedTexImage2D(a,b,c,d,f,k,C,m,l):S.compressedTexImage2D(a,b,c,d,f,k,m?C.subarray(m,m+l):null)},qc:function(a,b,c,d,f,k,l,m,p){2<=v.version?S.de||!m?S.compressedTexSubImage2D(a,b,c,d,f,k,l,m,p):S.compressedTexSubImage2D(a,b,c,d,f,k,l,C,p,m):S.compressedTexSubImage2D(a,b,c,d,f,k,l,p?C.subarray(p,p+m):null)},pc:function(a,b,c,d,f){S.copyBufferSubData(a,b,c,d,f)},oc:function(a,b,c,d,f,k,l,m){S.copyTexSubImage2D(a,b,c,d,f,k,l,m)},nc:function(){var a= da(Xc),b=S.createProgram();b.name=a;b.se=b.qe=b.re=0;b.De=1;Xc[a]=b;return a},mc:function(a){var b=da($c);$c[b]=S.createShader(a);return b},lc:function(a){S.cullFace(a)},kc:function(a,b){for(var c=0;c>2],f=Wc[d];f&&(S.deleteBuffer(f),f.name=0,Wc[d]=null,d==S.ye&&(S.ye=0),d==S.de&&(S.de=0))}},jc:function(a,b){for(var c=0;c>2],f=Yc[d];f&&(S.deleteFramebuffer(f),f.name=0,Yc[d]=null)}},ic:function(a){if(a){var b=Xc[a];b?(S.deleteProgram(b),b.name=0,Xc[a]=null): R(1281)}},hc:function(a,b){for(var c=0;c>2],f=Zc[d];f&&(S.deleteRenderbuffer(f),f.name=0,Zc[d]=null)}},gc:function(a,b){for(var c=0;c>2],f=bd[d];f&&(S.deleteSampler(f),f.name=0,bd[d]=null)}},fc:function(a){if(a){var b=$c[a];b?(S.deleteShader(b),$c[a]=null):R(1281)}},ec:function(a){if(a){var b=cd[a];b?(S.deleteSync(b),b.name=0,cd[a]=null):R(1281)}},dc:function(a,b){for(var c=0;c>2],f=ea[d];f&&(S.deleteTexture(f),f.name=0,ea[d]=null)}}, cc:qd,bc:qd,ac:function(a){S.depthMask(!!a)},$b:function(a){S.disable(a)},_b:function(a){S.disableVertexAttribArray(a)},Zb:function(a,b,c){S.drawArrays(a,b,c)},Yb:function(a,b,c,d){S.drawArraysInstanced(a,b,c,d)},Xb:function(a,b,c,d,f){S.Fe.drawArraysInstancedBaseInstanceWEBGL(a,b,c,d,f)},Wb:function(a,b){for(var c=rd[a],d=0;d>2];S.drawBuffers(c)},Vb:sd,Ub:function(a,b,c,d,f){S.drawElementsInstanced(a,b,c,d,f)},Tb:function(a,b,c,d,f,k,l){S.Fe.drawElementsInstancedBaseVertexBaseInstanceWEBGL(a, b,c,d,f,k,l)},Sb:function(a,b,c,d,f,k){sd(a,d,f,k)},Rb:function(a){S.enable(a)},Qb:function(a){S.enableVertexAttribArray(a)},Pb:function(a,b){return(a=S.fenceSync(a,b))?(b=da(cd),a.name=b,cd[b]=a,b):0},Ob:function(){S.finish()},Nb:function(){S.flush()},Mb:function(a,b,c,d){S.framebufferRenderbuffer(a,b,c,Zc[d])},Lb:function(a,b,c,d,f){S.framebufferTexture2D(a,b,c,ea[d],f)},Kb:function(a){S.frontFace(a)},Jb:function(a,b){td(a,b,"createBuffer",Wc)},Ib:function(a,b){td(a,b,"createFramebuffer",Yc)},Hb:function(a, b){td(a,b,"createRenderbuffer",Zc)},Gb:function(a,b){td(a,b,"createSampler",bd)},Fb:function(a,b){td(a,b,"createTexture",ea)},Eb:ud,Db:ud,Cb:function(a){S.generateMipmap(a)},Bb:function(a,b,c){c?K[c>>2]=S.getBufferParameter(a,b):R(1281)},Ab:function(){var a=S.getError()||hd;hd=0;return a},zb:function(a,b){vd(a,b,2)},yb:function(a,b,c,d){a=S.getFramebufferAttachmentParameter(a,b,c);if(a instanceof WebGLRenderbuffer||a instanceof WebGLTexture)a=a.name|0;K[d>>2]=a},K:function(a,b){vd(a,b,0)},xb:function(a, b,c,d){a=S.getProgramInfoLog(Xc[a]);null===a&&(a="(unknown error)");b=0>2]=b)},wb:function(a,b,c){if(c)if(a>=Vc)R(1281);else if(a=Xc[a],35716==b)a=S.getProgramInfoLog(a),null===a&&(a="(unknown error)"),K[c>>2]=a.length+1;else if(35719==b){if(!a.se)for(b=0;b>2]=a.se}else if(35722==b){if(!a.qe)for(b=0;b>2]=a.qe}else if(35381==b){if(!a.re)for(b=0;b>2]=a.re}else K[c>>2]=S.getProgramParameter(a,b);else R(1281)},vb:function(a,b,c){c?K[c>>2]=S.getRenderbufferParameter(a,b):R(1281)},ub:function(a,b,c,d){a=S.getShaderInfoLog($c[a]);null===a&&(a="(unknown error)");b=0>2]=b)},tb:function(a,b,c,d){a=S.getShaderPrecisionFormat(a,b);K[c>>2]=a.rangeMin;K[c+4>> 2]=a.rangeMax;K[d>>2]=a.precision},sb:function(a,b,c){c?35716==b?(a=S.getShaderInfoLog($c[a]),null===a&&(a="(unknown error)"),K[c>>2]=a?a.length+1:0):35720==b?(a=S.getShaderSource($c[a]),K[c>>2]=a?a.length+1:0):K[c>>2]=S.getShaderParameter($c[a],b):R(1281)},S:function(a){var b=dd[a];if(!b){switch(a){case 7939:b=S.getSupportedExtensions()||[];b=b.concat(b.map(function(d){return"GL_"+d}));b=xd(b.join(" "));break;case 7936:case 7937:case 37445:case 37446:(b=S.getParameter(a))||R(1280);b=b&&xd(b);break; case 7938:b=S.getParameter(7938);b=2<=v.version?"OpenGL ES 3.0 ("+b+")":"OpenGL ES 2.0 ("+b+")";b=xd(b);break;case 35724:b=S.getParameter(35724);var c=b.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==c&&(3==c[1].length&&(c[1]+="0"),b="OpenGL ES GLSL ES "+c[1]+" ("+b+")");b=xd(b);break;default:R(1280)}dd[a]=b}return b},rb:function(a,b){if(2>v.version)return R(1282),0;var c=ed[a];if(c)return 0>b||b>=c.length?(R(1281),0):c[b];switch(a){case 7939:return c=S.getSupportedExtensions()||[], c=c.concat(c.map(function(d){return"GL_"+d})),c=c.map(function(d){return xd(d)}),c=ed[a]=c,0>b||b>=c.length?(R(1281),0):c[b];default:return R(1280),0}},qb:function(a,b){b=b?kb(C,b):"";if(a=Xc[a]){var c=a,d=c.je,f=c.Ne,k;if(!d)for(c.je=d={},c.Me={},k=0;k>>0,f=b.slice(0, k));if((f=a.Ne[f])&&d>2];S.invalidateFramebuffer(a,d)},ob:function(a,b,c,d,f,k,l){for(var m=rd[b],p=0;p>2];S.invalidateSubFramebuffer(a,m,d,f,k,l)},nb:function(a){return S.isSync(cd[a])},mb:function(a){return(a=ea[a])?S.isTexture(a):0},lb:function(a){S.lineWidth(a)},kb:function(a){a=Xc[a];S.linkProgram(a);a.je=0;a.Ne={}},jb:function(a, b,c,d,f,k){S.Je.multiDrawArraysInstancedBaseInstanceWEBGL(a,K,b>>2,K,c>>2,K,d>>2,L,f>>2,k)},ib:function(a,b,c,d,f,k,l,m){S.Je.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(a,K,b>>2,c,K,d>>2,K,f>>2,K,k>>2,L,l>>2,m)},hb:function(a,b){3317==a&&(gd=b);S.pixelStorei(a,b)},gb:function(a){S.readBuffer(a)},fb:function(a,b,c,d,f,k,l){if(2<=v.version)if(S.ye)S.readPixels(a,b,c,d,f,k,l);else{var m=zd(k);S.readPixels(a,b,c,d,f,k,m,l>>31-Math.clz32(m.BYTES_PER_ELEMENT))}else(l=Ad(k,f,c,d,l))?S.readPixels(a, b,c,d,f,k,l):R(1280)},eb:function(a,b,c,d){S.renderbufferStorage(a,b,c,d)},db:function(a,b,c,d,f){S.renderbufferStorageMultisample(a,b,c,d,f)},cb:function(a,b,c){S.samplerParameterf(bd[a],b,c)},bb:function(a,b,c){S.samplerParameteri(bd[a],b,c)},ab:function(a,b,c){S.samplerParameteri(bd[a],b,K[c>>2])},$a:function(a,b,c,d){S.scissor(a,b,c,d)},_a:function(a,b,c,d){for(var f="",k=0;k>2]:-1,m=K[c+4*k>>2];l=m?kb(C,m,0>l?void 0:l):"";f+=l}S.shaderSource($c[a],f)},Za:function(a,b, c){S.stencilFunc(a,b,c)},Ya:function(a,b,c,d){S.stencilFuncSeparate(a,b,c,d)},Xa:function(a){S.stencilMask(a)},Wa:function(a,b){S.stencilMaskSeparate(a,b)},Va:function(a,b,c){S.stencilOp(a,b,c)},Ua:function(a,b,c,d){S.stencilOpSeparate(a,b,c,d)},Ta:function(a,b,c,d,f,k,l,m,p){if(2<=v.version)if(S.de)S.texImage2D(a,b,c,d,f,k,l,m,p);else if(p){var w=zd(m);S.texImage2D(a,b,c,d,f,k,l,m,w,p>>31-Math.clz32(w.BYTES_PER_ELEMENT))}else S.texImage2D(a,b,c,d,f,k,l,m,null);else S.texImage2D(a,b,c,d,f,k,l,m,p? Ad(m,l,d,f,p):null)},Sa:function(a,b,c){S.texParameterf(a,b,c)},Ra:function(a,b,c){S.texParameterf(a,b,N[c>>2])},Qa:function(a,b,c){S.texParameteri(a,b,c)},Pa:function(a,b,c){S.texParameteri(a,b,K[c>>2])},Oa:function(a,b,c,d,f){S.texStorage2D(a,b,c,d,f)},Na:function(a,b,c,d,f,k,l,m,p){if(2<=v.version)if(S.de)S.texSubImage2D(a,b,c,d,f,k,l,m,p);else if(p){var w=zd(m);S.texSubImage2D(a,b,c,d,f,k,l,m,w,p>>31-Math.clz32(w.BYTES_PER_ELEMENT))}else S.texSubImage2D(a,b,c,d,f,k,l,m,null);else w=null,p&&(w= Ad(m,l,f,k,p)),S.texSubImage2D(a,b,c,d,f,k,l,m,w)},Ma:function(a,b){S.uniform1f(W(a),b)},La:function(a,b,c){if(2<=v.version)b&&S.uniform1fv(W(a),N,c>>2,b);else{if(288>=b)for(var d=Bd[b-1],f=0;f>2];else d=N.subarray(c>>2,c+4*b>>2);S.uniform1fv(W(a),d)}},Ka:function(a,b){S.uniform1i(W(a),b)},Ja:function(a,b,c){if(2<=v.version)b&&S.uniform1iv(W(a),K,c>>2,b);else{if(288>=b)for(var d=Cd[b-1],f=0;f>2];else d=K.subarray(c>>2,c+4*b>>2);S.uniform1iv(W(a),d)}},Ia:function(a, b,c){S.uniform2f(W(a),b,c)},Ha:function(a,b,c){if(2<=v.version)b&&S.uniform2fv(W(a),N,c>>2,2*b);else{if(144>=b)for(var d=Bd[2*b-1],f=0;f<2*b;f+=2)d[f]=N[c+4*f>>2],d[f+1]=N[c+(4*f+4)>>2];else d=N.subarray(c>>2,c+8*b>>2);S.uniform2fv(W(a),d)}},Ga:function(a,b,c){S.uniform2i(W(a),b,c)},Fa:function(a,b,c){if(2<=v.version)b&&S.uniform2iv(W(a),K,c>>2,2*b);else{if(144>=b)for(var d=Cd[2*b-1],f=0;f<2*b;f+=2)d[f]=K[c+4*f>>2],d[f+1]=K[c+(4*f+4)>>2];else d=K.subarray(c>>2,c+8*b>>2);S.uniform2iv(W(a),d)}},Ea:function(a, b,c,d){S.uniform3f(W(a),b,c,d)},Da:function(a,b,c){if(2<=v.version)b&&S.uniform3fv(W(a),N,c>>2,3*b);else{if(96>=b)for(var d=Bd[3*b-1],f=0;f<3*b;f+=3)d[f]=N[c+4*f>>2],d[f+1]=N[c+(4*f+4)>>2],d[f+2]=N[c+(4*f+8)>>2];else d=N.subarray(c>>2,c+12*b>>2);S.uniform3fv(W(a),d)}},Ca:function(a,b,c,d){S.uniform3i(W(a),b,c,d)},Ba:function(a,b,c){if(2<=v.version)b&&S.uniform3iv(W(a),K,c>>2,3*b);else{if(96>=b)for(var d=Cd[3*b-1],f=0;f<3*b;f+=3)d[f]=K[c+4*f>>2],d[f+1]=K[c+(4*f+4)>>2],d[f+2]=K[c+(4*f+8)>>2];else d= K.subarray(c>>2,c+12*b>>2);S.uniform3iv(W(a),d)}},Aa:function(a,b,c,d,f){S.uniform4f(W(a),b,c,d,f)},za:function(a,b,c){if(2<=v.version)b&&S.uniform4fv(W(a),N,c>>2,4*b);else{if(72>=b){var d=Bd[4*b-1],f=N;c>>=2;for(var k=0;k<4*b;k+=4){var l=c+k;d[k]=f[l];d[k+1]=f[l+1];d[k+2]=f[l+2];d[k+3]=f[l+3]}}else d=N.subarray(c>>2,c+16*b>>2);S.uniform4fv(W(a),d)}},ya:function(a,b,c,d,f){S.uniform4i(W(a),b,c,d,f)},xa:function(a,b,c){if(2<=v.version)b&&S.uniform4iv(W(a),K,c>>2,4*b);else{if(72>=b)for(var d=Cd[4*b- 1],f=0;f<4*b;f+=4)d[f]=K[c+4*f>>2],d[f+1]=K[c+(4*f+4)>>2],d[f+2]=K[c+(4*f+8)>>2],d[f+3]=K[c+(4*f+12)>>2];else d=K.subarray(c>>2,c+16*b>>2);S.uniform4iv(W(a),d)}},wa:function(a,b,c,d){if(2<=v.version)b&&S.uniformMatrix2fv(W(a),!!c,N,d>>2,4*b);else{if(72>=b)for(var f=Bd[4*b-1],k=0;k<4*b;k+=4)f[k]=N[d+4*k>>2],f[k+1]=N[d+(4*k+4)>>2],f[k+2]=N[d+(4*k+8)>>2],f[k+3]=N[d+(4*k+12)>>2];else f=N.subarray(d>>2,d+16*b>>2);S.uniformMatrix2fv(W(a),!!c,f)}},va:function(a,b,c,d){if(2<=v.version)b&&S.uniformMatrix3fv(W(a), !!c,N,d>>2,9*b);else{if(32>=b)for(var f=Bd[9*b-1],k=0;k<9*b;k+=9)f[k]=N[d+4*k>>2],f[k+1]=N[d+(4*k+4)>>2],f[k+2]=N[d+(4*k+8)>>2],f[k+3]=N[d+(4*k+12)>>2],f[k+4]=N[d+(4*k+16)>>2],f[k+5]=N[d+(4*k+20)>>2],f[k+6]=N[d+(4*k+24)>>2],f[k+7]=N[d+(4*k+28)>>2],f[k+8]=N[d+(4*k+32)>>2];else f=N.subarray(d>>2,d+36*b>>2);S.uniformMatrix3fv(W(a),!!c,f)}},ua:function(a,b,c,d){if(2<=v.version)b&&S.uniformMatrix4fv(W(a),!!c,N,d>>2,16*b);else{if(18>=b){var f=Bd[16*b-1],k=N;d>>=2;for(var l=0;l<16*b;l+=16){var m=d+l;f[l]= k[m];f[l+1]=k[m+1];f[l+2]=k[m+2];f[l+3]=k[m+3];f[l+4]=k[m+4];f[l+5]=k[m+5];f[l+6]=k[m+6];f[l+7]=k[m+7];f[l+8]=k[m+8];f[l+9]=k[m+9];f[l+10]=k[m+10];f[l+11]=k[m+11];f[l+12]=k[m+12];f[l+13]=k[m+13];f[l+14]=k[m+14];f[l+15]=k[m+15]}}else f=N.subarray(d>>2,d+64*b>>2);S.uniformMatrix4fv(W(a),!!c,f)}},ta:function(a){a=Xc[a];S.useProgram(a);S.We=a},sa:function(a,b){S.vertexAttrib1f(a,b)},ra:function(a,b){S.vertexAttrib2f(a,N[b>>2],N[b+4>>2])},qa:function(a,b){S.vertexAttrib3f(a,N[b>>2],N[b+4>>2],N[b+8>>2])}, pa:function(a,b){S.vertexAttrib4f(a,N[b>>2],N[b+4>>2],N[b+8>>2],N[b+12>>2])},oa:function(a,b){S.vertexAttribDivisor(a,b)},na:function(a,b,c,d,f){S.vertexAttribIPointer(a,b,c,d,f)},ma:function(a,b,c,d,f,k){S.vertexAttribPointer(a,b,c,!!d,f,k)},la:function(a,b,c,d){S.viewport(a,b,c,d)},ba:function(a,b,c,d){S.waitSync(cd[a],b,(c>>>0)+4294967296*d)},n:Nd,u:Od,k:Pd,J:Qd,R:Rd,Q:Sd,x:Td,y:Ud,o:Vd,w:Wd,ka:Xd,ja:Yd,ia:Zd,aa:(a,b,c,d)=>Hd(a,b,c,d)}; (function(){function a(c){G=c=c.exports;Fa=G.ad;La();Na=G.dd;Pa.unshift(G.bd);Ua--;r.monitorRunDependencies&&r.monitorRunDependencies(Ua);if(0==Ua&&(null!==Va&&(clearInterval(Va),Va=null),Wa)){var d=Wa;Wa=null;d()}return c}var b={a:$d};Ua++;r.monitorRunDependencies&&r.monitorRunDependencies(Ua);if(r.instantiateWasm)try{return r.instantiateWasm(b,a)}catch(c){Ca("Module.instantiateWasm callback failed with error: "+c),ba(c)}cb(b,function(c){a(c.instance)}).catch(ba);return{}})(); var wd=r._malloc=a=>(wd=r._malloc=G.cd)(a),qc=r._free=a=>(qc=r._free=G.ed)(a),pc=a=>(pc=G.fd)(a);r.__embind_initialize_bindings=()=>(r.__embind_initialize_bindings=G.gd)();var ae=(a,b)=>(ae=G.hd)(a,b),be=()=>(be=G.id)(),ce=a=>(ce=G.jd)(a);r.dynCall_viji=(a,b,c,d,f)=>(r.dynCall_viji=G.ld)(a,b,c,d,f);r.dynCall_vijiii=(a,b,c,d,f,k,l)=>(r.dynCall_vijiii=G.md)(a,b,c,d,f,k,l);r.dynCall_viiiiij=(a,b,c,d,f,k,l,m)=>(r.dynCall_viiiiij=G.nd)(a,b,c,d,f,k,l,m); r.dynCall_iiiji=(a,b,c,d,f,k)=>(r.dynCall_iiiji=G.od)(a,b,c,d,f,k);r.dynCall_jii=(a,b,c)=>(r.dynCall_jii=G.pd)(a,b,c);r.dynCall_vij=(a,b,c,d)=>(r.dynCall_vij=G.qd)(a,b,c,d);r.dynCall_iiij=(a,b,c,d,f)=>(r.dynCall_iiij=G.rd)(a,b,c,d,f);r.dynCall_iiiij=(a,b,c,d,f,k)=>(r.dynCall_iiiij=G.sd)(a,b,c,d,f,k);r.dynCall_viij=(a,b,c,d,f)=>(r.dynCall_viij=G.td)(a,b,c,d,f);r.dynCall_viiij=(a,b,c,d,f,k)=>(r.dynCall_viiij=G.ud)(a,b,c,d,f,k); r.dynCall_jiiiiii=(a,b,c,d,f,k,l)=>(r.dynCall_jiiiiii=G.vd)(a,b,c,d,f,k,l);r.dynCall_jiiiiji=(a,b,c,d,f,k,l,m)=>(r.dynCall_jiiiiji=G.wd)(a,b,c,d,f,k,l,m);r.dynCall_ji=(a,b)=>(r.dynCall_ji=G.xd)(a,b);r.dynCall_iijj=(a,b,c,d,f,k)=>(r.dynCall_iijj=G.yd)(a,b,c,d,f,k);r.dynCall_iiji=(a,b,c,d,f)=>(r.dynCall_iiji=G.zd)(a,b,c,d,f);r.dynCall_iijjiii=(a,b,c,d,f,k,l,m,p)=>(r.dynCall_iijjiii=G.Ad)(a,b,c,d,f,k,l,m,p);r.dynCall_iij=(a,b,c,d)=>(r.dynCall_iij=G.Bd)(a,b,c,d); r.dynCall_vijjjii=(a,b,c,d,f,k,l,m,p,w)=>(r.dynCall_vijjjii=G.Cd)(a,b,c,d,f,k,l,m,p,w);r.dynCall_jiji=(a,b,c,d,f)=>(r.dynCall_jiji=G.Dd)(a,b,c,d,f);r.dynCall_viijii=(a,b,c,d,f,k,l)=>(r.dynCall_viijii=G.Ed)(a,b,c,d,f,k,l);r.dynCall_iiiiij=(a,b,c,d,f,k,l)=>(r.dynCall_iiiiij=G.Fd)(a,b,c,d,f,k,l);r.dynCall_iiiiijj=(a,b,c,d,f,k,l,m,p)=>(r.dynCall_iiiiijj=G.Gd)(a,b,c,d,f,k,l,m,p);r.dynCall_iiiiiijj=(a,b,c,d,f,k,l,m,p,w)=>(r.dynCall_iiiiiijj=G.Hd)(a,b,c,d,f,k,l,m,p,w); function Wd(a,b,c,d,f){var k=be();try{Na.get(a)(b,c,d,f)}catch(l){ce(k);if(l!==l+0)throw l;ae(1,0)}}function Od(a,b,c){var d=be();try{return Na.get(a)(b,c)}catch(f){ce(d);if(f!==f+0)throw f;ae(1,0)}}function Ud(a,b,c){var d=be();try{Na.get(a)(b,c)}catch(f){ce(d);if(f!==f+0)throw f;ae(1,0)}}function Nd(a,b){var c=be();try{return Na.get(a)(b)}catch(d){ce(c);if(d!==d+0)throw d;ae(1,0)}}function Td(a,b){var c=be();try{Na.get(a)(b)}catch(d){ce(c);if(d!==d+0)throw d;ae(1,0)}} function Pd(a,b,c,d){var f=be();try{return Na.get(a)(b,c,d)}catch(k){ce(f);if(k!==k+0)throw k;ae(1,0)}}function Zd(a,b,c,d,f,k,l,m,p,w){var y=be();try{Na.get(a)(b,c,d,f,k,l,m,p,w)}catch(B){ce(y);if(B!==B+0)throw B;ae(1,0)}}function Vd(a,b,c,d){var f=be();try{Na.get(a)(b,c,d)}catch(k){ce(f);if(k!==k+0)throw k;ae(1,0)}}function Yd(a,b,c,d,f,k,l){var m=be();try{Na.get(a)(b,c,d,f,k,l)}catch(p){ce(m);if(p!==p+0)throw p;ae(1,0)}} function Qd(a,b,c,d,f){var k=be();try{return Na.get(a)(b,c,d,f)}catch(l){ce(k);if(l!==l+0)throw l;ae(1,0)}}function Rd(a,b,c,d,f,k,l){var m=be();try{return Na.get(a)(b,c,d,f,k,l)}catch(p){ce(m);if(p!==p+0)throw p;ae(1,0)}}function Xd(a,b,c,d,f,k){var l=be();try{Na.get(a)(b,c,d,f,k)}catch(m){ce(l);if(m!==m+0)throw m;ae(1,0)}}function Sd(a,b,c,d,f,k,l,m,p,w){var y=be();try{return Na.get(a)(b,c,d,f,k,l,m,p,w)}catch(B){ce(y);if(B!==B+0)throw B;ae(1,0)}}var de;Wa=function ee(){de||fe();de||(Wa=ee)}; function fe(){function a(){if(!de&&(de=!0,r.calledRun=!0,!Ga)){eb(Pa);aa(r);if(r.onRuntimeInitialized)r.onRuntimeInitialized();if(r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;){var b=r.postRun.shift();Qa.unshift(b)}eb(Qa)}}if(!(0 CanvasKitInit); ================================================ FILE: legacy/dist/canvaskit/canvaskit.js.symbols ================================================ 0:_embind_register_class_function 1:_embind_register_enum_value 2:_emval_decref 3:_embind_register_value_object_field 4:_embind_register_class_class_function 5:_emval_new_cstring 6:_emval_take_value 7:abort 8:_emval_set_property 9:_embind_register_enum 10:invoke_iiii 11:_embind_register_class 12:_emval_incref 13:invoke_ii 14:invoke_viii 15:_embind_register_smart_ptr 16:_emval_get_method_caller 17:_embind_register_memory_view 18:_embind_register_constant 19:_emval_call_void_method 20:invoke_iii 21:_embind_register_function 22:invoke_viiii 23:invoke_vi 24:invoke_vii 25:_emval_run_destructors 26:_emval_get_property 27:_embind_register_class_constructor 28:_embind_register_value_object 29:_embind_finalize_value_object 30:_embind_register_integer 31:_emval_new_object 32:_emval_as 33:__cxa_throw 34:_emval_new_array 35:invoke_iiiii 36:glGetIntegerv 37:_emval_new 38:_emval_get_global 39:_emval_call_method 40:_embind_register_std_wstring 41:__wasi_fd_close 42:invoke_iiiiiiiiii 43:invoke_iiiiiii 44:glGetString 45:glClearStencil 46:glClearColor 47:glClear 48:glBindFramebuffer 49:_embind_register_std_string 50:_embind_register_float 51:__wasi_fd_write 52:__syscall_openat 53:__syscall_fcntl64 54:strftime_l 55:legalimport$glWaitSync 56:legalimport$glClientWaitSync 57:legalimport$_munmap_js 58:legalimport$_mmap_js 59:legalimport$_embind_register_bigint 60:legalimport$__wasi_fd_seek 61:legalimport$__wasi_fd_pread 62:invoke_viiiiiiiii 63:invoke_viiiiii 64:invoke_viiiii 65:glViewport 66:glVertexAttribPointer 67:glVertexAttribIPointer 68:glVertexAttribDivisor 69:glVertexAttrib4fv 70:glVertexAttrib3fv 71:glVertexAttrib2fv 72:glVertexAttrib1f 73:glUseProgram 74:glUniformMatrix4fv 75:glUniformMatrix3fv 76:glUniformMatrix2fv 77:glUniform4iv 78:glUniform4i 79:glUniform4fv 80:glUniform4f 81:glUniform3iv 82:glUniform3i 83:glUniform3fv 84:glUniform3f 85:glUniform2iv 86:glUniform2i 87:glUniform2fv 88:glUniform2f 89:glUniform1iv 90:glUniform1i 91:glUniform1fv 92:glUniform1f 93:glTexSubImage2D 94:glTexStorage2D 95:glTexParameteriv 96:glTexParameteri 97:glTexParameterfv 98:glTexParameterf 99:glTexImage2D 100:glStencilOpSeparate 101:glStencilOp 102:glStencilMaskSeparate 103:glStencilMask 104:glStencilFuncSeparate 105:glStencilFunc 106:glShaderSource 107:glScissor 108:glSamplerParameteriv 109:glSamplerParameteri 110:glSamplerParameterf 111:glRenderbufferStorageMultisample 112:glRenderbufferStorage 113:glReadPixels 114:glReadBuffer 115:glPixelStorei 116:glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL 117:glMultiDrawArraysInstancedBaseInstanceWEBGL 118:glLinkProgram 119:glLineWidth 120:glIsTexture 121:glIsSync 122:glInvalidateSubFramebuffer 123:glInvalidateFramebuffer 124:glGetUniformLocation 125:glGetStringi 126:glGetShaderiv 127:glGetShaderPrecisionFormat 128:glGetShaderInfoLog 129:glGetRenderbufferParameteriv 130:glGetProgramiv 131:glGetProgramInfoLog 132:glGetFramebufferAttachmentParameteriv 133:glGetFloatv 134:glGetError 135:glGetBufferParameteriv 136:glGenerateMipmap 137:glGenVertexArraysOES 138:glGenVertexArrays 139:glGenTextures 140:glGenSamplers 141:glGenRenderbuffers 142:glGenFramebuffers 143:glGenBuffers 144:glFrontFace 145:glFramebufferTexture2D 146:glFramebufferRenderbuffer 147:glFlush 148:glFinish 149:glFenceSync 150:glEnableVertexAttribArray 151:glEnable 152:glDrawRangeElements 153:glDrawElementsInstancedBaseVertexBaseInstanceWEBGL 154:glDrawElementsInstanced 155:glDrawElements 156:glDrawBuffers 157:glDrawArraysInstancedBaseInstanceWEBGL 158:glDrawArraysInstanced 159:glDrawArrays 160:glDisableVertexAttribArray 161:glDisable 162:glDepthMask 163:glDeleteVertexArraysOES 164:glDeleteVertexArrays 165:glDeleteTextures 166:glDeleteSync 167:glDeleteShader 168:glDeleteSamplers 169:glDeleteRenderbuffers 170:glDeleteProgram 171:glDeleteFramebuffers 172:glDeleteBuffers 173:glCullFace 174:glCreateShader 175:glCreateProgram 176:glCopyTexSubImage2D 177:glCopyBufferSubData 178:glCompressedTexSubImage2D 179:glCompressedTexImage2D 180:glCompileShader 181:glColorMask 182:glCheckFramebufferStatus 183:glBufferSubData 184:glBufferData 185:glBlitFramebuffer 186:glBlendFunc 187:glBlendEquation 188:glBlendColor 189:glBindVertexArrayOES 190:glBindVertexArray 191:glBindTexture 192:glBindSampler 193:glBindRenderbuffer 194:glBindBuffer 195:glBindAttribLocation 196:glAttachShader 197:glActiveTexture 198:exit 199:emscripten_webgl_get_current_context 200:emscripten_resize_heap 201:emscripten_get_now 202:_emval_not 203:_emscripten_throw_longjmp 204:_emscripten_get_now_is_monotonic 205:_embind_register_void 206:_embind_register_emval 207:_embind_register_bool 208:__wasi_fd_read 209:__wasi_environ_sizes_get 210:__wasi_environ_get 211:__syscall_stat64 212:__syscall_newfstatat 213:__syscall_lstat64 214:__syscall_ioctl 215:__syscall_fstat64 216:dlfree 217:operator\20new\28unsigned\20long\29 218:void\20emscripten::internal::raw_destructor\28SkColorSpace*\29 219:__memcpy 220:SkString::~SkString\28\29 221:__memset 222:GrGLSLShaderBuilder::codeAppendf\28char\20const*\2c\20...\29 223:uprv_free_73 224:SkColorInfo::~SkColorInfo\28\29 225:memcmp 226:SkContainerAllocator::allocate\28int\2c\20double\29 227:SkDebugf\28char\20const*\2c\20...\29 228:SkString::SkString\28\29 229:SkData::~SkData\28\29 230:memmove 231:SkString::insert\28unsigned\20long\2c\20char\20const*\29 232:hb_blob_destroy 233:sk_report_container_overflow_and_die\28\29 234:std::__2::basic_string\2c\20std::__2::allocator>::append\28char\20const*\29 235:SkPath::~SkPath\28\29 236:std::__2::__function::__func\2c\20void\20\28int\2c\20skia::textlayout::Paragraph::VisitorInfo\20const*\29>::~__func\28\29 237:strlen 238:uprv_malloc_73 239:SkArenaAlloc::ensureSpace\28unsigned\20int\2c\20unsigned\20int\29 240:SkSL::ErrorReporter::error\28SkSL::Position\2c\20std::__2::basic_string_view>\29 241:SkRasterPipeline::append\28SkRasterPipelineOp\2c\20void*\29 242:SkString::SkString\28char\20const*\29 243:ft_mem_free 244:FT_MulFix 245:emscripten::default_smart_ptr_trait>::share\28void*\29 246:strcmp 247:SkTDStorage::append\28\29 248:SkMatrix::computeTypeMask\28\29\20const 249:GrGpuResource::notifyARefCntIsZero\28GrIORef::LastRemovedRef\29\20const 250:SkWriter32::growToAtLeast\28unsigned\20long\29 251:testSetjmp 252:std::__2::basic_string\2c\20std::__2::allocator>::append\28char\20const*\2c\20unsigned\20long\29 253:fmaxf 254:std::__2::basic_string\2c\20std::__2::allocator>::size\5babi:v160004\5d\28\29\20const 255:SkString::SkString\28SkString&&\29 256:std::__2::basic_string\2c\20std::__2::allocator>::__throw_length_error\5babi:v160004\5d\28\29\20const 257:SkSL::Pool::AllocMemory\28unsigned\20long\29 258:GrColorInfo::~GrColorInfo\28\29 259:SkIRect::intersect\28SkIRect\20const&\2c\20SkIRect\20const&\29 260:GrBackendFormat::~GrBackendFormat\28\29 261:std::__2::basic_string\2c\20std::__2::allocator>::insert\28unsigned\20long\2c\20char\20const*\29 262:icu_73::UnicodeString::~UnicodeString\28\29 263:std::__2::vector>::__throw_length_error\5babi:v160004\5d\28\29\20const 264:GrContext_Base::caps\28\29\20const 265:SkPaint::~SkPaint\28\29 266:strncmp 267:SkTDStorage::~SkTDStorage\28\29 268:sk_malloc_throw\28unsigned\20long\2c\20unsigned\20long\29 269:SkSL::RP::Generator::pushExpression\28SkSL::Expression\20const&\2c\20bool\29 270:SkTDStorage::SkTDStorage\28int\29 271:SkString::SkString\28SkString\20const&\29 272:SkStrokeRec::getStyle\28\29\20const 273:icu_73::UMemory::operator\20delete\28void*\29 274:void\20emscripten::internal::raw_destructor\28SkContourMeasure*\29 275:hb_ot_map_builder_t::add_feature\28unsigned\20int\2c\20hb_ot_map_feature_flags_t\2c\20unsigned\20int\29 276:SkMatrix::mapRect\28SkRect*\2c\20SkRect\20const&\2c\20SkApplyPerspectiveClip\29\20const 277:SkFontMgr*\20emscripten::base::convertPointer\28skia::textlayout::TypefaceFontProvider*\29 278:SkBitmap::~SkBitmap\28\29 279:hb_buffer_t::make_room_for\28unsigned\20int\2c\20unsigned\20int\29 280:SkArenaAlloc::installFooter\28char*\20\28*\29\28char*\29\2c\20unsigned\20int\29 281:SkArenaAlloc::allocObjectWithFooter\28unsigned\20int\2c\20unsigned\20int\29 282:fminf 283:icu_73::CharString::append\28char\20const*\2c\20int\2c\20UErrorCode&\29 284:skia_private::TArray::push_back\28SkPoint\20const&\29 285:SkString::operator=\28SkString&&\29 286:SkSemaphore::osSignal\28int\29 287:SkPath::SkPath\28\29 288:skia_png_error 289:hb_buffer_t::message\28hb_font_t*\2c\20char\20const*\2c\20...\29 290:SkSL::Parser::nextRawToken\28\29 291:SkArenaAlloc::~SkArenaAlloc\28\29 292:SkMatrix::computePerspectiveTypeMask\28\29\20const 293:SkColorInfo::SkColorInfo\28SkColorInfo\20const&\29 294:SkSemaphore::osWait\28\29 295:std::__2::__shared_weak_count::__release_weak\28\29 296:SkIntersections::insert\28double\2c\20double\2c\20SkDPoint\20const&\29 297:dlmalloc 298:std::__throw_bad_array_new_length\5babi:v160004\5d\28\29 299:FT_DivFix 300:SkString::appendf\28char\20const*\2c\20...\29 301:uprv_isASCIILetter_73 302:std::__2::basic_string\2c\20std::__2::allocator>::~basic_string\28\29 303:skia_png_free 304:SkPath::lineTo\28float\2c\20float\29 305:skia_png_crc_finish 306:SkChecksum::Hash32\28void\20const*\2c\20unsigned\20long\2c\20unsigned\20int\29 307:skia_png_chunk_benign_error 308:icu_73::StringPiece::StringPiece\28char\20const*\29 309:utext_getNativeIndex_73 310:utext_setNativeIndex_73 311:SkMatrix::mapPoints\28SkPoint*\2c\20SkPoint\20const*\2c\20int\29\20const 312:dlrealloc 313:ures_closeBundle\28UResourceBundle*\2c\20signed\20char\29 314:SkMatrix::setTranslate\28float\2c\20float\29 315:skia_png_warning 316:SkBlitter::~SkBlitter\28\29 317:OT::VarData::get_delta\28unsigned\20int\2c\20int\20const*\2c\20unsigned\20int\2c\20OT::VarRegionList\20const&\2c\20float*\29\20const 318:ft_mem_qrealloc 319:SkColorInfo::bytesPerPixel\28\29\20const 320:SkPaint::SkPaint\28SkPaint\20const&\29 321:GrVertexChunkBuilder::allocChunk\28int\29 322:OT::DeltaSetIndexMap::map\28unsigned\20int\29\20const 323:strchr 324:ft_mem_realloc 325:SkReadBuffer::readUInt\28\29 326:strstr 327:SkMatrix::reset\28\29 328:SkImageInfo::MakeUnknown\28int\2c\20int\29 329:GrSurfaceProxyView::asRenderTargetProxy\28\29\20const 330:skia_private::TArray::push_back\28unsigned\20char&&\29 331:skia_private::TArray::push_back\28unsigned\20long\20const&\29 332:SkPath::SkPath\28SkPath\20const&\29 333:SkPaint::SkPaint\28\29 334:ft_validator_error 335:SkSL::RP::Builder::appendInstruction\28SkSL::RP::BuilderOp\2c\20SkSL::RP::Builder::SlotList\2c\20int\2c\20int\2c\20int\2c\20int\29 336:SkBitmap::SkBitmap\28\29 337:SkOpPtT::segment\28\29\20const 338:sk_malloc_flags\28unsigned\20long\2c\20unsigned\20int\29 339:SkSL::Parser::expect\28SkSL::Token::Kind\2c\20char\20const*\2c\20SkSL::Token*\29 340:SkJSONWriter::appendName\28char\20const*\29 341:GrTextureGenerator::isTextureGenerator\28\29\20const 342:std::__2::basic_string\2c\20std::__2::allocator>::__get_pointer\5babi:v160004\5d\28\29 343:skia_private::TArray\2c\20true>::push_back\28sk_sp&&\29 344:SkMatrix::invertNonIdentity\28SkMatrix*\29\20const 345:SkJSONWriter::beginValue\28bool\29 346:dlcalloc 347:SkImageGenerator::onGetYUVAPlanes\28SkYUVAPixmaps\20const&\29 348:skia_png_get_uint_32 349:skia_png_calculate_crc 350:std::__2::basic_string\2c\20std::__2::allocator>::resize\5babi:v160004\5d\28unsigned\20long\29 351:skgpu::Swizzle::Swizzle\28char\20const*\29 352:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul>::__dispatch\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>::__destroy\5babi:v160004\5d\28\29::'lambda'\28auto&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&>\28auto\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\29 353:SkSL::GLSLCodeGenerator::writeExpression\28SkSL::Expression\20const&\2c\20SkSL::OperatorPrecedence\29 354:SkPoint::Length\28float\2c\20float\29 355:GrImageInfo::GrImageInfo\28GrImageInfo\20const&\29 356:std::__2::basic_string\2c\20std::__2::allocator>::operator\5b\5d\5babi:v160004\5d\28unsigned\20long\29\20const 357:uhash_close_73 358:std::__2::locale::~locale\28\29 359:SkPath::getBounds\28\29\20const 360:SkLoadICULib\28\29 361:ucptrie_internalSmallIndex_73 362:skia_private::TArray::push_back\28SkString&&\29 363:SkRect::intersect\28SkRect\20const&\29 364:FT_Stream_Seek 365:skia_private::TArray::push_back\28SkSL::RP::Instruction&&\29 366:SkRect::join\28SkRect\20const&\29 367:SkPathRef::Editor::Editor\28sk_sp*\2c\20int\2c\20int\2c\20int\29 368:hb_blob_reference 369:cf2_stack_popFixed 370:SkRect::setBoundsCheck\28SkPoint\20const*\2c\20int\29 371:GrGLExtensions::has\28char\20const*\29\20const 372:std::__2::__throw_bad_function_call\5babi:v160004\5d\28\29 373:SkCachedData::internalUnref\28bool\29\20const 374:GrProcessor::operator\20new\28unsigned\20long\29 375:FT_MulDiv 376:strcpy 377:std::__2::to_string\28int\29 378:skia_private::TArray>\2c\20true>::operator=\28skia_private::TArray>\2c\20true>&&\29 379:SkRasterPipeline::uncheckedAppend\28SkRasterPipelineOp\2c\20void*\29 380:std::__2::ios_base::getloc\28\29\20const 381:icu_73::UnicodeString::doAppend\28char16_t\20const*\2c\20int\2c\20int\29 382:SkRegion::~SkRegion\28\29 383:skia_png_read_push_finish_row 384:skia::textlayout::TextStyle::~TextStyle\28\29 385:icu_73::CharString::append\28char\2c\20UErrorCode&\29 386:hb_blob_make_immutable 387:SkString::operator=\28char\20const*\29 388:SkSemaphore::~SkSemaphore\28\29 389:SkReadBuffer::setInvalid\28\29 390:hb_ot_map_builder_t::add_pause\28unsigned\20int\2c\20bool\20\28*\29\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29\29 391:cff1_path_procs_extents_t::curve\28CFF::cff1_cs_interp_env_t&\2c\20cff1_extents_param_t&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\29 392:VP8GetValue 393:SkColorInfo::operator=\28SkColorInfo&&\29 394:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28\29 395:skgpu::ganesh::SurfaceContext::caps\28\29\20const 396:icu_73::UnicodeSet::~UnicodeSet\28\29 397:icu_73::UnicodeSet::contains\28int\29\20const 398:SkSL::Type::matches\28SkSL::Type\20const&\29\20const 399:SkSL::String::printf\28char\20const*\2c\20...\29 400:SkPoint::normalize\28\29 401:SkColorInfo::operator=\28SkColorInfo\20const&\29 402:SkArenaAlloc::SkArenaAlloc\28char*\2c\20unsigned\20long\2c\20unsigned\20long\29 403:FT_Stream_ReadUShort 404:jdiv_round_up 405:SkSL::RP::Builder::binary_op\28SkSL::RP::BuilderOp\2c\20int\29 406:SkImageGenerator::onQueryYUVAInfo\28SkYUVAPixmapInfo::SupportedDataTypes\20const&\2c\20SkYUVAPixmapInfo*\29\20const 407:utext_next32_73 408:umtx_unlock_73 409:std::__2::basic_string\2c\20std::__2::allocator>::capacity\5babi:v160004\5d\28\29\20const 410:jzero_far 411:hb_blob_get_data_writable 412:SkPathRef::growForVerb\28int\2c\20float\29 413:SkColorInfo::SkColorInfo\28SkColorInfo&&\29 414:skia_png_write_data 415:bool\20std::__2::operator==\5babi:v160004\5d>\28std::__2::istreambuf_iterator>\20const&\2c\20std::__2::istreambuf_iterator>\20const&\29 416:SkRuntimeEffect::uniformSize\28\29\20const 417:FT_Stream_ExitFrame 418:subtag_matches\28char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20unsigned\20int\29 419:skia_private::TArray::push_back_raw\28int\29 420:__shgetc 421:SkBlitter::~SkBlitter\28\29.1 422:FT_Stream_GetUShort 423:uhash_get_73 424:std::__2::basic_string\2c\20std::__2::allocator>::operator=\5babi:v160004\5d\28wchar_t\20const*\29 425:std::__2::basic_string\2c\20std::__2::allocator>::operator=\5babi:v160004\5d\28char\20const*\29 426:bool\20std::__2::operator==\5babi:v160004\5d>\28std::__2::istreambuf_iterator>\20const&\2c\20std::__2::istreambuf_iterator>\20const&\29 427:SkPoint::scale\28float\2c\20SkPoint*\29\20const 428:SkNullBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 429:GrFragmentProcessor::ProgramImpl::invokeChild\28int\2c\20char\20const*\2c\20char\20const*\2c\20GrFragmentProcessor::ProgramImpl::EmitArgs&\2c\20std::__2::basic_string_view>\29 430:sktext::gpu::BagOfBytes::~BagOfBytes\28\29 431:skia_png_chunk_error 432:hb_face_reference_table 433:SkMatrix::setConcat\28SkMatrix\20const&\2c\20SkMatrix\20const&\29 434:GrSurfaceProxyView::asTextureProxy\28\29\20const 435:umtx_lock_73 436:icu_73::UVector32::expandCapacity\28int\2c\20UErrorCode&\29 437:RoughlyEqualUlps\28float\2c\20float\29 438:GrGLSLVaryingHandler::addVarying\28char\20const*\2c\20GrGLSLVarying*\2c\20GrGLSLVaryingHandler::Interpolation\29 439:SkTDStorage::reserve\28int\29 440:SkStringPrintf\28char\20const*\2c\20...\29 441:SkSL::SymbolTable::addWithoutOwnershipOrDie\28SkSL::Symbol*\29 442:SkPath::Iter::next\28SkPoint*\29 443:OT::Layout::Common::Coverage::get_coverage\28unsigned\20int\29\20const 444:GrQuad::MakeFromRect\28SkRect\20const&\2c\20SkMatrix\20const&\29 445:round 446:SkRecord::grow\28\29 447:SkRGBA4f<\28SkAlphaType\293>::toBytes_RGBA\28\29\20const 448:GrProcessor::operator\20new\28unsigned\20long\2c\20unsigned\20long\29 449:std::__2::default_delete::operator\28\29\5babi:v160004\5d\28SkSL::SymbolTable*\29\20const 450:skgpu::ganesh::SurfaceDrawContext::addDrawOp\28GrClip\20const*\2c\20std::__2::unique_ptr>\2c\20std::__2::function\20const&\29 451:skgpu::ResourceKeyHash\28unsigned\20int\20const*\2c\20unsigned\20long\29 452:icu_73::UVector::elementAt\28int\29\20const 453:VP8LoadFinalBytes 454:SkSL::TProgramVisitor::visitStatement\28SkSL::Statement\20const&\29 455:SkSL::RP::Builder::discard_stack\28int\2c\20int\29 456:SkPath::moveTo\28float\2c\20float\29 457:SkPath::conicTo\28float\2c\20float\2c\20float\2c\20float\2c\20float\29 458:SkCanvas::predrawNotify\28bool\29 459:std::__2::__cloc\28\29 460:sscanf 461:SkSurfaceProps::SkSurfaceProps\28\29 462:SkStrikeSpec::~SkStrikeSpec\28\29 463:GrSkSLFP::GrSkSLFP\28sk_sp\2c\20char\20const*\2c\20GrSkSLFP::OptFlags\29 464:GrBackendFormat::GrBackendFormat\28\29 465:__multf3 466:VP8LReadBits 467:SkTDStorage::append\28int\29 468:SkPath::isFinite\28\29\20const 469:SkMatrix::setScale\28float\2c\20float\29 470:SkIRect\20skif::Mapping::map\28SkIRect\20const&\2c\20SkMatrix\20const&\29 471:GrOpsRenderPass::setScissorRect\28SkIRect\20const&\29 472:GrOpsRenderPass::bindPipeline\28GrProgramInfo\20const&\2c\20SkRect\20const&\29 473:hb_draw_funcs_t::start_path\28void*\2c\20hb_draw_state_t&\29 474:SkPath::operator=\28SkPath\20const&\29 475:SkColorSpaceXformSteps::SkColorSpaceXformSteps\28SkColorSpace\20const*\2c\20SkAlphaType\2c\20SkColorSpace\20const*\2c\20SkAlphaType\29 476:GrSimpleMeshDrawOpHelper::~GrSimpleMeshDrawOpHelper\28\29 477:GrProcessorSet::GrProcessorSet\28GrPaint&&\29 478:GrCaps::getDefaultBackendFormat\28GrColorType\2c\20skgpu::Renderable\29\20const 479:GrBackendFormats::AsGLFormat\28GrBackendFormat\20const&\29 480:std::__2::locale::id::__get\28\29 481:std::__2::locale::facet::facet\5babi:v160004\5d\28unsigned\20long\29 482:skia_private::TArray::push_back_raw\28int\29 483:icu_73::umtx_initImplPreInit\28icu_73::UInitOnce&\29 484:icu_73::umtx_initImplPostInit\28icu_73::UInitOnce&\29 485:hb_buffer_t::_infos_set_glyph_flags\28hb_glyph_info_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 486:SkSL::PipelineStage::PipelineStageCodeGenerator::writeExpression\28SkSL::Expression\20const&\2c\20SkSL::OperatorPrecedence\29 487:SkSL::Inliner::inlineExpression\28SkSL::Position\2c\20skia_private::THashMap>\2c\20SkGoodHash>*\2c\20SkSL::SymbolTable*\2c\20SkSL::Expression\20const&\29 488:SkSL::GLSLCodeGenerator::writeIdentifier\28std::__2::basic_string_view>\29 489:SkPath::reset\28\29 490:SkPath::isEmpty\28\29\20const 491:SkPaint::setStyle\28SkPaint::Style\29 492:GrGeometryProcessor::AttributeSet::initImplicit\28GrGeometryProcessor::Attribute\20const*\2c\20int\29 493:GrContext_Base::contextID\28\29\20const 494:FT_Stream_EnterFrame 495:AlmostEqualUlps\28float\2c\20float\29 496:udata_close_73 497:std::__2::locale::__imp::install\28std::__2::locale::facet*\2c\20long\29 498:skia_png_read_data 499:SkSpinlock::contendedAcquire\28\29 500:SkSL::evaluate_n_way_intrinsic\28SkSL::Context\20const&\2c\20SkSL::Expression\20const*\2c\20SkSL::Expression\20const*\2c\20SkSL::Expression\20const*\2c\20SkSL::Type\20const&\2c\20double\20\28*\29\28double\2c\20double\2c\20double\29\29\20\28.18\29 501:SkSL::FunctionDeclaration::description\28\29\20const 502:SkRuntimeEffect::MakeForShader\28SkString\2c\20SkRuntimeEffect::Options\20const&\29 503:SkDPoint::approximatelyEqual\28SkDPoint\20const&\29\20const 504:GrSurfaceProxy::backingStoreDimensions\28\29\20const 505:GrOpsRenderPass::bindTextures\28GrGeometryProcessor\20const&\2c\20GrSurfaceProxy\20const*\20const*\2c\20GrPipeline\20const&\29 506:uprv_asciitolower_73 507:ucln_common_registerCleanup_73 508:std::__2::basic_string\2c\20std::__2::allocator>::~basic_string\28\29 509:skgpu::ganesh::SurfaceContext::drawingManager\28\29 510:skgpu::UniqueKey::GenerateDomain\28\29 511:hb_buffer_t::_set_glyph_flags\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20bool\2c\20bool\29 512:emscripten_longjmp 513:SkDynamicMemoryWStream::write\28void\20const*\2c\20unsigned\20long\29 514:GrMeshDrawOp::GrMeshDrawOp\28unsigned\20int\29 515:FT_RoundFix 516:uprv_realloc_73 517:std::__2::unique_ptr::~unique_ptr\5babi:v160004\5d\28\29 518:std::__2::unique_ptr::unique_ptr\5babi:v160004\5d\28unsigned\20char*\2c\20std::__2::__dependent_type\2c\20true>::__good_rval_ref_type\29 519:icu_73::UnicodeSet::UnicodeSet\28\29 520:hb_face_get_glyph_count 521:cf2_stack_pushFixed 522:__multi3 523:SkSL::RP::Builder::push_duplicates\28int\29 524:SkSL::ConstructorCompound::MakeFromConstants\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20double\20const*\29 525:SkMatrix::postTranslate\28float\2c\20float\29 526:SkBlockAllocator::reset\28\29 527:SkBitmapDevice::drawMesh\28SkMesh\20const&\2c\20sk_sp\2c\20SkPaint\20const&\29 528:GrTextureEffect::Make\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkMatrix\20const&\2c\20SkFilterMode\2c\20SkMipmapMode\29 529:GrGLSLVaryingHandler::addPassThroughAttribute\28GrShaderVar\20const&\2c\20char\20const*\2c\20GrGLSLVaryingHandler::Interpolation\29 530:GrFragmentProcessor::registerChild\28std::__2::unique_ptr>\2c\20SkSL::SampleUsage\29 531:FT_Stream_ReleaseFrame 532:void\20emscripten::internal::raw_destructor\28GrDirectContext*\29 533:std::__2::istreambuf_iterator>::operator*\5babi:v160004\5d\28\29\20const 534:skia::textlayout::TextStyle::TextStyle\28skia::textlayout::TextStyle\20const&\29 535:hb_buffer_t::merge_clusters_impl\28unsigned\20int\2c\20unsigned\20int\29 536:decltype\28fp.sanitize\28this\29\29\20hb_sanitize_context_t::_dispatch\28OT::Layout::Common::Coverage\20const&\2c\20hb_priority<1u>\29 537:byn$mgfn-shared$decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28\29::'lambda'\28void*\29>\28SkNullBlitter&&\29::'lambda'\28char*\29::__invoke\28char*\29 538:SkWStream::writePackedUInt\28unsigned\20long\29 539:SkSurface_Base::aboutToDraw\28SkSurface::ContentChangeMode\29 540:SkSL::RP::Builder::push_constant_i\28int\2c\20int\29 541:SkSL::BreakStatement::~BreakStatement\28\29 542:SkNullBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 543:SkColorInfo::refColorSpace\28\29\20const 544:GrPipeline::visitProxies\28std::__2::function\20const&\29\20const 545:GrGeometryProcessor::GrGeometryProcessor\28GrProcessor::ClassID\29 546:std::__2::istreambuf_iterator>::operator*\5babi:v160004\5d\28\29\20const 547:icu_73::UnicodeSet::add\28int\2c\20int\29 548:SkSL::fold_expression\28SkSL::Position\2c\20double\2c\20SkSL::Type\20const*\29 549:SkSL::Transform::FindAndDeclareBuiltinFunctions\28SkSL::Program&\29::$_0::operator\28\29\28SkSL::FunctionDefinition\20const*\2c\20SkSL::FunctionDefinition\20const*\29\20const 550:SkSL::RP::Generator::binaryOp\28SkSL::Type\20const&\2c\20SkSL::RP::Generator::TypedOps\20const&\29 551:SkJSONWriter::appendf\28char\20const*\2c\20...\29 552:SkDynamicMemoryWStream::~SkDynamicMemoryWStream\28\29 553:SkBitmap::setImmutable\28\29 554:GrGeometryProcessor::Attribute&\20skia_private::TArray::emplace_back\28char\20const\20\28&\29\20\5b10\5d\2c\20GrVertexAttribType&&\2c\20SkSLType&&\29 555:Cr_z_crc32 556:std::__2::basic_string\2c\20std::__2::allocator>::push_back\28char\29 557:skia_png_push_save_buffer 558:cosf 559:SkString::equals\28SkString\20const&\29\20const 560:SkShaderBase::SkShaderBase\28\29 561:SkSL::RP::SlotManager::getVariableSlots\28SkSL::Variable\20const&\29 562:SkSL::RP::Builder::unary_op\28SkSL::RP::BuilderOp\2c\20int\29 563:SkSL::Pool::FreeMemory\28void*\29 564:SkReadBuffer::readScalar\28\29 565:SkPaint::setShader\28sk_sp\29 566:GrProcessorSet::visitProxies\28std::__2::function\20const&\29\20const 567:GrGLTexture::target\28\29\20const 568:sk_srgb_singleton\28\29 569:fma 570:SkPaint::SkPaint\28SkPaint&&\29 571:SkDPoint::ApproximatelyEqual\28SkPoint\20const&\2c\20SkPoint\20const&\29 572:SkBitmap::SkBitmap\28SkBitmap\20const&\29 573:void\20std::__2::vector>\2c\20std::__2::allocator>>>::__push_back_slow_path>>\28std::__2::unique_ptr>&&\29 574:std::__2::basic_string\2c\20std::__2::allocator>::__init_copy_ctor_external\28char\20const*\2c\20unsigned\20long\29 575:skip_spaces 576:sk_realloc_throw\28void*\2c\20unsigned\20long\29 577:emscripten::smart_ptr_trait>::get\28sk_sp\20const&\29 578:cff2_path_param_t::cubic_to\28CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\29 579:cff1_path_param_t::cubic_to\28CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\29 580:bool\20OT::Layout::Common::Coverage::collect_coverage\2c\20hb_set_digest_combiner_t\2c\20hb_set_digest_bits_pattern_t>>>\28hb_set_digest_combiner_t\2c\20hb_set_digest_combiner_t\2c\20hb_set_digest_bits_pattern_t>>*\29\20const 581:SkString::operator=\28SkString\20const&\29 582:SkSL::Type::toCompound\28SkSL::Context\20const&\2c\20int\2c\20int\29\20const 583:SkPath::transform\28SkMatrix\20const&\2c\20SkPath*\2c\20SkApplyPerspectiveClip\29\20const 584:SkPath::quadTo\28float\2c\20float\2c\20float\2c\20float\29 585:SkBlockAllocator::addBlock\28int\2c\20int\29 586:SkAAClipBlitter::~SkAAClipBlitter\28\29 587:OT::hb_ot_apply_context_t::match_properties_mark\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29\20const 588:GrThreadSafeCache::VertexData::~VertexData\28\29 589:GrShape::asPath\28SkPath*\2c\20bool\29\20const 590:GrShaderVar::appendDecl\28GrShaderCaps\20const*\2c\20SkString*\29\20const 591:GrPixmapBase::~GrPixmapBase\28\29 592:GrGLSLVaryingHandler::emitAttributes\28GrGeometryProcessor\20const&\29 593:std::__2::unique_ptr::reset\5babi:v160004\5d\28unsigned\20char*\29 594:std::__2::istreambuf_iterator>::operator++\5babi:v160004\5d\28\29 595:skia_private::TArray::push_back\28SkPaint\20const&\29 596:skcms_Transform 597:png_icc_profile_error 598:icu_73::UnicodeString::getChar32At\28int\29\20const 599:SkSL::evaluate_pairwise_intrinsic\28SkSL::Context\20const&\2c\20std::__2::array\20const&\2c\20SkSL::Type\20const&\2c\20double\20\28*\29\28double\2c\20double\2c\20double\29\29 600:SkSL::Type::MakeAliasType\28std::__2::basic_string_view>\2c\20SkSL::Type\20const&\29 601:SkSL::TProgramVisitor::visitExpression\28SkSL::Expression\20const&\29 602:SkRasterClip::~SkRasterClip\28\29 603:SkPixmap::reset\28SkImageInfo\20const&\2c\20void\20const*\2c\20unsigned\20long\29 604:SkPath::countPoints\28\29\20const 605:SkPaint::computeFastBounds\28SkRect\20const&\2c\20SkRect*\29\20const 606:SkPaint::canComputeFastBounds\28\29\20const 607:SkOpPtT::contains\28SkOpPtT\20const*\29\20const 608:SkOpAngle::segment\28\29\20const 609:SkMatrix::preConcat\28SkMatrix\20const&\29 610:SkMatrix::mapVectors\28SkPoint*\2c\20SkPoint\20const*\2c\20int\29\20const 611:SkMasks::getRed\28unsigned\20int\29\20const 612:SkMasks::getGreen\28unsigned\20int\29\20const 613:SkMasks::getBlue\28unsigned\20int\29\20const 614:SkColorInfo::shiftPerPixel\28\29\20const 615:SkBitmap::tryAllocPixels\28SkImageInfo\20const&\2c\20unsigned\20long\29 616:GrProcessorSet::~GrProcessorSet\28\29 617:GrMeshDrawOp::createProgramInfo\28GrMeshDrawTarget*\29 618:FT_Stream_ReadFields 619:AutoLayerForImageFilter::~AutoLayerForImageFilter\28\29 620:ures_getByKey_73 621:std::__2::istreambuf_iterator>::operator++\5babi:v160004\5d\28\29 622:saveSetjmp 623:operator==\28SkMatrix\20const&\2c\20SkMatrix\20const&\29 624:icu_73::UnicodeSet::compact\28\29 625:hb_face_t::load_num_glyphs\28\29\20const 626:fmodf 627:emscripten::internal::MethodInvoker::invoke\28int\20\28SkAnimatedImage::*\20const&\29\28\29\2c\20SkAnimatedImage*\29 628:emscripten::default_smart_ptr_trait>::construct_null\28\29 629:byn$mgfn-shared$std::__2::__function::__func\2c\20void\20\28SkIRect\20const&\29>::__clone\28\29\20const 630:VP8GetSignedValue 631:SkSafeMath::Mul\28unsigned\20long\2c\20unsigned\20long\29 632:SkSL::Type::MakeVectorType\28std::__2::basic_string_view>\2c\20char\20const*\2c\20SkSL::Type\20const&\2c\20int\29 633:SkRasterPipeline::SkRasterPipeline\28SkArenaAlloc*\29 634:SkPoint::setLength\28float\29 635:SkMatrix::postConcat\28SkMatrix\20const&\29 636:SkImageGenerator::onIsValid\28GrRecordingContext*\29\20const 637:OT::GDEF::accelerator_t::mark_set_covers\28unsigned\20int\2c\20unsigned\20int\29\20const 638:GrTextureProxy::mipmapped\28\29\20const 639:GrGpuResource::~GrGpuResource\28\29 640:FT_Stream_GetULong 641:FT_Get_Char_Index 642:Cr_z__tr_flush_bits 643:void\20emscripten::internal::raw_destructor>\28sk_sp*\29 644:void\20emscripten::internal::MemberAccess::setWire\28int\20RuntimeEffectUniform::*\20const&\2c\20RuntimeEffectUniform&\2c\20int\29 645:uhash_setKeyDeleter_73 646:uhash_put_73 647:std::__2::ctype::widen\5babi:v160004\5d\28char\29\20const 648:std::__2::__throw_overflow_error\5babi:v160004\5d\28char\20const*\29 649:skia_private::THashMap::set\28char\20const*\2c\20unsigned\20int\29 650:skia_png_chunk_report 651:skgpu::UniqueKey::operator=\28skgpu::UniqueKey\20const&\29 652:sk_double_nearly_zero\28double\29 653:int\20emscripten::internal::MemberAccess::getWire\28int\20RuntimeEffectUniform::*\20const&\2c\20RuntimeEffectUniform\20const&\29 654:icu_73::UnicodeString::tempSubString\28int\2c\20int\29\20const 655:hb_font_get_glyph 656:ft_mem_qalloc 657:fit_linear\28skcms_Curve\20const*\2c\20int\2c\20float\2c\20float*\2c\20float*\2c\20float*\29 658:expf 659:_output_with_dotted_circle\28hb_buffer_t*\29 660:WebPSafeMalloc 661:SkStream::readS32\28int*\29 662:SkSL::GLSLCodeGenerator::getTypeName\28SkSL::Type\20const&\29 663:SkRGBA4f<\28SkAlphaType\293>::FromColor\28unsigned\20int\29 664:SkPathRef::~SkPathRef\28\29 665:SkPath::Iter::Iter\28SkPath\20const&\2c\20bool\29 666:SkPaint::setPathEffect\28sk_sp\29 667:SkMatrix::setRectToRect\28SkRect\20const&\2c\20SkRect\20const&\2c\20SkMatrix::ScaleToFit\29 668:SkImageShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const::$_3::operator\28\29\28\28anonymous\20namespace\29::MipLevelHelper\20const*\29\20const 669:SkImageFilter::getInput\28int\29\20const 670:SkGlyph::rowBytes\28\29\20const 671:SkDrawable::getFlattenableType\28\29\20const 672:SkDrawable::getBounds\28\29 673:SkDCubic::ptAtT\28double\29\20const 674:SkColorSpace::MakeSRGB\28\29 675:SkColorInfo::SkColorInfo\28\29 676:GrOpFlushState::drawMesh\28GrSimpleMesh\20const&\29 677:GrImageInfo::GrImageInfo\28SkImageInfo\20const&\29 678:DefaultGeoProc::Impl::~Impl\28\29 679:uhash_init_73 680:out 681:jpeg_fill_bit_buffer 682:icu_73::UnicodeString::setToBogus\28\29 683:icu_73::UnicodeString::UnicodeString\28icu_73::UnicodeString\20const&\29 684:icu_73::ReorderingBuffer::appendZeroCC\28char16_t\20const*\2c\20char16_t\20const*\2c\20UErrorCode&\29 685:icu_73::CharStringByteSink::CharStringByteSink\28icu_73::CharString*\29 686:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkCanvas&\2c\20unsigned\20long\2c\20SkClipOp\2c\20bool\29\2c\20SkCanvas*\2c\20unsigned\20long\2c\20SkClipOp\2c\20bool\29 687:SkString::data\28\29 688:SkSL::Type::coerceExpression\28std::__2::unique_ptr>\2c\20SkSL::Context\20const&\29\20const 689:SkSL::Type::MakeGenericType\28char\20const*\2c\20SkSpan\2c\20SkSL::Type\20const*\29 690:SkSL::ConstantFolder::GetConstantValueForVariable\28SkSL::Expression\20const&\29 691:SkSL::Analysis::HasSideEffects\28SkSL::Expression\20const&\29 692:SkRegion::setRect\28SkIRect\20const&\29 693:SkRegion::SkRegion\28\29 694:SkRecords::FillBounds::adjustForSaveLayerPaints\28SkRect*\2c\20int\29\20const 695:SkPathStroker::lineTo\28SkPoint\20const&\2c\20SkPath::Iter\20const*\29 696:SkPaint::setMaskFilter\28sk_sp\29 697:SkPaint::setColor\28unsigned\20int\29 698:SkOpContourBuilder::flush\28\29 699:SkCanvas::restoreToCount\28int\29 700:SkCanvas::internalQuickReject\28SkRect\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const*\29 701:SkAutoPixmapStorage::~SkAutoPixmapStorage\28\29 702:GrMatrixEffect::Make\28SkMatrix\20const&\2c\20std::__2::unique_ptr>\29 703:u_strlen_73 704:std::__2::char_traits::assign\28char&\2c\20char\20const&\29 705:std::__2::basic_string\2c\20std::__2::allocator>::operator=\5babi:v160004\5d\28std::__2::basic_string\2c\20std::__2::allocator>&&\29 706:std::__2::__check_grouping\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int*\2c\20unsigned\20int*\2c\20unsigned\20int&\29 707:skia_png_malloc 708:skia::textlayout::Cluster::run\28\29\20const 709:skgpu::ganesh::SurfaceDrawContext::drawFilledQuad\28GrClip\20const*\2c\20GrPaint&&\2c\20DrawQuad*\2c\20GrUserStencilSettings\20const*\29 710:sk_sp::~sk_sp\28\29 711:png_write_complete_chunk 712:pad 713:icu_73::Locale::~Locale\28\29 714:hb_lockable_set_t::fini\28hb_mutex_t&\29 715:ft_mem_alloc 716:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkCanvas&\2c\20unsigned\20long\2c\20SkBlendMode\29\2c\20SkCanvas*\2c\20unsigned\20long\2c\20SkBlendMode\29 717:__ashlti3 718:SkWBuffer::writeNoSizeCheck\28void\20const*\2c\20unsigned\20long\29 719:SkTCoincident::setPerp\28SkTCurve\20const&\2c\20double\2c\20SkDPoint\20const&\2c\20SkTCurve\20const&\29 720:SkStrokeRec::SkStrokeRec\28SkStrokeRec::InitStyle\29 721:SkString::printf\28char\20const*\2c\20...\29 722:SkSL::Type::MakeMatrixType\28std::__2::basic_string_view>\2c\20char\20const*\2c\20SkSL::Type\20const&\2c\20int\2c\20signed\20char\29 723:SkSL::Operator::tightOperatorName\28\29\20const 724:SkReadBuffer::readColor4f\28SkRGBA4f<\28SkAlphaType\293>*\29 725:SkPixmap::reset\28\29 726:SkPictureData::requiredPaint\28SkReadBuffer*\29\20const 727:SkPath::cubicTo\28float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 728:SkPath::close\28\29 729:SkPaintToGrPaint\28GrRecordingContext*\2c\20GrColorInfo\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\2c\20SkSurfaceProps\20const&\2c\20GrPaint*\29 730:SkPaint::setColor\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkColorSpace*\29 731:SkMatrix::preTranslate\28float\2c\20float\29 732:SkMatrix::mapXY\28float\2c\20float\2c\20SkPoint*\29\20const 733:SkFindUnitQuadRoots\28float\2c\20float\2c\20float\2c\20float*\29 734:SkDeque::push_back\28\29 735:SkData::MakeWithCopy\28void\20const*\2c\20unsigned\20long\29 736:SkCanvas::~SkCanvas\28\29.1 737:SkCanvas::concat\28SkMatrix\20const&\29 738:SkBinaryWriteBuffer::writeBool\28bool\29 739:OT::hb_paint_context_t::return_t\20OT::Paint::dispatch\28OT::hb_paint_context_t*\29\20const 740:GrProgramInfo::GrProgramInfo\28GrCaps\20const&\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrPipeline\20const*\2c\20GrUserStencilSettings\20const*\2c\20GrGeometryProcessor\20const*\2c\20GrPrimitiveType\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 741:GrPixmapBase::GrPixmapBase\28GrImageInfo\2c\20void*\2c\20unsigned\20long\29 742:GrColorInfo::GrColorInfo\28GrColorType\2c\20SkAlphaType\2c\20sk_sp\29 743:FT_Outline_Translate 744:FT_Load_Glyph 745:FT_GlyphLoader_CheckPoints 746:DefaultGeoProc::~DefaultGeoProc\28\29 747:u_memcpy_73 748:std::__2::ctype\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 749:std::__2::basic_string\2c\20std::__2::allocator>::__set_short_size\5babi:v160004\5d\28unsigned\20long\29 750:std::__2::basic_string\2c\20std::__2::allocator>::__set_long_size\5babi:v160004\5d\28unsigned\20long\29 751:skcms_TransferFunction_eval 752:sinf 753:icu_73::UnicodeString::UnicodeString\28char16_t\20const*\29 754:icu_73::BMPSet::~BMPSet\28\29.1 755:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28GrDirectContext&\2c\20unsigned\20long\29\2c\20GrDirectContext*\2c\20unsigned\20long\29 756:cbrtf 757:byn$mgfn-shared$std::__2::__function::__func\2c\20float\20\28skia::textlayout::SkRange\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29>::__clone\28\29\20const 758:SkTextBlob::~SkTextBlob\28\29 759:SkRasterPipeline::extend\28SkRasterPipeline\20const&\29 760:SkPaint::setBlendMode\28SkBlendMode\29 761:SkMatrix::mapRadius\28float\29\20const 762:SkIRect::join\28SkIRect\20const&\29 763:SkData::MakeUninitialized\28unsigned\20long\29 764:SkDQuad::RootsValidT\28double\2c\20double\2c\20double\2c\20double*\29 765:SkDLine::nearPoint\28SkDPoint\20const&\2c\20bool*\29\20const 766:SkConic::chopIntoQuadsPOW2\28SkPoint*\2c\20int\29\20const 767:SkColorSpaceXformSteps::apply\28float*\29\20const 768:SkCodec::applyColorXform\28void*\2c\20void\20const*\2c\20int\29\20const 769:SkCachedData::internalRef\28bool\29\20const 770:SkBitmap::installPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20void\20\28*\29\28void*\2c\20void*\29\2c\20void*\29 771:GrSurface::RefCntedReleaseProc::~RefCntedReleaseProc\28\29 772:GrStyle::initPathEffect\28sk_sp\29 773:GrShape::bounds\28\29\20const 774:GrProcessor::operator\20delete\28void*\29 775:GrGpuResource::hasRef\28\29\20const 776:GrColorSpaceXformEffect::onMakeProgramImpl\28\29\20const::Impl::~Impl\28\29 777:GrBufferAllocPool::~GrBufferAllocPool\28\29.1 778:AutoLayerForImageFilter::AutoLayerForImageFilter\28SkCanvas*\2c\20SkPaint\20const&\2c\20SkRect\20const*\2c\20bool\29 779:u_terminateUChars_73 780:std::__2::numpunct::thousands_sep\5babi:v160004\5d\28\29\20const 781:std::__2::numpunct::grouping\5babi:v160004\5d\28\29\20const 782:std::__2::ctype\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 783:skia_png_malloc_warn 784:rewind\28GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::Comparator\20const&\29 785:icu_73::UnicodeString::setTo\28signed\20char\2c\20icu_73::ConstChar16Ptr\2c\20int\29 786:icu_73::UnicodeSet::add\28int\29 787:icu_73::UVector::removeAllElements\28\29 788:cf2_stack_popInt 789:SkUTF::NextUTF8\28char\20const**\2c\20char\20const*\29 790:SkSL::Analysis::IsCompileTimeConstant\28SkSL::Expression\20const&\29 791:SkPaint::setColorFilter\28sk_sp\29 792:SkMatrixPriv::MapRect\28SkM44\20const&\2c\20SkRect\20const&\29 793:SkDevice::createDevice\28SkDevice::CreateInfo\20const&\2c\20SkPaint\20const*\29 794:SkData::MakeEmpty\28\29 795:SkConic::computeQuadPOW2\28float\29\20const 796:SkColorInfo::makeColorType\28SkColorType\29\20const 797:SkCodec::~SkCodec\28\29 798:SkAAClip::quickContains\28int\2c\20int\2c\20int\2c\20int\29\20const 799:SkAAClip::isRect\28\29\20const 800:GrSurface::ComputeSize\28GrBackendFormat\20const&\2c\20SkISize\2c\20int\2c\20skgpu::Mipmapped\2c\20bool\29 801:GrSimpleMeshDrawOpHelper::GrSimpleMeshDrawOpHelper\28GrProcessorSet*\2c\20GrAAType\2c\20GrSimpleMeshDrawOpHelper::InputFlags\29 802:GrGeometryProcessor::ProgramImpl::SetTransform\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrResourceHandle\20const&\2c\20SkMatrix\20const&\2c\20SkMatrix*\29 803:GrDrawingManager::flushIfNecessary\28\29 804:GrBlendFragmentProcessor::Make\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20SkBlendMode\2c\20bool\29 805:FT_Stream_ExtractFrame 806:AAT::Lookup>::get_value\28unsigned\20int\2c\20unsigned\20int\29\20const 807:utext_current32_73 808:std::__2::ctype::widen\5babi:v160004\5d\28char\29\20const 809:std::__2::basic_string\2c\20std::__2::allocator>::__is_long\5babi:v160004\5d\28\29\20const 810:std::__2::__throw_bad_optional_access\5babi:v160004\5d\28\29 811:snprintf 812:skia_png_malloc_base 813:skgpu::ganesh::SurfaceDrawContext::~SurfaceDrawContext\28\29 814:skgpu::ganesh::AsView\28GrRecordingContext*\2c\20SkImage\20const*\2c\20skgpu::Mipmapped\2c\20GrImageTexGenPolicy\29 815:icu_73::UnicodeString::releaseBuffer\28int\29 816:icu_73::UnicodeSet::_appendToPat\28icu_73::UnicodeString&\2c\20int\2c\20signed\20char\29 817:icu_73::UVector::~UVector\28\29 818:hb_ot_face_t::init0\28hb_face_t*\29 819:hb_lazy_loader_t\2c\20hb_face_t\2c\2025u\2c\20OT::GSUB_accelerator_t>::get\28\29\20const 820:__addtf3 821:SkTDStorage::reset\28\29 822:SkScan::AntiHairLineRgn\28SkPoint\20const*\2c\20int\2c\20SkRegion\20const*\2c\20SkBlitter*\29 823:SkSL::TProgramVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 824:SkSL::RP::Builder::label\28int\29 825:SkSL::BinaryExpression::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20SkSL::Operator\2c\20std::__2::unique_ptr>\29 826:SkRuntimeEffect::MakeForColorFilter\28SkString\2c\20SkRuntimeEffect::Options\20const&\29 827:SkReadBuffer::skip\28unsigned\20long\2c\20unsigned\20long\29 828:SkPath::countVerbs\28\29\20const 829:SkMatrix::set9\28float\20const*\29 830:SkMatrix::getMaxScale\28\29\20const 831:SkImageInfo::computeByteSize\28unsigned\20long\29\20const 832:SkImageInfo::Make\28int\2c\20int\2c\20SkColorType\2c\20SkAlphaType\2c\20sk_sp\29 833:SkImageInfo::MakeA8\28int\2c\20int\29 834:SkImageGenerator::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkImageGenerator::Options\20const&\29 835:SkImageFilter_Base::SkImageFilter_Base\28sk_sp\20const*\2c\20int\2c\20std::__2::optional\29 836:SkDrawBase::drawPath\28SkPath\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const*\2c\20bool\2c\20bool\2c\20SkBlitter*\29\20const 837:SkData::MakeWithProc\28void\20const*\2c\20unsigned\20long\2c\20void\20\28*\29\28void\20const*\2c\20void*\29\2c\20void*\29 838:SkColorTypeIsAlwaysOpaque\28SkColorType\29 839:SkBlockAllocator::SkBlockAllocator\28SkBlockAllocator::GrowthPolicy\2c\20unsigned\20long\2c\20unsigned\20long\29 840:SkBlender::Mode\28SkBlendMode\29 841:ReadHuffmanCode 842:GrSurfaceProxy::~GrSurfaceProxy\28\29 843:GrRenderTask::makeClosed\28GrRecordingContext*\29 844:GrGpuBuffer::unmap\28\29 845:GrContext_Base::options\28\29\20const 846:GrCaps::getReadSwizzle\28GrBackendFormat\20const&\2c\20GrColorType\29\20const 847:GrBufferAllocPool::reset\28\29 848:FT_Stream_ReadByte 849:std::__2::char_traits::assign\28wchar_t&\2c\20wchar_t\20const&\29 850:std::__2::char_traits::copy\28char*\2c\20char\20const*\2c\20unsigned\20long\29 851:std::__2::basic_string\2c\20std::__2::allocator>::begin\5babi:v160004\5d\28\29 852:std::__2::__next_prime\28unsigned\20long\29 853:std::__2::__libcpp_snprintf_l\28char*\2c\20unsigned\20long\2c\20__locale_struct*\2c\20char\20const*\2c\20...\29 854:skif::LayerSpace::mapRect\28skif::LayerSpace\20const&\29\20const 855:locale_get_default_73 856:is_equal\28std::type_info\20const*\2c\20std::type_info\20const*\2c\20bool\29 857:icu_73::BytesTrie::~BytesTrie\28\29 858:hb_buffer_t::sync\28\29 859:__floatsitf 860:WebPSafeCalloc 861:StreamRemainingLengthIsBelow\28SkStream*\2c\20unsigned\20long\29 862:SkSL::RP::Builder::swizzle\28int\2c\20SkSpan\29 863:SkSL::Parser::expression\28\29 864:SkRGBA4f<\28SkAlphaType\293>::toSkColor\28\29\20const 865:SkPath::isConvex\28\29\20const 866:SkPaint::asBlendMode\28\29\20const 867:SkImageFilter_Base::getFlattenableType\28\29\20const 868:SkImageFilter_Base::getChildOutputLayerBounds\28int\2c\20skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 869:SkImageFilter_Base::getChildInputLayerBounds\28int\2c\20skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 870:SkIDChangeListener::List::~List\28\29 871:SkFontMgr::countFamilies\28\29\20const 872:SkDQuad::ptAtT\28double\29\20const 873:SkDLine::exactPoint\28SkDPoint\20const&\29\20const 874:SkDConic::ptAtT\28double\29\20const 875:SkColorInfo::makeAlphaType\28SkAlphaType\29\20const 876:SkCanvas::save\28\29 877:SkCanvas::drawImage\28SkImage\20const*\2c\20float\2c\20float\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\29 878:SkBitmap::setInfo\28SkImageInfo\20const&\2c\20unsigned\20long\29 879:SkAAClip::Builder::addRun\28int\2c\20int\2c\20unsigned\20int\2c\20int\29 880:GrSkSLFP::addChild\28std::__2::unique_ptr>\2c\20bool\29 881:GrGLSLShaderBuilder::appendTextureLookup\28SkString*\2c\20GrResourceHandle\2c\20char\20const*\29\20const 882:GrFragmentProcessor::cloneAndRegisterAllChildProcessors\28GrFragmentProcessor\20const&\29 883:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::~SwizzleFragmentProcessor\28\29 884:GrDrawOpAtlas::~GrDrawOpAtlas\28\29 885:GrBackendFormat::GrBackendFormat\28GrBackendFormat\20const&\29 886:AutoFTAccess::AutoFTAccess\28SkTypeface_FreeType\20const*\29 887:AlmostPequalUlps\28float\2c\20float\29 888:void\20std::__2::vector>\2c\20std::__2::allocator>>>::__emplace_back_slow_path>\28unsigned\20int\20const&\2c\20sk_sp&&\29 889:strncpy 890:std::__2::ctype::is\5babi:v160004\5d\28unsigned\20long\2c\20char\29\20const 891:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28char\20const*\29 892:std::__2::basic_string\2c\20std::__2::allocator>::__set_long_cap\5babi:v160004\5d\28unsigned\20long\29 893:skia_private::TArray::operator=\28skia_private::TArray&&\29 894:skia_png_reset_crc 895:memchr 896:icu_73::UnicodeString::operator=\28icu_73::UnicodeString\20const&\29 897:icu_73::UnicodeString::doReplace\28int\2c\20int\2c\20char16_t\20const*\2c\20int\2c\20int\29 898:icu_73::MlBreakEngine::initKeyValue\28UResourceBundle*\2c\20char\20const*\2c\20char\20const*\2c\20icu_73::Hashtable&\2c\20UErrorCode&\29 899:icu_73::CharString::appendInvariantChars\28icu_73::UnicodeString\20const&\2c\20UErrorCode&\29 900:icu_73::ByteSinkUtil::appendUnchanged\28unsigned\20char\20const*\2c\20unsigned\20char\20const*\2c\20icu_73::ByteSink&\2c\20unsigned\20int\2c\20icu_73::Edits*\2c\20UErrorCode&\29 901:hb_buffer_t::sync_so_far\28\29 902:hb_buffer_t::move_to\28unsigned\20int\29 903:VP8ExitCritical 904:SkTDStorage::resize\28int\29 905:SkSwizzler::swizzle\28void*\2c\20unsigned\20char\20const*\29 906:SkStream::readPackedUInt\28unsigned\20long*\29 907:SkSL::Type::coercionCost\28SkSL::Type\20const&\29\20const 908:SkSL::Type::clone\28SkSL::Context\20const&\2c\20SkSL::SymbolTable*\29\20const 909:SkSL::RP::Generator::writeStatement\28SkSL::Statement\20const&\29 910:SkSL::Parser::operatorRight\28SkSL::Parser::AutoDepth&\2c\20SkSL::OperatorKind\2c\20std::__2::unique_ptr>\20\28SkSL::Parser::*\29\28\29\2c\20std::__2::unique_ptr>&\29 911:SkResourceCache::Key::init\28void*\2c\20unsigned\20long\20long\2c\20unsigned\20long\29 912:SkReadBuffer::skip\28unsigned\20long\29 913:SkReadBuffer::readFlattenable\28SkFlattenable::Type\29 914:SkRBuffer::read\28void*\2c\20unsigned\20long\29 915:SkIDChangeListener::List::List\28\29 916:SkGlyph::path\28\29\20const 917:GrStyledShape::GrStyledShape\28GrStyledShape\20const&\29 918:GrRenderTargetProxy::arenas\28\29 919:GrOpFlushState::caps\28\29\20const 920:GrGpuResource::hasNoCommandBufferUsages\28\29\20const 921:GrGeometryProcessor::ProgramImpl::WriteLocalCoord\28GrGLSLVertexBuilder*\2c\20GrGLSLUniformHandler*\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\2c\20GrShaderVar\2c\20SkMatrix\20const&\2c\20GrResourceHandle*\29 922:GrGLTextureParameters::SamplerOverriddenState::SamplerOverriddenState\28\29 923:GrGLGpu::deleteFramebuffer\28unsigned\20int\29 924:GrFragmentProcessors::Make\28SkShader\20const*\2c\20GrFPArgs\20const&\2c\20SkShaders::MatrixRec\20const&\29 925:FT_Stream_ReadULong 926:FT_Get_Module 927:Cr_z__tr_flush_block 928:AlmostBequalUlps\28float\2c\20float\29 929:utext_previous32_73 930:ures_getByKeyWithFallback_73 931:std::__2::numpunct::truename\5babi:v160004\5d\28\29\20const 932:std::__2::moneypunct::do_grouping\28\29\20const 933:std::__2::locale::use_facet\28std::__2::locale::id&\29\20const 934:std::__2::ctype::is\5babi:v160004\5d\28unsigned\20long\2c\20wchar_t\29\20const 935:std::__2::basic_string\2c\20std::__2::allocator>::empty\5babi:v160004\5d\28\29\20const 936:sktext::gpu::BagOfBytes::needMoreBytes\28int\2c\20int\29 937:skia_png_save_int_32 938:skia_png_safecat 939:skia_png_gamma_significant 940:skgpu::ganesh::SurfaceContext::readPixels\28GrDirectContext*\2c\20GrPixmap\2c\20SkIPoint\29 941:icu_73::UnicodeString::getBuffer\28int\29 942:icu_73::UnicodeString::doAppend\28icu_73::UnicodeString\20const&\2c\20int\2c\20int\29 943:icu_73::UVector32::~UVector32\28\29 944:icu_73::RuleBasedBreakIterator::handleNext\28\29 945:hb_lazy_loader_t\2c\20hb_face_t\2c\2026u\2c\20OT::GPOS_accelerator_t>::get\28\29\20const 946:hb_font_get_nominal_glyph 947:hb_buffer_t::clear_output\28\29 948:emscripten::internal::MethodInvoker::invoke\28void\20\28SkCanvas::*\20const&\29\28SkPaint\20const&\29\2c\20SkCanvas*\2c\20SkPaint*\29 949:cff_parse_num 950:T_CString_toLowerCase_73 951:SkTSect::SkTSect\28SkTCurve\20const&\29 952:SkStrokeRec::SkStrokeRec\28SkPaint\20const&\2c\20float\29 953:SkString::set\28char\20const*\2c\20unsigned\20long\29 954:SkSize\20skif::Mapping::map\28SkSize\20const&\2c\20SkMatrix\20const&\29 955:SkSL::SymbolTable::addWithoutOwnership\28SkSL::Context\20const&\2c\20SkSL::Symbol*\29 956:SkSL::Swizzle::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20skia_private::STArray<4\2c\20signed\20char\2c\20true>\29 957:SkSL::String::appendf\28std::__2::basic_string\2c\20std::__2::allocator>*\2c\20char\20const*\2c\20...\29 958:SkSL::Parser::layoutInt\28\29 959:SkSL::Parser::expectIdentifier\28SkSL::Token*\29 960:SkRegion::Cliperator::next\28\29 961:SkRegion::Cliperator::Cliperator\28SkRegion\20const&\2c\20SkIRect\20const&\29 962:SkRRect::initializeRect\28SkRect\20const&\29 963:SkPictureRecorder::~SkPictureRecorder\28\29 964:SkPathRef::CreateEmpty\28\29 965:SkPath::addRect\28SkRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\29 966:SkPaint::setImageFilter\28sk_sp\29 967:SkMasks::getAlpha\28unsigned\20int\29\20const 968:SkM44::setConcat\28SkM44\20const&\2c\20SkM44\20const&\29 969:SkImageFilters::Crop\28SkRect\20const&\2c\20SkTileMode\2c\20sk_sp\29 970:SkImageFilter_Base::getChildOutput\28int\2c\20skif::Context\20const&\29\20const 971:SkData::MakeFromMalloc\28void\20const*\2c\20unsigned\20long\29 972:SkDRect::setBounds\28SkTCurve\20const&\29 973:SkColorFilter::isAlphaUnchanged\28\29\20const 974:SkChopCubicAt\28SkPoint\20const*\2c\20SkPoint*\2c\20float\29 975:SkCanvas::translate\28float\2c\20float\29 976:SkBitmapCache::Rec::getKey\28\29\20const 977:PS_Conv_ToFixed 978:OT::hb_ot_apply_context_t::hb_ot_apply_context_t\28unsigned\20int\2c\20hb_font_t*\2c\20hb_buffer_t*\2c\20hb_blob_t*\29 979:GrTriangulator::Line::intersect\28GrTriangulator::Line\20const&\2c\20SkPoint*\29\20const 980:GrSimpleMeshDrawOpHelper::isCompatible\28GrSimpleMeshDrawOpHelper\20const&\2c\20GrCaps\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20bool\29\20const 981:GrQuad::MakeFromSkQuad\28SkPoint\20const*\2c\20SkMatrix\20const&\29 982:GrOpsRenderPass::bindBuffers\28sk_sp\2c\20sk_sp\2c\20sk_sp\2c\20GrPrimitiveRestart\29 983:GrImageInfo::GrImageInfo\28GrColorType\2c\20SkAlphaType\2c\20sk_sp\2c\20SkISize\20const&\29 984:GrColorInfo::GrColorInfo\28SkColorInfo\20const&\29 985:AlmostDequalUlps\28double\2c\20double\29 986:utrace_exit_73 987:utrace_entry_73 988:ures_hasNext_73 989:ures_getNextResource_73 990:uprv_toupper_73 991:tt_face_get_name 992:strrchr 993:std::__2::vector>::size\5babi:v160004\5d\28\29\20const 994:std::__2::to_string\28long\20long\29 995:std::__2::__libcpp_locale_guard::~__libcpp_locale_guard\5babi:v160004\5d\28\29 996:std::__2::__libcpp_locale_guard::__libcpp_locale_guard\5babi:v160004\5d\28__locale_struct*&\29 997:skia_png_benign_error 998:skia_png_app_error 999:skgpu::ganesh::SurfaceFillContext::getOpsTask\28\29 1000:isdigit 1001:icu_73::Locale::Locale\28char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\29 1002:hb_sanitize_context_t::return_t\20OT::Paint::dispatch\28hb_sanitize_context_t*\29\20const 1003:hb_ot_layout_lookup_would_substitute 1004:hb_buffer_t::unsafe_to_break\28unsigned\20int\2c\20unsigned\20int\29 1005:ft_module_get_service 1006:emscripten::internal::FunctionInvoker::invoke\28unsigned\20long\20\28**\29\28GrDirectContext&\29\2c\20GrDirectContext*\29 1007:cf2_hintmap_map 1008:byn$mgfn-shared$std::__2::__function::__func\2c\20void\20\28int\2c\20skia::textlayout::Paragraph::VisitorInfo\20const*\29>::__clone\28std::__2::__function::__base*\29\20const 1009:byn$mgfn-shared$std::__2::__function::__func\2c\20void\20\28int\2c\20skia::textlayout::Paragraph::VisitorInfo\20const*\29>::__clone\28\29\20const 1010:blit_trapezoid_row\28AdditiveBlitter*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char*\2c\20bool\2c\20bool\2c\20bool\29 1011:__sindf 1012:__shlim 1013:__cosdf 1014:\28anonymous\20namespace\29::init_resb_result\28UResourceDataEntry*\2c\20unsigned\20int\2c\20char\20const*\2c\20int\2c\20UResourceDataEntry*\2c\20char\20const*\2c\20int\2c\20UResourceBundle*\2c\20UErrorCode*\29 1015:SkTiffImageFileDirectory::getEntryValuesGeneric\28unsigned\20short\2c\20unsigned\20short\2c\20unsigned\20int\2c\20void*\29\20const 1016:SkSurface::getCanvas\28\29 1017:SkSL::cast_expression\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Type\20const&\29 1018:SkSL::\28anonymous\20namespace\29::ProgramUsageVisitor::visitType\28SkSL::Type\20const&\29 1019:SkSL::Variable::initialValue\28\29\20const 1020:SkSL::SymbolTable::addArrayDimension\28SkSL::Context\20const&\2c\20SkSL::Type\20const*\2c\20int\29 1021:SkSL::StringStream::str\28\29\20const 1022:SkSL::RP::Program::appendCopy\28skia_private::TArray*\2c\20SkArenaAlloc*\2c\20std::byte*\2c\20SkSL::RP::ProgramOp\2c\20unsigned\20int\2c\20int\2c\20unsigned\20int\2c\20int\2c\20int\29\20const 1023:SkSL::RP::Generator::makeLValue\28SkSL::Expression\20const&\2c\20bool\29 1024:SkSL::RP::DynamicIndexLValue::dynamicSlotRange\28\29 1025:SkSL::GLSLCodeGenerator::writeStatement\28SkSL::Statement\20const&\29 1026:SkSL::Expression::description\28\29\20const 1027:SkSL::Analysis::UpdateVariableRefKind\28SkSL::Expression*\2c\20SkSL::VariableRefKind\2c\20SkSL::ErrorReporter*\29 1028:SkRegion::setEmpty\28\29 1029:SkRasterPipeline::appendLoadDst\28SkColorType\2c\20SkRasterPipeline_MemoryCtx\20const*\29 1030:SkRRect::setRectRadii\28SkRect\20const&\2c\20SkPoint\20const*\29 1031:SkRRect::setOval\28SkRect\20const&\29 1032:SkPointPriv::DistanceToLineSegmentBetweenSqd\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\29 1033:SkPath::arcTo\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\29 1034:SkPath::addPath\28SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkPath::AddPathMode\29 1035:SkPaint::operator=\28SkPaint&&\29 1036:SkOpSpanBase::contains\28SkOpSegment\20const*\29\20const 1037:SkMipmap::ComputeLevelCount\28int\2c\20int\29 1038:SkMatrix::mapHomogeneousPoints\28SkPoint3*\2c\20SkPoint\20const*\2c\20int\29\20const 1039:SkImageFilter::countInputs\28\29\20const 1040:SkIDChangeListener::List::changed\28\29 1041:SkDynamicMemoryWStream::detachAsData\28\29 1042:SkDevice::makeSpecial\28SkBitmap\20const&\29 1043:SkColorFilter::filterColor4f\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkColorSpace*\2c\20SkColorSpace*\29\20const 1044:SkCanvas::drawPath\28SkPath\20const&\2c\20SkPaint\20const&\29 1045:SkBlockMemoryStream::getLength\28\29\20const 1046:SkAutoPixmapStorage::SkAutoPixmapStorage\28\29 1047:SkAAClipBlitterWrapper::init\28SkRasterClip\20const&\2c\20SkBlitter*\29 1048:SkAAClipBlitterWrapper::SkAAClipBlitterWrapper\28\29 1049:RunBasedAdditiveBlitter::flush\28\29 1050:GrSurface::onRelease\28\29 1051:GrStyledShape::unstyledKeySize\28\29\20const 1052:GrShape::convex\28bool\29\20const 1053:GrRecordingContext::threadSafeCache\28\29 1054:GrProxyProvider::caps\28\29\20const 1055:GrOp::GrOp\28unsigned\20int\29 1056:GrMakeUncachedBitmapProxyView\28GrRecordingContext*\2c\20SkBitmap\20const&\2c\20skgpu::Mipmapped\2c\20SkBackingFit\2c\20skgpu::Budgeted\29 1057:GrGLSLShaderBuilder::getMangledFunctionName\28char\20const*\29 1058:GrGLGpu::bindBuffer\28GrGpuBufferType\2c\20GrBuffer\20const*\29 1059:GrGLAttribArrayState::set\28GrGLGpu*\2c\20int\2c\20GrBuffer\20const*\2c\20GrVertexAttribType\2c\20SkSLType\2c\20int\2c\20unsigned\20long\2c\20int\29 1060:GrAAConvexTessellator::Ring::computeNormals\28GrAAConvexTessellator\20const&\29 1061:GrAAConvexTessellator::Ring::computeBisectors\28GrAAConvexTessellator\20const&\29 1062:FT_Activate_Size 1063:Cr_z_adler32 1064:vsnprintf 1065:void\20extend_pts<\28SkPaint::Cap\292>\28SkPath::Verb\2c\20SkPath::Verb\2c\20SkPoint*\2c\20int\29 1066:void\20extend_pts<\28SkPaint::Cap\291>\28SkPath::Verb\2c\20SkPath::Verb\2c\20SkPoint*\2c\20int\29 1067:ures_getStringByKey_73 1068:ucptrie_getRange_73 1069:u_terminateChars_73 1070:u_strchr_73 1071:top12 1072:toSkImageInfo\28SimpleImageInfo\20const&\29 1073:std::__2::pair::type\2c\20std::__2::__unwrap_ref_decay::type>\20std::__2::make_pair\5babi:v160004\5d\28char\20const*&&\2c\20char*&&\29 1074:std::__2::basic_string\2c\20std::__2::allocator>::operator=\5babi:v160004\5d\28std::__2::basic_string\2c\20std::__2::allocator>&&\29 1075:std::__2::basic_string\2c\20std::__2::allocator>\20std::__2::operator+\2c\20std::__2::allocator>\28char\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 1076:std::__2::__tree\2c\20std::__2::__map_value_compare\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator>>::destroy\28std::__2::__tree_node\2c\20void*>*\29 1077:std::__2::__num_put_base::__identify_padding\28char*\2c\20char*\2c\20std::__2::ios_base\20const&\29 1078:std::__2::__num_get_base::__get_base\28std::__2::ios_base&\29 1079:std::__2::__libcpp_asprintf_l\28char**\2c\20__locale_struct*\2c\20char\20const*\2c\20...\29 1080:skif::RoundOut\28SkRect\29 1081:skia_private::THashTable::Traits>::removeSlot\28int\29 1082:skia_png_zstream_error 1083:skia::textlayout::TextLine::iterateThroughVisualRuns\28bool\2c\20std::__2::function\2c\20float*\29>\20const&\29\20const 1084:skia::textlayout::ParagraphImpl::cluster\28unsigned\20long\29 1085:skia::textlayout::Cluster::runOrNull\28\29\20const 1086:skgpu::ganesh::SurfaceFillContext::replaceOpsTask\28\29 1087:skcms_TransferFunction_getType 1088:skcms_GetTagBySignature 1089:read_curve\28unsigned\20char\20const*\2c\20unsigned\20int\2c\20skcms_Curve*\2c\20unsigned\20int*\29 1090:pow 1091:int\20std::__2::__get_up_to_n_digits\5babi:v160004\5d>>\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\2c\20int\29 1092:int\20std::__2::__get_up_to_n_digits\5babi:v160004\5d>>\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\2c\20int\29 1093:icu_73::UnicodeString::unBogus\28\29 1094:icu_73::UnicodeString::doIndexOf\28char16_t\2c\20int\2c\20int\29\20const 1095:icu_73::UnicodeSetStringSpan::~UnicodeSetStringSpan\28\29 1096:icu_73::UVector::adoptElement\28void*\2c\20UErrorCode&\29 1097:icu_73::SimpleFilteredSentenceBreakIterator::operator==\28icu_73::BreakIterator\20const&\29\20const 1098:icu_73::Locale::init\28char\20const*\2c\20signed\20char\29 1099:hb_serialize_context_t::pop_pack\28bool\29 1100:hb_lazy_loader_t\2c\20hb_face_t\2c\206u\2c\20hb_blob_t>::get\28\29\20const 1101:getenv 1102:bool\20std::__2::operator!=\5babi:v160004\5d\28std::__2::__wrap_iter\20const&\2c\20std::__2::__wrap_iter\20const&\29 1103:afm_parser_read_vals 1104:__extenddftf2 1105:\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29 1106:\28anonymous\20namespace\29::colrv1_traverse_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29 1107:\28anonymous\20namespace\29::colrv1_transform\28FT_FaceRec_*\2c\20FT_COLR_Paint_\20const&\2c\20SkCanvas*\2c\20SkMatrix*\29 1108:WebPRescalerImport 1109:SkTDStorage::removeShuffle\28int\29 1110:SkString::SkString\28char\20const*\2c\20unsigned\20long\29 1111:SkScan::HairLineRgn\28SkPoint\20const*\2c\20int\2c\20SkRegion\20const*\2c\20SkBlitter*\29 1112:SkSL::VariableReference::VariableReference\28SkSL::Position\2c\20SkSL::Variable\20const*\2c\20SkSL::VariableRefKind\29 1113:SkSL::SymbolTable::lookup\28SkSL::SymbolTable::SymbolKey\20const&\29\20const 1114:SkSL::ProgramUsage::get\28SkSL::Variable\20const&\29\20const 1115:SkSL::Inliner::inlineStatement\28SkSL::Position\2c\20skia_private::THashMap>\2c\20SkGoodHash>*\2c\20SkSL::SymbolTable*\2c\20std::__2::unique_ptr>*\2c\20SkSL::Analysis::ReturnComplexity\2c\20SkSL::Statement\20const&\2c\20SkSL::ProgramUsage\20const&\2c\20bool\29 1116:SkSL::InlineCandidateAnalyzer::visitExpression\28std::__2::unique_ptr>*\29 1117:SkSL::GLSLCodeGenerator::getTypePrecision\28SkSL::Type\20const&\29 1118:SkRuntimeEffect::Uniform::sizeInBytes\28\29\20const 1119:SkReadBuffer::readByteArray\28void*\2c\20unsigned\20long\29 1120:SkRasterPipeline::run\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29\20const 1121:SkPictureData::optionalPaint\28SkReadBuffer*\29\20const 1122:SkPathWriter::isClosed\28\29\20const 1123:SkPath::isRect\28SkRect*\2c\20bool*\2c\20SkPathDirection*\29\20const 1124:SkPaint::setStrokeWidth\28float\29 1125:SkOpSegment::nextChase\28SkOpSpanBase**\2c\20int*\2c\20SkOpSpan**\2c\20SkOpSpanBase**\29\20const 1126:SkOpSegment::addCurveTo\28SkOpSpanBase\20const*\2c\20SkOpSpanBase\20const*\2c\20SkPathWriter*\29\20const 1127:SkMemoryStream::Make\28sk_sp\29 1128:SkMatrix::preScale\28float\2c\20float\29 1129:SkMatrix::postScale\28float\2c\20float\29 1130:SkMatrix::isSimilarity\28float\29\20const 1131:SkMask::computeImageSize\28\29\20const 1132:SkIntersections::removeOne\28int\29 1133:SkImageInfo::Make\28int\2c\20int\2c\20SkColorType\2c\20SkAlphaType\29 1134:SkDLine::ptAtT\28double\29\20const 1135:SkColorSpace::Equals\28SkColorSpace\20const*\2c\20SkColorSpace\20const*\29 1136:SkColorFilter::makeComposed\28sk_sp\29\20const 1137:SkBulkGlyphMetrics::~SkBulkGlyphMetrics\28\29 1138:SkBitmap::peekPixels\28SkPixmap*\29\20const 1139:SkAAClip::setEmpty\28\29 1140:PS_Conv_Strtol 1141:OT::Layout::GSUB_impl::SubstLookup*\20hb_serialize_context_t::push\28\29 1142:GrTriangulator::makeConnectingEdge\28GrTriangulator::Vertex*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::EdgeType\2c\20GrTriangulator::Comparator\20const&\2c\20int\29 1143:GrTextureProxy::~GrTextureProxy\28\29 1144:GrSimpleMeshDrawOpHelper::createProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrGeometryProcessor*\2c\20GrPrimitiveType\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 1145:GrResourceAllocator::addInterval\28GrSurfaceProxy*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20GrResourceAllocator::ActualUse\2c\20GrResourceAllocator::AllowRecycling\29 1146:GrRecordingContextPriv::makeSFCWithFallback\28GrImageInfo\2c\20SkBackingFit\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrSurfaceOrigin\2c\20skgpu::Budgeted\29 1147:GrGpuBuffer::updateData\28void\20const*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\29 1148:GrGLTextureParameters::NonsamplerState::NonsamplerState\28\29 1149:GrGLSLShaderBuilder::~GrGLSLShaderBuilder\28\29 1150:GrGLSLProgramBuilder::nameVariable\28char\2c\20char\20const*\2c\20bool\29 1151:GrGLGpu::prepareToDraw\28GrPrimitiveType\29 1152:GrGLFormatFromGLEnum\28unsigned\20int\29 1153:GrBackendTexture::getBackendFormat\28\29\20const 1154:GrBackendFormats::MakeGL\28unsigned\20int\2c\20unsigned\20int\29 1155:GrBackendFormatToCompressionType\28GrBackendFormat\20const&\29 1156:FilterLoop24_C 1157:FT_Stream_Skip 1158:CFF::CFFIndex>::operator\5b\5d\28unsigned\20int\29\20const 1159:AAT::Lookup::sanitize\28hb_sanitize_context_t*\29\20const 1160:write_trc_tag\28skcms_Curve\20const&\29 1161:utext_close_73 1162:ures_open_73 1163:ures_getKey_73 1164:ulocimp_getLanguage_73\28char\20const*\2c\20char\20const**\2c\20UErrorCode&\29 1165:u_UCharsToChars_73 1166:std::__2::time_get>>::get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\2c\20wchar_t\20const*\2c\20wchar_t\20const*\29\20const 1167:std::__2::time_get>>::get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\2c\20char\20const*\2c\20char\20const*\29\20const 1168:std::__2::enable_if::type\20skgpu::tess::PatchWriter\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\2964>\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\2932>\2c\20skgpu::tess::AddTrianglesWhenChopping\2c\20skgpu::tess::DiscardFlatCurves>::writeTriangleStack\28skgpu::tess::MiddleOutPolygonTriangulator::PoppedTriangleStack&&\29 1169:std::__2::ctype::widen\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20wchar_t*\29\20const 1170:std::__2::basic_string\2c\20std::__2::allocator>::__get_long_cap\5babi:v160004\5d\28\29\20const 1171:skif::LayerSpace::ceil\28\29\20const 1172:skia_private::TArray::push_back\28float\20const&\29 1173:skia_private::TArray::operator=\28skia_private::TArray\20const&\29 1174:skia_png_write_finish_row 1175:skia::textlayout::ParagraphImpl::ensureUTF16Mapping\28\29 1176:scalbn 1177:res_getStringNoTrace_73 1178:non-virtual\20thunk\20to\20GrOpFlushState::allocator\28\29 1179:icu_73::UnicodeSet::applyPattern\28icu_73::UnicodeString\20const&\2c\20UErrorCode&\29 1180:icu_73::Normalizer2Impl::getFCD16FromNormData\28int\29\20const 1181:icu_73::Locale::Locale\28\29 1182:hb_lazy_loader_t\2c\20hb_face_t\2c\2022u\2c\20hb_blob_t>::get\28\29\20const 1183:hb_lazy_loader_t\2c\20hb_face_t\2c\2024u\2c\20OT::GDEF_accelerator_t>::get\28\29\20const 1184:hb_buffer_get_glyph_infos 1185:hb_buffer_destroy 1186:cff2_path_param_t::line_to\28CFF::point_t\20const&\29 1187:cff1_path_param_t::line_to\28CFF::point_t\20const&\29 1188:cf2_stack_getReal 1189:byn$mgfn-shared$GrGLProgramDataManager::set1iv\28GrResourceHandle\2c\20int\2c\20int\20const*\29\20const 1190:antifilldot8\28int\2c\20int\2c\20int\2c\20int\2c\20SkBlitter*\2c\20bool\29 1191:afm_stream_skip_spaces 1192:WebPRescalerInit 1193:WebPRescalerExportRow 1194:SkWStream::writeDecAsText\28int\29 1195:SkTextBlobBuilder::allocInternal\28SkFont\20const&\2c\20SkTextBlob::GlyphPositioning\2c\20int\2c\20int\2c\20SkPoint\2c\20SkRect\20const*\29 1196:SkTDStorage::append\28void\20const*\2c\20int\29 1197:SkString::Rec::Make\28char\20const*\2c\20unsigned\20long\29::$_0::operator\28\29\28\29\20const 1198:SkStrike::digestFor\28skglyph::ActionType\2c\20SkPackedGlyphID\29 1199:SkShaders::Color\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20sk_sp\29 1200:SkSafeMath::Add\28unsigned\20long\2c\20unsigned\20long\29 1201:SkSL::Parser::assignmentExpression\28\29 1202:SkSL::GLSLCodeGenerator::write\28std::__2::basic_string_view>\29 1203:SkSL::ConstructorSplat::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>\29 1204:SkSL::ConstructorScalarCast::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>\29 1205:SkRuntimeEffectBuilder::writableUniformData\28\29 1206:SkRuntimeEffect::findUniform\28std::__2::basic_string_view>\29\20const 1207:SkResourceCache::Find\28SkResourceCache::Key\20const&\2c\20bool\20\28*\29\28SkResourceCache::Rec\20const&\2c\20void*\29\2c\20void*\29 1208:SkRegion::SkRegion\28SkIRect\20const&\29 1209:SkRect::toQuad\28SkPoint*\29\20const 1210:SkRasterPipeline::appendTransferFunction\28skcms_TransferFunction\20const&\29 1211:SkRasterPipeline::appendStore\28SkColorType\2c\20SkRasterPipeline_MemoryCtx\20const*\29 1212:SkRasterPipeline::appendConstantColor\28SkArenaAlloc*\2c\20float\20const*\29 1213:SkRasterClip::SkRasterClip\28\29 1214:SkRRect::checkCornerContainment\28float\2c\20float\29\20const 1215:SkPictureData::getImage\28SkReadBuffer*\29\20const 1216:SkPathMeasure::getLength\28\29 1217:SkPathBuilder::~SkPathBuilder\28\29 1218:SkPathBuilder::detach\28\29 1219:SkPathBuilder::SkPathBuilder\28\29 1220:SkPath::getGenerationID\28\29\20const 1221:SkPath::addPoly\28SkPoint\20const*\2c\20int\2c\20bool\29 1222:SkParse::FindScalars\28char\20const*\2c\20float*\2c\20int\29 1223:SkPaint::refPathEffect\28\29\20const 1224:SkPaint::operator=\28SkPaint\20const&\29 1225:SkMipmap::getLevel\28int\2c\20SkMipmap::Level*\29\20const 1226:SkKnownRuntimeEffects::GetKnownRuntimeEffect\28SkKnownRuntimeEffects::StableKey\29 1227:SkJSONWriter::endArray\28\29 1228:SkJSONWriter::appendCString\28char\20const*\2c\20char\20const*\29 1229:SkIntersections::setCoincident\28int\29 1230:SkImageInfo::computeOffset\28int\2c\20int\2c\20unsigned\20long\29\20const 1231:SkImageFilter_Base::flatten\28SkWriteBuffer&\29\20const 1232:SkDrawBase::SkDrawBase\28\29 1233:SkDLine::NearPointV\28SkDPoint\20const&\2c\20double\2c\20double\2c\20double\29 1234:SkDLine::NearPointH\28SkDPoint\20const&\2c\20double\2c\20double\2c\20double\29 1235:SkDLine::ExactPointV\28SkDPoint\20const&\2c\20double\2c\20double\2c\20double\29 1236:SkDLine::ExactPointH\28SkDPoint\20const&\2c\20double\2c\20double\2c\20double\29 1237:SkColorSpaceXformSteps::apply\28SkRasterPipeline*\29\20const 1238:SkColorFilter::asAColorMode\28unsigned\20int*\2c\20SkBlendMode*\29\20const 1239:SkCodec::SkCodec\28SkEncodedInfo&&\2c\20skcms_PixelFormat\2c\20std::__2::unique_ptr>\2c\20SkEncodedOrigin\29 1240:SkCanvas::drawPicture\28SkPicture\20const*\2c\20SkMatrix\20const*\2c\20SkPaint\20const*\29 1241:SkCanvas::drawColor\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkBlendMode\29 1242:SkBulkGlyphMetrics::SkBulkGlyphMetrics\28SkStrikeSpec\20const&\29 1243:SkBlockAllocator::releaseBlock\28SkBlockAllocator::Block*\29 1244:SkBitmap::asImage\28\29\20const 1245:SkAAClipBlitterWrapper::SkAAClipBlitterWrapper\28SkRasterClip\20const&\2c\20SkBlitter*\29 1246:OT::MVAR::get_var\28unsigned\20int\2c\20int\20const*\2c\20unsigned\20int\29\20const 1247:GrXferProcessor::GrXferProcessor\28GrProcessor::ClassID\2c\20bool\2c\20GrProcessorAnalysisCoverage\29 1248:GrTextureEffect::Make\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkMatrix\20const&\2c\20GrSamplerState\2c\20GrCaps\20const&\2c\20float\20const*\29 1249:GrTextureEffect::MakeSubset\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkMatrix\20const&\2c\20GrSamplerState\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20GrCaps\20const&\2c\20float\20const*\29 1250:GrSimpleMeshDrawOpHelper::finalizeProcessors\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\2c\20GrProcessorAnalysisCoverage\2c\20SkRGBA4f<\28SkAlphaType\292>*\2c\20bool*\29 1251:GrResourceProvider::findResourceByUniqueKey\28skgpu::UniqueKey\20const&\29 1252:GrRecordingContext::OwnedArenas::get\28\29 1253:GrProxyProvider::createProxy\28GrBackendFormat\20const&\2c\20SkISize\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Mipmapped\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\2c\20GrInternalSurfaceFlags\2c\20GrSurfaceProxy::UseAllocator\29 1254:GrProxyProvider::assignUniqueKeyToProxy\28skgpu::UniqueKey\20const&\2c\20GrTextureProxy*\29 1255:GrProcessorSet::finalize\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\2c\20GrAppliedClip\20const*\2c\20GrUserStencilSettings\20const*\2c\20GrCaps\20const&\2c\20GrClampType\2c\20SkRGBA4f<\28SkAlphaType\292>*\29 1256:GrOpFlushState::allocator\28\29 1257:GrOp::cutChain\28\29 1258:GrMeshDrawTarget::makeVertexWriter\28unsigned\20long\2c\20int\2c\20sk_sp*\2c\20int*\29 1259:GrGpuResource::GrGpuResource\28GrGpu*\2c\20std::__2::basic_string_view>\29 1260:GrGeometryProcessor::TextureSampler::reset\28GrSamplerState\2c\20GrBackendFormat\20const&\2c\20skgpu::Swizzle\20const&\29 1261:GrGeometryProcessor::AttributeSet::end\28\29\20const 1262:GrGeometryProcessor::AttributeSet::Iter::operator++\28\29 1263:GrGeometryProcessor::AttributeSet::Iter::operator*\28\29\20const 1264:GrGLTextureParameters::set\28GrGLTextureParameters::SamplerOverriddenState\20const*\2c\20GrGLTextureParameters::NonsamplerState\20const&\2c\20unsigned\20long\20long\29 1265:GrGLSLShaderBuilder::appendTextureLookup\28GrResourceHandle\2c\20char\20const*\2c\20GrGLSLColorSpaceXformHelper*\29 1266:GrClip::GetPixelIBounds\28SkRect\20const&\2c\20GrAA\2c\20GrClip::BoundsType\29 1267:GrBackendTexture::~GrBackendTexture\28\29 1268:FT_Outline_Get_CBox 1269:FT_Get_Sfnt_Table 1270:utf8_prevCharSafeBody_73 1271:ures_getString_73 1272:ulocimp_getScript_73\28char\20const*\2c\20char\20const**\2c\20UErrorCode&\29 1273:uhash_open_73 1274:std::__2::vector>::__destroy_vector::__destroy_vector\28std::__2::vector>&\29 1275:std::__2::moneypunct::negative_sign\5babi:v160004\5d\28\29\20const 1276:std::__2::moneypunct::neg_format\5babi:v160004\5d\28\29\20const 1277:std::__2::moneypunct::frac_digits\5babi:v160004\5d\28\29\20const 1278:std::__2::moneypunct::do_pos_format\28\29\20const 1279:std::__2::ctype::widen\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20char*\29\20const 1280:std::__2::char_traits::copy\28wchar_t*\2c\20wchar_t\20const*\2c\20unsigned\20long\29 1281:std::__2::basic_string\2c\20std::__2::allocator>::end\5babi:v160004\5d\28\29 1282:std::__2::basic_string\2c\20std::__2::allocator>::end\5babi:v160004\5d\28\29 1283:std::__2::basic_string\2c\20std::__2::allocator>::__set_size\5babi:v160004\5d\28unsigned\20long\29 1284:std::__2::basic_string\2c\20std::__2::allocator>::__assign_external\28char\20const*\2c\20unsigned\20long\29 1285:std::__2::__itoa::__append2\5babi:v160004\5d\28char*\2c\20unsigned\20int\29 1286:sktext::gpu::GlyphVector::glyphs\28\29\20const 1287:sktext::SkStrikePromise::SkStrikePromise\28sktext::SkStrikePromise&&\29 1288:skif::FilterResult::resolve\28skif::Context\20const&\2c\20skif::LayerSpace\2c\20bool\29\20const 1289:skia_png_read_finish_row 1290:skia_png_handle_unknown 1291:skia_png_gamma_correct 1292:skia_png_colorspace_sync 1293:skia_png_app_warning 1294:skia::textlayout::TextStyle::operator=\28skia::textlayout::TextStyle\20const&\29 1295:skia::textlayout::TextLine::offset\28\29\20const 1296:skia::textlayout::Run::placeholderStyle\28\29\20const 1297:skia::textlayout::Cluster::Cluster\28skia::textlayout::ParagraphImpl*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkSpan\2c\20float\2c\20float\29 1298:skgpu::ganesh::SurfaceFillContext::fillRectWithFP\28SkIRect\20const&\2c\20std::__2::unique_ptr>\29 1299:skgpu::ganesh::SurfaceDrawContext::Make\28GrRecordingContext*\2c\20GrColorType\2c\20sk_sp\2c\20SkBackingFit\2c\20SkISize\2c\20SkSurfaceProps\20const&\2c\20std::__2::basic_string_view>\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrSurfaceOrigin\2c\20skgpu::Budgeted\29 1300:skgpu::ganesh::SurfaceContext::PixelTransferResult::~PixelTransferResult\28\29 1301:skgpu::ganesh::ClipStack::SaveRecord::state\28\29\20const 1302:skcms_Matrix3x3_invert 1303:sk_doubles_nearly_equal_ulps\28double\2c\20double\2c\20unsigned\20char\29 1304:ps_parser_to_token 1305:isspace 1306:icu_73::UnicodeString::moveIndex32\28int\2c\20int\29\20const 1307:icu_73::UnicodeString::cloneArrayIfNeeded\28int\2c\20int\2c\20signed\20char\2c\20int**\2c\20signed\20char\29 1308:icu_73::UnicodeSet::span\28char16_t\20const*\2c\20int\2c\20USetSpanCondition\29\20const 1309:icu_73::UVector32::UVector32\28UErrorCode&\29 1310:icu_73::RuleCharacterIterator::next\28int\2c\20signed\20char&\2c\20UErrorCode&\29 1311:icu_73::ReorderingBuffer::appendBMP\28char16_t\2c\20unsigned\20char\2c\20UErrorCode&\29 1312:icu_73::ICUServiceKey::prefix\28icu_73::UnicodeString&\29\20const 1313:icu_73::Edits::addReplace\28int\2c\20int\29 1314:icu_73::BreakIterator::buildInstance\28icu_73::Locale\20const&\2c\20char\20const*\2c\20UErrorCode&\29 1315:hb_face_t::load_upem\28\29\20const 1316:hb_buffer_t::merge_out_clusters\28unsigned\20int\2c\20unsigned\20int\29 1317:hb_buffer_t::enlarge\28unsigned\20int\29 1318:hb_buffer_reverse 1319:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkCanvas&\2c\20SkCanvas::PointMode\2c\20unsigned\20long\2c\20int\2c\20SkPaint&\29\2c\20SkCanvas*\2c\20SkCanvas::PointMode\2c\20unsigned\20long\2c\20int\2c\20SkPaint*\29 1320:cff_index_init 1321:cf2_glyphpath_curveTo 1322:atan2f 1323:WebPCopyPlane 1324:SkTMaskGamma_build_correcting_lut\28unsigned\20char*\2c\20unsigned\20int\2c\20float\2c\20SkColorSpaceLuminance\20const&\2c\20float\2c\20SkColorSpaceLuminance\20const&\2c\20float\29 1325:SkSurface_Raster::type\28\29\20const 1326:SkString::swap\28SkString&\29 1327:SkString::reset\28\29 1328:SkSampler::Fill\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::ZeroInitialized\29 1329:SkSL::Type::MakeTextureType\28char\20const*\2c\20SpvDim_\2c\20bool\2c\20bool\2c\20bool\2c\20SkSL::Type::TextureAccess\29 1330:SkSL::Type::MakeSpecialType\28char\20const*\2c\20char\20const*\2c\20SkSL::Type::TypeKind\29 1331:SkSL::RP::Builder::push_slots_or_immutable\28SkSL::RP::SlotRange\2c\20SkSL::RP::BuilderOp\29 1332:SkSL::RP::Builder::push_clone_from_stack\28SkSL::RP::SlotRange\2c\20int\2c\20int\29 1333:SkSL::Program::~Program\28\29 1334:SkSL::PipelineStage::PipelineStageCodeGenerator::writeStatement\28SkSL::Statement\20const&\29 1335:SkSL::Operator::isAssignment\28\29\20const 1336:SkSL::InlineCandidateAnalyzer::visitStatement\28std::__2::unique_ptr>*\2c\20bool\29 1337:SkSL::GLSLCodeGenerator::writeModifiers\28SkSL::Layout\20const&\2c\20SkSL::ModifierFlags\2c\20bool\29 1338:SkSL::ExpressionStatement::Make\28SkSL::Context\20const&\2c\20std::__2::unique_ptr>\29 1339:SkSL::ConstructorCompound::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray\29 1340:SkSL::Analysis::GetReturnComplexity\28SkSL::FunctionDefinition\20const&\29 1341:SkSL::AliasType::resolve\28\29\20const 1342:SkResourceCache::Add\28SkResourceCache::Rec*\2c\20void*\29 1343:SkRegion::writeToMemory\28void*\29\20const 1344:SkRect\20skif::Mapping::map\28SkRect\20const&\2c\20SkMatrix\20const&\29 1345:SkReadBuffer::readMatrix\28SkMatrix*\29 1346:SkReadBuffer::readBool\28\29 1347:SkRasterClip::setRect\28SkIRect\20const&\29 1348:SkRasterClip::SkRasterClip\28SkRasterClip\20const&\29 1349:SkPathMeasure::~SkPathMeasure\28\29 1350:SkPathMeasure::SkPathMeasure\28SkPath\20const&\2c\20bool\2c\20float\29 1351:SkPath::swap\28SkPath&\29 1352:SkPaint::setAlphaf\28float\29 1353:SkOpSpan::computeWindSum\28\29 1354:SkOpSegment::existing\28double\2c\20SkOpSegment\20const*\29\20const 1355:SkOpPtT::find\28SkOpSegment\20const*\29\20const 1356:SkOpCoincidence::addEndMovedSpans\28SkOpSpan\20const*\2c\20SkOpSpanBase\20const*\29 1357:SkNoDrawCanvas::onDrawImageRect2\28SkImage\20const*\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 1358:SkMakeImageFromRasterBitmap\28SkBitmap\20const&\2c\20SkCopyPixelsMode\29 1359:SkImage_Ganesh::SkImage_Ganesh\28sk_sp\2c\20unsigned\20int\2c\20GrSurfaceProxyView\2c\20SkColorInfo\29 1360:SkImageInfo::makeColorSpace\28sk_sp\29\20const 1361:SkImage::refColorSpace\28\29\20const 1362:SkGlyph::imageSize\28\29\20const 1363:SkGetICULib\28\29 1364:SkFont::textToGlyphs\28void\20const*\2c\20unsigned\20long\2c\20SkTextEncoding\2c\20unsigned\20short*\2c\20int\29\20const 1365:SkFont::setSubpixel\28bool\29 1366:SkDraw::SkDraw\28\29 1367:SkDevice::onReadPixels\28SkPixmap\20const&\2c\20int\2c\20int\29 1368:SkColorTypeBytesPerPixel\28SkColorType\29 1369:SkChopQuadAt\28SkPoint\20const*\2c\20SkPoint*\2c\20float\29 1370:SkCanvas::drawImageRect\28SkImage\20const*\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 1371:SkBmpCodec::getDstRow\28int\2c\20int\29\20const 1372:SkAutoDescriptor::SkAutoDescriptor\28\29 1373:OT::DeltaSetIndexMap::sanitize\28hb_sanitize_context_t*\29\20const 1374:OT::ClassDef::sanitize\28hb_sanitize_context_t*\29\20const 1375:GrTriangulator::Comparator::sweep_lt\28SkPoint\20const&\2c\20SkPoint\20const&\29\20const 1376:GrTextureProxy::textureType\28\29\20const 1377:GrSurfaceProxy::createSurfaceImpl\28GrResourceProvider*\2c\20int\2c\20skgpu::Renderable\2c\20skgpu::Mipmapped\29\20const 1378:GrStyledShape::writeUnstyledKey\28unsigned\20int*\29\20const 1379:GrStyledShape::simplify\28\29 1380:GrSkSLFP::setInput\28std::__2::unique_ptr>\29 1381:GrSimpleMeshDrawOpHelperWithStencil::GrSimpleMeshDrawOpHelperWithStencil\28GrProcessorSet*\2c\20GrAAType\2c\20GrUserStencilSettings\20const*\2c\20GrSimpleMeshDrawOpHelper::InputFlags\29 1382:GrShape::operator=\28GrShape\20const&\29 1383:GrResourceProvider::createPatternedIndexBuffer\28unsigned\20short\20const*\2c\20int\2c\20int\2c\20int\2c\20skgpu::UniqueKey\20const*\29 1384:GrRenderTarget::~GrRenderTarget\28\29 1385:GrRecordingContextPriv::makeSC\28GrSurfaceProxyView\2c\20GrColorInfo\20const&\29 1386:GrOpFlushState::detachAppliedClip\28\29 1387:GrGpuBuffer::map\28\29 1388:GrGeometryProcessor::ProgramImpl::WriteOutputPosition\28GrGLSLVertexBuilder*\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\2c\20char\20const*\29 1389:GrGLSLShaderBuilder::declAppend\28GrShaderVar\20const&\29 1390:GrGLGpu::didDrawTo\28GrRenderTarget*\29 1391:GrFragmentProcessors::Make\28GrRecordingContext*\2c\20SkColorFilter\20const*\2c\20std::__2::unique_ptr>\2c\20GrColorInfo\20const&\2c\20SkSurfaceProps\20const&\29 1392:GrColorSpaceXformEffect::Make\28std::__2::unique_ptr>\2c\20GrColorInfo\20const&\2c\20GrColorInfo\20const&\29 1393:GrCaps::validateSurfaceParams\28SkISize\20const&\2c\20GrBackendFormat\20const&\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Mipmapped\2c\20GrTextureType\29\20const 1394:GrBufferAllocPool::putBack\28unsigned\20long\29 1395:GrBlurUtils::GaussianBlur\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20GrColorType\2c\20SkAlphaType\2c\20sk_sp\2c\20SkIRect\2c\20SkIRect\2c\20float\2c\20float\2c\20SkTileMode\2c\20SkBackingFit\29::$_0::operator\28\29\28SkIRect\2c\20SkIRect\29\20const 1396:GrAAConvexTessellator::createInsetRing\28GrAAConvexTessellator::Ring\20const&\2c\20GrAAConvexTessellator::Ring*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20bool\29 1397:FT_Stream_GetByte 1398:FT_Set_Transform 1399:FT_Add_Module 1400:CFF::CFFIndex>::sanitize\28hb_sanitize_context_t*\29\20const 1401:AlmostLessOrEqualUlps\28float\2c\20float\29 1402:ActiveEdge::intersect\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20unsigned\20short\2c\20unsigned\20short\29\20const 1403:wrapper_cmp 1404:void\20std::__2::reverse\5babi:v160004\5d\28char*\2c\20char*\29 1405:void\20std::__2::__hash_table\2c\20std::__2::equal_to\2c\20std::__2::allocator>::__do_rehash\28unsigned\20long\29 1406:utrace_data_73 1407:utf8_nextCharSafeBody_73 1408:utext_setup_73 1409:uhash_puti_73 1410:uhash_nextElement_73 1411:ubidi_getParaLevelAtIndex_73 1412:u_charType_73 1413:tanf 1414:std::__2::vector>::operator\5b\5d\5babi:v160004\5d\28unsigned\20long\29 1415:std::__2::vector>::capacity\5babi:v160004\5d\28\29\20const 1416:std::__2::ostreambuf_iterator>\20std::__2::__pad_and_output\5babi:v160004\5d>\28std::__2::ostreambuf_iterator>\2c\20wchar_t\20const*\2c\20wchar_t\20const*\2c\20wchar_t\20const*\2c\20std::__2::ios_base&\2c\20wchar_t\29 1417:std::__2::ostreambuf_iterator>\20std::__2::__pad_and_output\5babi:v160004\5d>\28std::__2::ostreambuf_iterator>\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20std::__2::ios_base&\2c\20char\29 1418:std::__2::char_traits::to_int_type\28char\29 1419:std::__2::basic_string\2c\20std::__2::allocator>::__recommend\5babi:v160004\5d\28unsigned\20long\29 1420:std::__2::basic_ios>::~basic_ios\28\29 1421:std::__2::basic_ios>::setstate\5babi:v160004\5d\28unsigned\20int\29 1422:std::__2::__compressed_pair_elem::__compressed_pair_elem\5babi:v160004\5d\28void\20\28*&&\29\28void*\29\29 1423:sktext::gpu::GlyphVector::~GlyphVector\28\29 1424:sktext::StrikeMutationMonitor::~StrikeMutationMonitor\28\29 1425:sktext::StrikeMutationMonitor::StrikeMutationMonitor\28sktext::StrikeForGPU*\29 1426:skif::LayerSpace::contains\28skif::LayerSpace\20const&\29\20const 1427:skif::Backend::~Backend\28\29.1 1428:skia_private::TArray::push_back\28skif::FilterResult::Builder::SampledFilterResult&&\29 1429:skia_private::TArray::operator=\28skia_private::TArray&&\29 1430:skia_private::STArray<2\2c\20std::__2::unique_ptr>\2c\20true>::~STArray\28\29 1431:skia_png_chunk_unknown_handling 1432:skia::textlayout::TextStyle::TextStyle\28\29 1433:skia::textlayout::TextLine::iterateThroughSingleRunByStyles\28skia::textlayout::TextLine::TextAdjustment\2c\20skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::StyleType\2c\20std::__2::function\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\20const&\29\20const 1434:skgpu::ganesh::SurfaceFillContext::internalClear\28SkIRect\20const*\2c\20std::__2::array\2c\20bool\29 1435:skgpu::ganesh::SurfaceDrawContext::fillRectToRect\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 1436:skgpu::SkSLToBackend\28SkSL::ShaderCaps\20const*\2c\20bool\20\28*\29\28SkSL::Program&\2c\20SkSL::ShaderCaps\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>*\29\2c\20char\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20SkSL::ProgramKind\2c\20SkSL::ProgramSettings\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>*\2c\20SkSL::ProgramInterface*\2c\20skgpu::ShaderErrorHandler*\29 1437:skgpu::GetApproxSize\28SkISize\29 1438:res_getTableItemByKey_73 1439:powf 1440:icu_73::UnicodeString::operator=\28icu_73::UnicodeString&&\29 1441:icu_73::UnicodeString::doEquals\28icu_73::UnicodeString\20const&\2c\20int\29\20const 1442:icu_73::UnicodeSet::ensureCapacity\28int\29 1443:icu_73::UnicodeSet::clear\28\29 1444:icu_73::UVector::addElement\28void*\2c\20UErrorCode&\29 1445:icu_73::UVector32::setElementAt\28int\2c\20int\29 1446:icu_73::RuleCharacterIterator::setPos\28icu_73::RuleCharacterIterator::Pos\20const&\29 1447:icu_73::Locale::operator=\28icu_73::Locale\20const&\29 1448:icu_73::Edits::addUnchanged\28int\29 1449:icu_73::CharString::extract\28char*\2c\20int\2c\20UErrorCode&\29\20const 1450:hb_lazy_loader_t\2c\20hb_face_t\2c\2011u\2c\20hb_blob_t>::get\28\29\20const 1451:hb_lazy_loader_t\2c\20hb_face_t\2c\202u\2c\20hb_blob_t>::get\28\29\20const 1452:hb_lazy_loader_t\2c\20hb_face_t\2c\204u\2c\20hb_blob_t>::get\28\29\20const 1453:hb_font_t::scale_glyph_extents\28hb_glyph_extents_t*\29 1454:hb_font_t::get_glyph_h_origin_with_fallback\28unsigned\20int\2c\20int*\2c\20int*\29 1455:hb_buffer_append 1456:emscripten::internal::MethodInvoker\29\2c\20void\2c\20SkFont*\2c\20sk_sp>::invoke\28void\20\28SkFont::*\20const&\29\28sk_sp\29\2c\20SkFont*\2c\20sk_sp*\29 1457:emscripten::internal::Invoker::invoke\28unsigned\20long\20\28*\29\28\29\29 1458:emscripten::internal::FunctionInvoker\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkPaint\20const*\29\2c\20void\2c\20SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkPaint\20const*>::invoke\28void\20\28**\29\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkPaint\20const*\29\2c\20SkCanvas*\2c\20sk_sp*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkPaint\20const*\29 1459:cos 1460:cf2_glyphpath_lineTo 1461:byn$mgfn-shared$SkTDStorage::calculateSizeOrDie\28int\29::$_0::operator\28\29\28\29\20const 1462:alloc_small 1463:af_latin_hints_compute_segments 1464:_hb_glyph_info_set_unicode_props\28hb_glyph_info_t*\2c\20hb_buffer_t*\29 1465:__lshrti3 1466:__letf2 1467:__cxx_global_array_dtor.3 1468:\28anonymous\20namespace\29::SkBlurImageFilter::~SkBlurImageFilter\28\29 1469:SkUTF::ToUTF16\28int\2c\20unsigned\20short*\29 1470:SkTextBlobBuilder::~SkTextBlobBuilder\28\29 1471:SkTextBlobBuilder::make\28\29 1472:SkSurface::makeImageSnapshot\28\29 1473:SkString::insert\28unsigned\20long\2c\20char\20const*\2c\20unsigned\20long\29 1474:SkString::insertUnichar\28unsigned\20long\2c\20int\29 1475:SkStrikeSpec::findOrCreateScopedStrike\28sktext::StrikeForGPUCacheInterface*\29\20const 1476:SkStrikeCache::GlobalStrikeCache\28\29 1477:SkSpecialImages::MakeDeferredFromGpu\28GrRecordingContext*\2c\20SkIRect\20const&\2c\20unsigned\20int\2c\20GrSurfaceProxyView\2c\20GrColorInfo\20const&\2c\20SkSurfaceProps\20const&\29 1478:SkShader::isAImage\28SkMatrix*\2c\20SkTileMode*\29\20const 1479:SkSL::is_constant_value\28SkSL::Expression\20const&\2c\20double\29 1480:SkSL::compile_and_shrink\28SkSL::Compiler*\2c\20SkSL::ProgramKind\2c\20char\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20SkSL::Module\20const*\29 1481:SkSL::\28anonymous\20namespace\29::ReturnsOnAllPathsVisitor::visitStatement\28SkSL::Statement\20const&\29 1482:SkSL::Type::MakeScalarType\28std::__2::basic_string_view>\2c\20char\20const*\2c\20SkSL::Type::NumberKind\2c\20signed\20char\2c\20signed\20char\29 1483:SkSL::RP::Generator::pushBinaryExpression\28SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\29 1484:SkSL::RP::Builder::push_clone\28int\2c\20int\29 1485:SkSL::ProgramUsage::remove\28SkSL::Statement\20const*\29 1486:SkSL::Parser::statement\28bool\29 1487:SkSL::Operator::determineBinaryType\28SkSL::Context\20const&\2c\20SkSL::Type\20const&\2c\20SkSL::Type\20const&\2c\20SkSL::Type\20const**\2c\20SkSL::Type\20const**\2c\20SkSL::Type\20const**\29\20const 1488:SkSL::ModifierFlags::description\28\29\20const 1489:SkSL::Layout::paddedDescription\28\29\20const 1490:SkSL::FieldAccess::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20int\2c\20SkSL::FieldAccessOwnerKind\29 1491:SkSL::ConstructorCompoundCast::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>\29 1492:SkSL::Compiler::~Compiler\28\29 1493:SkSL::Analysis::IsSameExpressionTree\28SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\29 1494:SkRectPriv::Subtract\28SkIRect\20const&\2c\20SkIRect\20const&\2c\20SkIRect*\29 1495:SkPictureRecorder::SkPictureRecorder\28\29 1496:SkPictureData::~SkPictureData\28\29 1497:SkPathMeasure::nextContour\28\29 1498:SkPathMeasure::getSegment\28float\2c\20float\2c\20SkPath*\2c\20bool\29 1499:SkPathMeasure::getPosTan\28float\2c\20SkPoint*\2c\20SkPoint*\29 1500:SkPathBuilder::lineTo\28SkPoint\29 1501:SkPath::getPoint\28int\29\20const 1502:SkPath::getLastPt\28SkPoint*\29\20const 1503:SkPaint::setBlender\28sk_sp\29 1504:SkOpSegment::addT\28double\29 1505:SkNoPixelsDevice::ClipState&\20skia_private::TArray::emplace_back\28SkIRect&&\2c\20bool&&\2c\20bool&&\29 1506:SkNextID::ImageID\28\29 1507:SkMessageBus::Inbox::Inbox\28unsigned\20int\29 1508:SkJSONWriter::endObject\28\29 1509:SkImage_Lazy::generator\28\29\20const 1510:SkImage_Base::~SkImage_Base\28\29 1511:SkImage_Base::SkImage_Base\28SkImageInfo\20const&\2c\20unsigned\20int\29 1512:SkFont::getWidthsBounds\28unsigned\20short\20const*\2c\20int\2c\20float*\2c\20SkRect*\2c\20SkPaint\20const*\29\20const 1513:SkFont::getMetrics\28SkFontMetrics*\29\20const 1514:SkFont::SkFont\28sk_sp\2c\20float\29 1515:SkFont::SkFont\28\29 1516:SkDrawBase::drawRect\28SkRect\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const*\2c\20SkRect\20const*\29\20const 1517:SkDevice::setGlobalCTM\28SkM44\20const&\29 1518:SkDescriptor::operator==\28SkDescriptor\20const&\29\20const 1519:SkConvertPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkImageInfo\20const&\2c\20void\20const*\2c\20unsigned\20long\29 1520:SkConic::chopAt\28float\2c\20SkConic*\29\20const 1521:SkColorSpace::gammaIsLinear\28\29\20const 1522:SkColorSpace::MakeRGB\28skcms_TransferFunction\20const&\2c\20skcms_Matrix3x3\20const&\29 1523:SkCodec::fillIncompleteImage\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::ZeroInitialized\2c\20int\2c\20int\29 1524:SkCanvas::saveLayer\28SkRect\20const*\2c\20SkPaint\20const*\29 1525:SkCanvas::drawPaint\28SkPaint\20const&\29 1526:SkCanvas::ImageSetEntry::~ImageSetEntry\28\29 1527:SkBulkGlyphMetrics::glyphs\28SkSpan\29 1528:SkBlendMode_AsCoeff\28SkBlendMode\2c\20SkBlendModeCoeff*\2c\20SkBlendModeCoeff*\29 1529:SkBitmap::getGenerationID\28\29\20const 1530:SkArenaAllocWithReset::reset\28\29 1531:OT::Layout::GPOS_impl::AnchorFormat3::sanitize\28hb_sanitize_context_t*\29\20const 1532:OT::GDEF::get_glyph_props\28unsigned\20int\29\20const 1533:OT::CmapSubtable::get_glyph\28unsigned\20int\2c\20unsigned\20int*\29\20const 1534:Ins_UNKNOWN 1535:GrTextureEffect::MakeSubset\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkMatrix\20const&\2c\20GrSamplerState\2c\20SkRect\20const&\2c\20GrCaps\20const&\2c\20float\20const*\2c\20bool\29 1536:GrSurfaceProxyView::mipmapped\28\29\20const 1537:GrSurfaceProxy::instantiateImpl\28GrResourceProvider*\2c\20int\2c\20skgpu::Renderable\2c\20skgpu::Mipmapped\2c\20skgpu::UniqueKey\20const*\29 1538:GrSimpleMeshDrawOpHelperWithStencil::isCompatible\28GrSimpleMeshDrawOpHelperWithStencil\20const&\2c\20GrCaps\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20bool\29\20const 1539:GrSimpleMeshDrawOpHelperWithStencil::finalizeProcessors\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\2c\20GrProcessorAnalysisCoverage\2c\20SkRGBA4f<\28SkAlphaType\292>*\2c\20bool*\29 1540:GrShape::simplifyRect\28SkRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\2c\20unsigned\20int\29 1541:GrQuad::projectedBounds\28\29\20const 1542:GrProcessorSet::MakeEmptySet\28\29 1543:GrPorterDuffXPFactory::SimpleSrcOverXP\28\29 1544:GrPixmap::Allocate\28GrImageInfo\20const&\29 1545:GrPathTessellationShader::MakeSimpleTriangleShader\28SkArenaAlloc*\2c\20SkMatrix\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\29 1546:GrMakeCachedBitmapProxyView\28GrRecordingContext*\2c\20SkBitmap\20const&\2c\20std::__2::basic_string_view>\2c\20skgpu::Mipmapped\29 1547:GrImageInfo::operator=\28GrImageInfo&&\29 1548:GrImageInfo::makeColorType\28GrColorType\29\20const 1549:GrGpuResource::setUniqueKey\28skgpu::UniqueKey\20const&\29 1550:GrGpuResource::release\28\29 1551:GrGpuResource::isPurgeable\28\29\20const 1552:GrGeometryProcessor::textureSampler\28int\29\20const 1553:GrGeometryProcessor::AttributeSet::begin\28\29\20const 1554:GrGLSLShaderBuilder::addFeature\28unsigned\20int\2c\20char\20const*\29 1555:GrGLGpu::clearErrorsAndCheckForOOM\28\29 1556:GrGLGpu::bindSurfaceFBOForPixelOps\28GrSurface*\2c\20int\2c\20unsigned\20int\2c\20GrGLGpu::TempFBOTarget\29 1557:GrGLCompileAndAttachShader\28GrGLContext\20const&\2c\20unsigned\20int\2c\20unsigned\20int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20bool\2c\20GrThreadSafePipelineBuilder::Stats*\2c\20skgpu::ShaderErrorHandler*\29 1558:GrFragmentProcessor::MakeColor\28SkRGBA4f<\28SkAlphaType\292>\29 1559:GrDirectContextPriv::flushSurfaces\28SkSpan\2c\20SkSurfaces::BackendSurfaceAccess\2c\20GrFlushInfo\20const&\2c\20skgpu::MutableTextureState\20const*\29 1560:GrDefaultGeoProcFactory::Make\28SkArenaAlloc*\2c\20GrDefaultGeoProcFactory::Color\20const&\2c\20GrDefaultGeoProcFactory::Coverage\20const&\2c\20GrDefaultGeoProcFactory::LocalCoords\20const&\2c\20SkMatrix\20const&\29 1561:GrConvertPixels\28GrPixmap\20const&\2c\20GrCPixmap\20const&\2c\20bool\29 1562:GrColorSpaceXformEffect::Make\28std::__2::unique_ptr>\2c\20SkColorSpace*\2c\20SkAlphaType\2c\20SkColorSpace*\2c\20SkAlphaType\29 1563:GrColorInfo::GrColorInfo\28\29 1564:GrBlurUtils::convolve_gaussian_1d\28skgpu::ganesh::SurfaceFillContext*\2c\20GrSurfaceProxyView\2c\20SkIRect\20const&\2c\20SkIPoint\2c\20SkIRect\20const&\2c\20SkAlphaType\2c\20GrBlurUtils::\28anonymous\20namespace\29::Direction\2c\20int\2c\20float\2c\20SkTileMode\29 1565:GrBackendTexture::GrBackendTexture\28\29 1566:GrBackendFormat::operator=\28GrBackendFormat\20const&\29 1567:FT_Stream_Read 1568:FT_GlyphLoader_Rewind 1569:FT_Done_Face 1570:Cr_z_inflate 1571:CFF::CFFIndex>::operator\5b\5d\28unsigned\20int\29\20const 1572:void\20std::__2::__stable_sort\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::'lambda'\28\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\29&\2c\20std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>\28std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>\2c\20std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::'lambda'\28\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\29&\2c\20std::__2::iterator_traits\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>::difference_type\2c\20std::__2::iterator_traits\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>::value_type*\2c\20long\29 1573:void\20std::__2::__double_or_nothing\5babi:v160004\5d\28std::__2::unique_ptr&\2c\20unsigned\20int*&\2c\20unsigned\20int*&\29 1574:void\20icu_73::\28anonymous\20namespace\29::MixedBlocks::extend\28unsigned\20short\20const*\2c\20int\2c\20int\2c\20int\29 1575:void\20hb_serialize_context_t::add_link\2c\20true>>\28OT::OffsetTo\2c\20true>&\2c\20unsigned\20int\2c\20hb_serialize_context_t::whence_t\2c\20unsigned\20int\29 1576:void\20emscripten::internal::MemberAccess::setWire\28bool\20RuntimeEffectUniform::*\20const&\2c\20RuntimeEffectUniform&\2c\20bool\29 1577:utext_nativeLength_73 1578:ures_getStringByKeyWithFallback_73 1579:uprv_strnicmp_73 1580:unsigned\20int\20std::__2::__sort3\5babi:v160004\5d\28skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::finish\28skia::textlayout::Block\20const&\2c\20float\2c\20float&\29::$_0&\29 1581:unsigned\20int\20std::__2::__sort3\5babi:v160004\5d\28\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::EntryComparator&\29 1582:unsigned\20int\20std::__2::__sort3\5babi:v160004\5d\28SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::Transform::\28anonymous\20namespace\29::BuiltinVariableScanner::sortNewElements\28\29::'lambda'\28SkSL::ProgramElement\20const*\2c\20SkSL::ProgramElement\20const*\29&\29 1583:unsigned\20int\20std::__2::__sort3\5babi:v160004\5d\28SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::Transform::FindAndDeclareBuiltinFunctions\28SkSL::Program&\29::$_0&\29 1584:ulocimp_getKeywordValue_73 1585:ulocimp_getCountry_73\28char\20const*\2c\20char\20const**\2c\20UErrorCode&\29 1586:uenum_close_73 1587:udata_getMemory_73 1588:ucptrie_openFromBinary_73 1589:u_charsToUChars_73 1590:toupper 1591:top12.2 1592:std::__2::numpunct\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 1593:std::__2::numpunct\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 1594:std::__2::default_delete\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot\20\5b\5d>::_EnableIfConvertible\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot>::type\20std::__2::default_delete\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot\20\5b\5d>::operator\28\29\5babi:v160004\5d\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot>\28skia_private::THashTable\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot*\29\20const 1595:std::__2::ctype::narrow\5babi:v160004\5d\28char\2c\20char\29\20const 1596:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28wchar_t\20const*\29 1597:std::__2::basic_string\2c\20std::__2::allocator>::__recommend\5babi:v160004\5d\28unsigned\20long\29 1598:std::__2::basic_streambuf>::~basic_streambuf\28\29 1599:std::__2::basic_streambuf>::setg\5babi:v160004\5d\28char*\2c\20char*\2c\20char*\29 1600:std::__2::__num_get::__stage2_int_loop\28wchar_t\2c\20int\2c\20char*\2c\20char*&\2c\20unsigned\20int&\2c\20wchar_t\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int*\2c\20unsigned\20int*&\2c\20wchar_t\20const*\29 1601:std::__2::__num_get::__stage2_int_loop\28char\2c\20int\2c\20char*\2c\20char*&\2c\20unsigned\20int&\2c\20char\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int*\2c\20unsigned\20int*&\2c\20char\20const*\29 1602:std::__2::__allocation_result>::pointer>\20std::__2::__allocate_at_least\5babi:v160004\5d>\28std::__2::allocator&\2c\20unsigned\20long\29 1603:std::__2::__allocation_result>::pointer>\20std::__2::__allocate_at_least\5babi:v160004\5d>\28std::__2::allocator&\2c\20unsigned\20long\29 1604:src_p\28unsigned\20char\2c\20unsigned\20char\29 1605:skif::FilterResult::analyzeBounds\28SkMatrix\20const&\2c\20SkIRect\20const&\2c\20skif::FilterResult::BoundsScope\29\20const 1606:skif::FilterResult::AutoSurface::snap\28\29 1607:skif::FilterResult::AutoSurface::AutoSurface\28skif::Context\20const&\2c\20skif::LayerSpace\20const&\2c\20skif::FilterResult::PixelBoundary\2c\20bool\2c\20SkSurfaceProps\20const*\29 1608:skia_private::THashMap::operator\5b\5d\28SkSL::Variable\20const*\20const&\29 1609:skia_private::TArray::operator=\28skia_private::TArray\20const&\29 1610:skia_private::TArray::resize_back\28int\29 1611:skia_private::TArray::operator=\28skia_private::TArray&&\29 1612:skia_png_get_valid 1613:skia_png_gamma_8bit_correct 1614:skia_png_free_data 1615:skia_png_chunk_warning 1616:skia::textlayout::TextLine::measureTextInsideOneRun\28skia::textlayout::SkRange\2c\20skia::textlayout::Run\20const*\2c\20float\2c\20float\2c\20bool\2c\20skia::textlayout::TextLine::TextAdjustment\29\20const 1617:skia::textlayout::Run::positionX\28unsigned\20long\29\20const 1618:skia::textlayout::Run::Run\28skia::textlayout::ParagraphImpl*\2c\20SkShaper::RunHandler::RunInfo\20const&\2c\20unsigned\20long\2c\20float\2c\20bool\2c\20float\2c\20unsigned\20long\2c\20float\29 1619:skia::textlayout::ParagraphCacheKey::operator==\28skia::textlayout::ParagraphCacheKey\20const&\29\20const 1620:skia::textlayout::FontCollection::enableFontFallback\28\29 1621:skgpu::tess::PatchWriter\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\294>\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\298>\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\2964>\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\2932>\2c\20skgpu::tess::ReplicateLineEndPoints\2c\20skgpu::tess::TrackJoinControlPoints>::chopAndWriteCubics\28skvx::Vec<2\2c\20float>\2c\20skvx::Vec<2\2c\20float>\2c\20skvx::Vec<2\2c\20float>\2c\20skvx::Vec<2\2c\20float>\2c\20int\29 1622:skgpu::ganesh::SmallPathAtlasMgr::reset\28\29 1623:skgpu::ganesh::QuadPerEdgeAA::VertexSpec::vertexSize\28\29\20const 1624:skgpu::ganesh::Device::readSurfaceView\28\29 1625:skgpu::ganesh::ClipStack::clip\28skgpu::ganesh::ClipStack::RawElement&&\29 1626:skgpu::ganesh::ClipStack::RawElement::contains\28skgpu::ganesh::ClipStack::RawElement\20const&\29\20const 1627:skgpu::ganesh::ClipStack::RawElement::RawElement\28SkMatrix\20const&\2c\20GrShape\20const&\2c\20GrAA\2c\20SkClipOp\29 1628:skgpu::TAsyncReadResult::Plane&\20skia_private::TArray::Plane\2c\20false>::emplace_back\2c\20unsigned\20long&>\28sk_sp&&\2c\20unsigned\20long&\29 1629:skgpu::Swizzle::asString\28\29\20const 1630:skgpu::ScratchKey::GenerateResourceType\28\29 1631:skgpu::GetBlendFormula\28bool\2c\20bool\2c\20SkBlendMode\29 1632:select_curve_ops\28skcms_Curve\20const*\2c\20int\2c\20OpAndArg*\29 1633:sbrk 1634:ps_tofixedarray 1635:processPropertySeq\28UBiDi*\2c\20LevState*\2c\20unsigned\20char\2c\20int\2c\20int\29 1636:png_format_buffer 1637:png_check_keyword 1638:nextafterf 1639:jpeg_huff_decode 1640:init_entry\28char\20const*\2c\20char\20const*\2c\20UErrorCode*\29 1641:icu_73::UnicodeString::countChar32\28int\2c\20int\29\20const 1642:icu_73::UnicodeSet::getRangeStart\28int\29\20const 1643:icu_73::UnicodeSet::getRangeEnd\28int\29\20const 1644:icu_73::UnicodeSet::getRangeCount\28\29\20const 1645:icu_73::UVector::UVector\28void\20\28*\29\28void*\29\2c\20signed\20char\20\28*\29\28UElement\2c\20UElement\29\2c\20int\2c\20UErrorCode&\29 1646:icu_73::UVector32::addElement\28int\2c\20UErrorCode&\29 1647:icu_73::UVector32::UVector32\28int\2c\20UErrorCode&\29 1648:icu_73::UCharsTrie::next\28int\29 1649:icu_73::UCharsTrie::branchNext\28char16_t\20const*\2c\20int\2c\20int\29 1650:icu_73::ReorderingBuffer::appendSupplementary\28int\2c\20unsigned\20char\2c\20UErrorCode&\29 1651:icu_73::Norm2AllModes::createNFCInstance\28UErrorCode&\29 1652:icu_73::LanguageBreakEngine::LanguageBreakEngine\28\29 1653:icu_73::CharacterProperties::getInclusionsForProperty\28UProperty\2c\20UErrorCode&\29 1654:icu_73::CharString::ensureCapacity\28int\2c\20int\2c\20UErrorCode&\29 1655:hb_unicode_funcs_destroy 1656:hb_serialize_context_t::pop_discard\28\29 1657:hb_buffer_set_flags 1658:hb_blob_create_sub_blob 1659:hb_array_t::hash\28\29\20const 1660:hairquad\28SkPoint\20const*\2c\20SkRegion\20const*\2c\20SkRect\20const*\2c\20SkRect\20const*\2c\20SkBlitter*\2c\20int\2c\20void\20\28*\29\28SkPoint\20const*\2c\20int\2c\20SkRegion\20const*\2c\20SkBlitter*\29\29 1661:haircubic\28SkPoint\20const*\2c\20SkRegion\20const*\2c\20SkRect\20const*\2c\20SkRect\20const*\2c\20SkBlitter*\2c\20int\2c\20void\20\28*\29\28SkPoint\20const*\2c\20int\2c\20SkRegion\20const*\2c\20SkBlitter*\29\29 1662:fmt_u 1663:flush_pending 1664:emscripten::internal::Invoker>::invoke\28sk_sp\20\28*\29\28\29\29 1665:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkPath&\29\2c\20SkPath*\29 1666:do_fixed 1667:destroy_face 1668:decltype\28fp\28\28SkRecords::NoOp*\29\28nullptr\29\29\29\20SkRecord::Record::mutate\28SkRecord::Destroyer&\29 1669:char*\20const&\20std::__2::max\5babi:v160004\5d\28char*\20const&\2c\20char*\20const&\29 1670:cf2_stack_pushInt 1671:cf2_interpT2CharString 1672:cf2_glyphpath_moveTo 1673:byn$mgfn-shared$skif::\28anonymous\20namespace\29::RasterBackend::~RasterBackend\28\29 1674:byn$mgfn-shared$skif::Backend::~Backend\28\29.1 1675:byn$mgfn-shared$SkUnicode_icu::isEmoji\28int\29 1676:byn$mgfn-shared$SkSL::ConstructorArrayCast::clone\28SkSL::Position\29\20const 1677:byn$mgfn-shared$GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::onMakeProgramImpl\28\29\20const 1678:bool\20hb_hashmap_t::set_with_hash\28unsigned\20int\20const&\2c\20unsigned\20int\2c\20unsigned\20int\20const&\2c\20bool\29 1679:bool\20emscripten::internal::MemberAccess::getWire\28bool\20RuntimeEffectUniform::*\20const&\2c\20RuntimeEffectUniform\20const&\29 1680:_isVariantSubtag\28char\20const*\2c\20int\29 1681:_hb_ot_metrics_get_position_common\28hb_font_t*\2c\20hb_ot_metrics_tag_t\2c\20int*\29 1682:_getStringOrCopyKey\28char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char16_t*\2c\20int\2c\20UErrorCode*\29 1683:__wasi_syscall_ret 1684:__tandf 1685:__syscall_ret 1686:__floatunsitf 1687:__cxa_allocate_exception 1688:\28anonymous\20namespace\29::PathGeoBuilder::createMeshAndPutBackReserve\28\29 1689:\28anonymous\20namespace\29::MeshOp::fixedFunctionFlags\28\29\20const 1690:\28anonymous\20namespace\29::DrawAtlasOpImpl::fixedFunctionFlags\28\29\20const 1691:WebPDemuxGetI 1692:VP8LDoFillBitWindow 1693:VP8LClear 1694:TT_Get_MM_Var 1695:SkWStream::writeScalar\28float\29 1696:SkUTF::UTF8ToUTF16\28unsigned\20short*\2c\20int\2c\20char\20const*\2c\20unsigned\20long\29 1697:SkTypeface::MakeEmpty\28\29 1698:SkTSect::BinarySearch\28SkTSect*\2c\20SkTSect*\2c\20SkIntersections*\29 1699:SkTConic::operator\5b\5d\28int\29\20const 1700:SkTBlockList::reset\28\29 1701:SkTBlockList::reset\28\29 1702:SkSurfaces::RenderTarget\28GrRecordingContext*\2c\20skgpu::Budgeted\2c\20SkImageInfo\20const&\2c\20int\2c\20GrSurfaceOrigin\2c\20SkSurfaceProps\20const*\2c\20bool\2c\20bool\29 1703:SkString::insertU32\28unsigned\20long\2c\20unsigned\20int\29 1704:SkShaders::MatrixRec::applyForFragmentProcessor\28SkMatrix\20const&\29\20const 1705:SkScan::FillRect\28SkRect\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 1706:SkScan::FillIRect\28SkIRect\20const&\2c\20SkRegion\20const*\2c\20SkBlitter*\29 1707:SkSL::optimize_comparison\28SkSL::Context\20const&\2c\20std::__2::array\20const&\2c\20bool\20\28*\29\28double\2c\20double\29\29 1708:SkSL::Type::convertArraySize\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Position\2c\20long\20long\29\20const 1709:SkSL::RP::Builder::dot_floats\28int\29 1710:SkSL::ProgramUsage::get\28SkSL::FunctionDeclaration\20const&\29\20const 1711:SkSL::Parser::type\28SkSL::Modifiers*\29 1712:SkSL::Parser::modifiers\28\29 1713:SkSL::ConstructorDiagonalMatrix::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>\29 1714:SkSL::ConstructorArrayCast::~ConstructorArrayCast\28\29 1715:SkSL::ConstantFolder::MakeConstantValueForVariable\28SkSL::Position\2c\20std::__2::unique_ptr>\29 1716:SkSL::Compiler::Compiler\28\29 1717:SkSL::Analysis::IsTrivialExpression\28SkSL::Expression\20const&\29 1718:SkRuntimeEffectPriv::CanDraw\28SkCapabilities\20const*\2c\20SkRuntimeEffect\20const*\29 1719:SkRegion::setPath\28SkPath\20const&\2c\20SkRegion\20const&\29 1720:SkRegion::operator=\28SkRegion\20const&\29 1721:SkRegion::op\28SkRegion\20const&\2c\20SkRegion\20const&\2c\20SkRegion::Op\29 1722:SkRegion::Iterator::next\28\29 1723:SkRasterPipeline::compile\28\29\20const 1724:SkRasterPipeline::appendClampIfNormalized\28SkImageInfo\20const&\29 1725:SkRRect::transform\28SkMatrix\20const&\2c\20SkRRect*\29\20const 1726:SkPictureRecorder::beginRecording\28SkRect\20const&\2c\20SkBBHFactory*\29 1727:SkPathWriter::finishContour\28\29 1728:SkPathStroker::cubicPerpRay\28SkPoint\20const*\2c\20float\2c\20SkPoint*\2c\20SkPoint*\2c\20SkPoint*\29\20const 1729:SkPath::getSegmentMasks\28\29\20const 1730:SkPath::addRRect\28SkRRect\20const&\2c\20SkPathDirection\29 1731:SkPaintPriv::ComputeLuminanceColor\28SkPaint\20const&\29 1732:SkPaint::nothingToDraw\28\29\20const 1733:SkPaint::isSrcOver\28\29\20const 1734:SkOpAngle::linesOnOriginalSide\28SkOpAngle\20const*\29 1735:SkNotifyBitmapGenIDIsStale\28unsigned\20int\29 1736:SkNoDrawCanvas::onDrawPatch\28SkPoint\20const*\2c\20unsigned\20int\20const*\2c\20SkPoint\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 1737:SkMipmap::Build\28SkPixmap\20const&\2c\20SkDiscardableMemory*\20\28*\29\28unsigned\20long\29\2c\20bool\29 1738:SkMeshSpecification::~SkMeshSpecification\28\29 1739:SkMatrix::setSinCos\28float\2c\20float\2c\20float\2c\20float\29 1740:SkMatrix::setRSXform\28SkRSXform\20const&\29 1741:SkMatrix::mapHomogeneousPoints\28SkPoint3*\2c\20SkPoint3\20const*\2c\20int\29\20const 1742:SkMaskFilterBase::getFlattenableType\28\29\20const 1743:SkMaskBuilder::AllocImage\28unsigned\20long\2c\20SkMaskBuilder::AllocType\29 1744:SkKnownRuntimeEffects::\28anonymous\20namespace\29::make_blur_2D_effect\28int\2c\20SkRuntimeEffect::Options\20const&\29 1745:SkKnownRuntimeEffects::\28anonymous\20namespace\29::make_blur_1D_effect\28int\2c\20SkRuntimeEffect::Options\20const&\29 1746:SkJSONWriter::appendString\28char\20const*\2c\20unsigned\20long\29 1747:SkIntersections::insertNear\28double\2c\20double\2c\20SkDPoint\20const&\2c\20SkDPoint\20const&\29 1748:SkIntersections::flip\28\29 1749:SkImageInfo::Make\28SkISize\2c\20SkColorType\2c\20SkAlphaType\2c\20sk_sp\29 1750:SkImageFilters::Empty\28\29 1751:SkImageFilter_Base::~SkImageFilter_Base\28\29 1752:SkImage::isAlphaOnly\28\29\20const 1753:SkGlyph::drawable\28\29\20const 1754:SkFont::unicharToGlyph\28int\29\20const 1755:SkFont::setTypeface\28sk_sp\29 1756:SkFont::setHinting\28SkFontHinting\29 1757:SkFindQuadMaxCurvature\28SkPoint\20const*\29 1758:SkEvalCubicAt\28SkPoint\20const*\2c\20float\2c\20SkPoint*\2c\20SkPoint*\2c\20SkPoint*\29 1759:SkDrawTiler::stepAndSetupTileDraw\28\29 1760:SkDrawTiler::SkDrawTiler\28SkBitmapDevice*\2c\20SkRect\20const*\29 1761:SkDevice::accessPixels\28SkPixmap*\29 1762:SkDeque::SkDeque\28unsigned\20long\2c\20void*\2c\20unsigned\20long\2c\20int\29 1763:SkDCubic::FindExtrema\28double\20const*\2c\20double*\29 1764:SkColorFilters::Blend\28unsigned\20int\2c\20SkBlendMode\29 1765:SkCodec::getPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const*\29 1766:SkCanvas::internalRestore\28\29 1767:SkCanvas::init\28sk_sp\29 1768:SkCanvas::drawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 1769:SkCanvas::clipRect\28SkRect\20const&\2c\20SkClipOp\2c\20bool\29 1770:SkCanvas::aboutToDraw\28SkPaint\20const&\2c\20SkRect\20const*\2c\20SkEnumBitMask\29 1771:SkBitmap::operator=\28SkBitmap&&\29 1772:SkBinaryWriteBuffer::~SkBinaryWriteBuffer\28\29 1773:SkAutoPixmapStorage::tryAlloc\28SkImageInfo\20const&\29 1774:SkAAClip::SkAAClip\28\29 1775:OT::glyf_accelerator_t::glyf_accelerator_t\28hb_face_t*\29 1776:OT::VariationStore::sanitize\28hb_sanitize_context_t*\29\20const 1777:OT::Layout::GPOS_impl::ValueFormat::sanitize_value_devices\28hb_sanitize_context_t*\2c\20void\20const*\2c\20OT::IntType\20const*\29\20const 1778:OT::Layout::GPOS_impl::ValueFormat::apply_value\28OT::hb_ot_apply_context_t*\2c\20void\20const*\2c\20OT::IntType\20const*\2c\20hb_glyph_position_t&\29\20const 1779:OT::HVARVVAR::sanitize\28hb_sanitize_context_t*\29\20const 1780:GrTriangulator::VertexList::insert\28GrTriangulator::Vertex*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::Vertex*\29 1781:GrTriangulator::Poly::addEdge\28GrTriangulator::Edge*\2c\20GrTriangulator::Side\2c\20GrTriangulator*\29 1782:GrTriangulator::EdgeList::remove\28GrTriangulator::Edge*\29 1783:GrStyledShape::operator=\28GrStyledShape\20const&\29 1784:GrSimpleMeshDrawOpHelperWithStencil::createProgramInfoWithStencil\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrGeometryProcessor*\2c\20GrPrimitiveType\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 1785:GrResourceCache::purgeAsNeeded\28\29 1786:GrRenderTask::addDependency\28GrDrawingManager*\2c\20GrSurfaceProxy*\2c\20skgpu::Mipmapped\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29 1787:GrRenderTask::GrRenderTask\28\29 1788:GrRenderTarget::onRelease\28\29 1789:GrProxyProvider::findOrCreateProxyByUniqueKey\28skgpu::UniqueKey\20const&\2c\20GrSurfaceProxy::UseAllocator\29 1790:GrProcessorSet::operator==\28GrProcessorSet\20const&\29\20const 1791:GrPathUtils::generateQuadraticPoints\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20SkPoint**\2c\20unsigned\20int\29 1792:GrMeshDrawOp::QuadHelper::QuadHelper\28GrMeshDrawTarget*\2c\20unsigned\20long\2c\20int\29 1793:GrIsStrokeHairlineOrEquivalent\28GrStyle\20const&\2c\20SkMatrix\20const&\2c\20float*\29 1794:GrImageContext::abandoned\28\29 1795:GrGpuResource::registerWithCache\28skgpu::Budgeted\29 1796:GrGpuBuffer::isMapped\28\29\20const 1797:GrGpu::submitToGpu\28GrSyncCpu\29 1798:GrGpu::didWriteToSurface\28GrSurface*\2c\20GrSurfaceOrigin\2c\20SkIRect\20const*\2c\20unsigned\20int\29\20const 1799:GrGeometryProcessor::ProgramImpl::setupUniformColor\28GrGLSLFPFragmentBuilder*\2c\20GrGLSLUniformHandler*\2c\20char\20const*\2c\20GrResourceHandle*\29 1800:GrGLGpu::flushRenderTarget\28GrGLRenderTarget*\2c\20bool\29 1801:GrFragmentProcessor::visitTextureEffects\28std::__2::function\20const&\29\20const 1802:GrFragmentProcessor::visitProxies\28std::__2::function\20const&\29\20const 1803:GrCpuBuffer::ref\28\29\20const 1804:GrBufferAllocPool::makeSpace\28unsigned\20long\2c\20unsigned\20long\2c\20sk_sp*\2c\20unsigned\20long*\29 1805:GrBackendTextures::GetGLTextureInfo\28GrBackendTexture\20const&\2c\20GrGLTextureInfo*\29 1806:FilterLoop26_C 1807:FT_Vector_Transform 1808:FT_Vector_NormLen 1809:FT_Outline_Transform 1810:CFF::dict_opset_t::process_op\28unsigned\20int\2c\20CFF::interp_env_t&\29 1811:AlmostBetweenUlps\28float\2c\20float\2c\20float\29 1812:void\20std::__2::vector>::__emplace_back_slow_path\28skia::textlayout::OneLineShaper::RunBlock&\29 1813:utext_openUChars_73 1814:utext_char32At_73 1815:ures_openWithType\28UResourceBundle*\2c\20char\20const*\2c\20char\20const*\2c\20UResOpenType\2c\20UErrorCode*\29 1816:ures_openDirect_73 1817:ures_getSize_73 1818:uprv_min_73 1819:uloc_forLanguageTag_73 1820:uhash_openSize_73 1821:udata_openChoice_73 1822:ucptrie_internalSmallU8Index_73 1823:ucptrie_get_73 1824:ubidi_getMemory_73 1825:ubidi_getClass_73 1826:transform\28unsigned\20int*\2c\20unsigned\20char\20const*\29 1827:toUpperOrTitle\28int\2c\20int\20\28*\29\28void*\2c\20signed\20char\29\2c\20void*\2c\20char16_t\20const**\2c\20int\2c\20signed\20char\29 1828:strtod 1829:strcspn 1830:std::__2::vector>::__append\28unsigned\20long\29 1831:std::__2::unique_ptr>\20SkSL::coalesce_pairwise_vectors\28std::__2::array\20const&\2c\20double\2c\20SkSL::Type\20const&\2c\20double\20\28*\29\28double\2c\20double\2c\20double\29\2c\20double\20\28*\29\28double\29\29 1832:std::__2::locale::locale\28std::__2::locale\20const&\29 1833:std::__2::locale::classic\28\29 1834:std::__2::codecvt::do_unshift\28__mbstate_t&\2c\20char*\2c\20char*\2c\20char*&\29\20const 1835:std::__2::chrono::__libcpp_steady_clock_now\28\29 1836:std::__2::basic_string\2c\20std::__2::allocator>::__grow_by_and_replace\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20char\20const*\29 1837:std::__2::basic_string\2c\20std::__2::allocator>::__fits_in_sso\5babi:v160004\5d\28unsigned\20long\29 1838:std::__2::__wrap_iter::operator++\5babi:v160004\5d\28\29 1839:std::__2::__wrap_iter\20std::__2::vector>::insert\28std::__2::__wrap_iter\2c\20float\20const*\2c\20float\20const*\29 1840:std::__2::__wrap_iter::operator++\5babi:v160004\5d\28\29 1841:std::__2::__throw_bad_variant_access\5babi:v160004\5d\28\29 1842:std::__2::__split_buffer>::push_front\28skia::textlayout::OneLineShaper::RunBlock*&&\29 1843:std::__2::__shared_count::__release_shared\5babi:v160004\5d\28\29 1844:std::__2::__num_get::__stage2_int_prep\28std::__2::ios_base&\2c\20wchar_t&\29 1845:std::__2::__num_get::__do_widen\28std::__2::ios_base&\2c\20wchar_t*\29\20const 1846:std::__2::__num_get::__stage2_int_prep\28std::__2::ios_base&\2c\20char&\29 1847:std::__2::__itoa::__append1\5babi:v160004\5d\28char*\2c\20unsigned\20int\29 1848:sktext::gpu::VertexFiller::vertexStride\28SkMatrix\20const&\29\20const 1849:skif::Mapping::adjustLayerSpace\28SkMatrix\20const&\29 1850:skif::LayerSpace::round\28\29\20const 1851:skif::FilterResult::Builder::~Builder\28\29 1852:skif::FilterResult::Builder::Builder\28skif::Context\20const&\29 1853:skia_private::THashTable\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair\2c\20SkSL::Type\20const*\2c\20skia_private::THashMap\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair>::uncheckedSet\28skia_private::THashMap\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair&&\29 1854:skia_private::THashTable::AdaptedTraits>::removeIfExists\28skgpu::UniqueKey\20const&\29 1855:skia_private::TArray\2c\20true>::operator=\28skia_private::TArray\2c\20true>&&\29 1856:skia_private::TArray::resize_back\28int\29 1857:skia_private::TArray::push_back_raw\28int\29 1858:skia_png_sig_cmp 1859:skia_png_set_progressive_read_fn 1860:skia_png_set_longjmp_fn 1861:skia_png_set_interlace_handling 1862:skia_png_reciprocal 1863:skia_png_read_chunk_header 1864:skia_png_get_io_ptr 1865:skia_png_calloc 1866:skia::textlayout::TextLine::~TextLine\28\29 1867:skia::textlayout::ParagraphStyle::ParagraphStyle\28skia::textlayout::ParagraphStyle\20const&\29 1868:skia::textlayout::ParagraphCacheKey::~ParagraphCacheKey\28\29 1869:skia::textlayout::FontCollection::findTypefaces\28std::__2::vector>\20const&\2c\20SkFontStyle\2c\20std::__2::optional\20const&\29 1870:skia::textlayout::Cluster::trimmedWidth\28unsigned\20long\29\20const 1871:skgpu::ganesh::TextureOp::BatchSizeLimiter::createOp\28GrTextureSetEntry*\2c\20int\2c\20GrAAType\29 1872:skgpu::ganesh::SurfaceFillContext::fillWithFP\28std::__2::unique_ptr>\29 1873:skgpu::ganesh::SurfaceDrawContext::drawShapeUsingPathRenderer\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20GrStyledShape&&\2c\20bool\29 1874:skgpu::ganesh::SurfaceDrawContext::drawRect\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20GrStyle\20const*\29 1875:skgpu::ganesh::SurfaceDrawContext::drawRRect\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkRRect\20const&\2c\20GrStyle\20const&\29 1876:skgpu::ganesh::SurfaceContext::transferPixels\28GrColorType\2c\20SkIRect\20const&\29 1877:skgpu::ganesh::QuadPerEdgeAA::CalcIndexBufferOption\28GrAAType\2c\20int\29 1878:skgpu::ganesh::LockTextureProxyView\28GrRecordingContext*\2c\20SkImage_Lazy\20const*\2c\20GrImageTexGenPolicy\2c\20skgpu::Mipmapped\29::$_0::operator\28\29\28GrSurfaceProxyView\20const&\29\20const 1879:skgpu::ganesh::Device::targetProxy\28\29 1880:skgpu::ganesh::ClipStack::getConservativeBounds\28\29\20const 1881:skgpu::TAsyncReadResult::addTransferResult\28skgpu::ganesh::SurfaceContext::PixelTransferResult\20const&\2c\20SkISize\2c\20unsigned\20long\2c\20skgpu::TClientMappedBufferManager*\29 1882:skgpu::Plot::resetRects\28\29 1883:skcms_TransferFunction_isPQish 1884:skcms_TransferFunction_invert 1885:skcms_Matrix3x3_concat 1886:ps_dimension_add_t1stem 1887:log2f 1888:log 1889:jcopy_sample_rows 1890:icu_73::initSingletons\28char\20const*\2c\20UErrorCode&\29 1891:icu_73::\28anonymous\20namespace\29::AliasReplacer::replaceLanguage\28bool\2c\20bool\2c\20bool\2c\20icu_73::UVector&\2c\20UErrorCode&\29 1892:icu_73::UnicodeString::append\28int\29 1893:icu_73::UnicodeSetStringSpan::UnicodeSetStringSpan\28icu_73::UnicodeSet\20const&\2c\20icu_73::UVector\20const&\2c\20unsigned\20int\29 1894:icu_73::UnicodeSet::spanUTF8\28char\20const*\2c\20int\2c\20USetSpanCondition\29\20const 1895:icu_73::UnicodeSet::spanBack\28char16_t\20const*\2c\20int\2c\20USetSpanCondition\29\20const 1896:icu_73::UnicodeSet::spanBackUTF8\28char\20const*\2c\20int\2c\20USetSpanCondition\29\20const 1897:icu_73::UnicodeSet::retain\28int\20const*\2c\20int\2c\20signed\20char\29 1898:icu_73::UnicodeSet::removeAllStrings\28\29 1899:icu_73::UnicodeSet::operator=\28icu_73::UnicodeSet\20const&\29 1900:icu_73::UnicodeSet::complement\28\29 1901:icu_73::UnicodeSet::_add\28icu_73::UnicodeString\20const&\29 1902:icu_73::UVector::indexOf\28void*\2c\20int\29\20const 1903:icu_73::UVector::UVector\28void\20\28*\29\28void*\29\2c\20signed\20char\20\28*\29\28UElement\2c\20UElement\29\2c\20UErrorCode&\29 1904:icu_73::UCharsTrieBuilder::write\28char16_t\20const*\2c\20int\29 1905:icu_73::StringEnumeration::~StringEnumeration\28\29 1906:icu_73::StackUResourceBundle::StackUResourceBundle\28\29 1907:icu_73::RuleCharacterIterator::getPos\28icu_73::RuleCharacterIterator::Pos&\29\20const 1908:icu_73::RuleBasedBreakIterator::BreakCache::populatePreceding\28UErrorCode&\29 1909:icu_73::ReorderingBuffer::previousCC\28\29 1910:icu_73::Normalizer2Impl::compose\28char16_t\20const*\2c\20char16_t\20const*\2c\20signed\20char\2c\20signed\20char\2c\20icu_73::ReorderingBuffer&\2c\20UErrorCode&\29\20const 1911:icu_73::Normalizer2Factory::getNFCImpl\28UErrorCode&\29 1912:icu_73::LocaleUtility::initLocaleFromName\28icu_73::UnicodeString\20const&\2c\20icu_73::Locale&\29 1913:icu_73::LocaleKeyFactory::~LocaleKeyFactory\28\29 1914:icu_73::Locale::setToBogus\28\29 1915:icu_73::CheckedArrayByteSink::CheckedArrayByteSink\28char*\2c\20int\29 1916:icu_73::BreakIterator::createInstance\28icu_73::Locale\20const&\2c\20int\2c\20UErrorCode&\29 1917:hb_font_t::has_func\28unsigned\20int\29 1918:hb_buffer_create_similar 1919:ft_service_list_lookup 1920:fseek 1921:fiprintf 1922:fflush 1923:expm1 1924:emscripten::internal::MethodInvoker::invoke\28void\20\28GrDirectContext::*\20const&\29\28\29\2c\20GrDirectContext*\29 1925:emscripten::internal::FunctionInvoker\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29\2c\20void\2c\20SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*>::invoke\28void\20\28**\29\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29\2c\20SkCanvas*\2c\20sk_sp*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29 1926:emscripten::internal::FunctionInvoker::invoke\28emscripten::val\20\28**\29\28SkFont&\29\2c\20SkFont*\29 1927:do_putc 1928:crc32_z 1929:cf2_hintmap_insertHint 1930:cf2_hintmap_build 1931:cf2_glyphpath_pushPrevElem 1932:byn$mgfn-shared$std::__2::__function::__func\20const&\29::$_0\2c\20std::__2::allocator\20const&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 1933:byn$mgfn-shared$std::__2::__function::__func\20const&\29::$_0\2c\20std::__2::allocator\20const&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 1934:byn$mgfn-shared$std::__2::__function::__func\2c\20void\20\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29>::__clone\28std::__2::__function::__base*\29\20const 1935:byn$mgfn-shared$std::__2::__function::__func\2c\20void\20\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29>::__clone\28\29\20const 1936:byn$mgfn-shared$skgpu::ganesh::\28anonymous\20namespace\29::QuadEdgeEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const 1937:append_multitexture_lookup\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20int\2c\20GrGLSLVarying\20const&\2c\20char\20const*\2c\20char\20const*\29 1938:afm_stream_read_one 1939:af_latin_hints_link_segments 1940:af_latin_compute_stem_width 1941:af_glyph_hints_reload 1942:acosf 1943:__sin 1944:__cos 1945:\28anonymous\20namespace\29::PathSubRun::canReuse\28SkPaint\20const&\2c\20SkMatrix\20const&\29\20const 1946:VP8LHuffmanTablesDeallocate 1947:UDataMemory_createNewInstance_73 1948:SkWriter32::writeSampling\28SkSamplingOptions\20const&\29 1949:SkVertices::Builder::detach\28\29 1950:SkUTF::NextUTF8WithReplacement\28char\20const**\2c\20char\20const*\29 1951:SkTypeface_FreeType::~SkTypeface_FreeType\28\29 1952:SkTypeface_FreeType::FaceRec::~FaceRec\28\29 1953:SkTypeface::SkTypeface\28SkFontStyle\20const&\2c\20bool\29 1954:SkTreatAsSprite\28SkMatrix\20const&\2c\20SkISize\20const&\2c\20SkSamplingOptions\20const&\2c\20bool\29 1955:SkTextBlobBuilder::TightRunBounds\28SkTextBlob::RunRecord\20const&\29 1956:SkTextBlob::RunRecord::textSizePtr\28\29\20const 1957:SkTMultiMap::remove\28skgpu::ScratchKey\20const&\2c\20GrGpuResource\20const*\29 1958:SkTMultiMap::insert\28skgpu::ScratchKey\20const&\2c\20GrGpuResource*\29 1959:SkTDStorage::insert\28int\2c\20int\2c\20void\20const*\29 1960:SkTDPQueue<\28anonymous\20namespace\29::RunIteratorQueue::Entry\2c\20&\28anonymous\20namespace\29::RunIteratorQueue::CompareEntry\28\28anonymous\20namespace\29::RunIteratorQueue::Entry\20const&\2c\20\28anonymous\20namespace\29::RunIteratorQueue::Entry\20const&\29\2c\20\28int*\20\28*\29\28\28anonymous\20namespace\29::RunIteratorQueue::Entry\20const&\29\290>::insert\28\28anonymous\20namespace\29::RunIteratorQueue::Entry\29 1961:SkSwizzler::Make\28SkEncodedInfo\20const&\2c\20unsigned\20int\20const*\2c\20SkImageInfo\20const&\2c\20SkCodec::Options\20const&\2c\20SkIRect\20const*\29 1962:SkSurface_Base::~SkSurface_Base\28\29 1963:SkSurface::recordingContext\28\29\20const 1964:SkString::resize\28unsigned\20long\29 1965:SkStrikeSpec::SkStrikeSpec\28SkFont\20const&\2c\20SkPaint\20const&\2c\20SkSurfaceProps\20const&\2c\20SkScalerContextFlags\2c\20SkMatrix\20const&\29 1966:SkStrikeSpec::MakeMask\28SkFont\20const&\2c\20SkPaint\20const&\2c\20SkSurfaceProps\20const&\2c\20SkScalerContextFlags\2c\20SkMatrix\20const&\29 1967:SkStrikeSpec::MakeCanonicalized\28SkFont\20const&\2c\20SkPaint\20const*\29 1968:SkStrikeCache::findOrCreateStrike\28SkStrikeSpec\20const&\29 1969:SkSpecialImages::MakeFromRaster\28SkIRect\20const&\2c\20SkBitmap\20const&\2c\20SkSurfaceProps\20const&\29 1970:SkShaders::MatrixRec::apply\28SkStageRec\20const&\2c\20SkMatrix\20const&\29\20const 1971:SkShaders::MatrixRec::MatrixRec\28SkMatrix\20const&\29 1972:SkShaders::Blend\28SkBlendMode\2c\20sk_sp\2c\20sk_sp\29 1973:SkScan::FillPath\28SkPath\20const&\2c\20SkRegion\20const&\2c\20SkBlitter*\29 1974:SkScalerContext_FreeType::emboldenIfNeeded\28FT_FaceRec_*\2c\20FT_GlyphSlotRec_*\2c\20unsigned\20short\29 1975:SkSL::Type::displayName\28\29\20const 1976:SkSL::Type::checkForOutOfRangeLiteral\28SkSL::Context\20const&\2c\20double\2c\20SkSL::Position\29\20const 1977:SkSL::SymbolTable::find\28std::__2::basic_string_view>\29\20const 1978:SkSL::String::Separator\28\29::Output::~Output\28\29 1979:SkSL::RP::SlotManager::addSlotDebugInfoForGroup\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20SkSL::Type\20const&\2c\20SkSL::Position\2c\20int*\2c\20bool\29 1980:SkSL::RP::Generator::foldComparisonOp\28SkSL::Operator\2c\20int\29 1981:SkSL::RP::Builder::branch_if_no_lanes_active\28int\29 1982:SkSL::PrefixExpression::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Operator\2c\20std::__2::unique_ptr>\29 1983:SkSL::PipelineStage::PipelineStageCodeGenerator::typedVariable\28SkSL::Type\20const&\2c\20std::__2::basic_string_view>\29 1984:SkSL::Parser::parseArrayDimensions\28SkSL::Position\2c\20SkSL::Type\20const**\29 1985:SkSL::Parser::arraySize\28long\20long*\29 1986:SkSL::Operator::operatorName\28\29\20const 1987:SkSL::ModifierFlags::paddedDescription\28\29\20const 1988:SkSL::ConstantFolder::GetConstantValue\28SkSL::Expression\20const&\2c\20double*\29 1989:SkSL::ConstantFolder::GetConstantInt\28SkSL::Expression\20const&\2c\20long\20long*\29 1990:SkSL::Compiler::convertProgram\28SkSL::ProgramKind\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20SkSL::ProgramSettings\20const&\29 1991:SkRuntimeEffect::findChild\28std::__2::basic_string_view>\29\20const 1992:SkResourceCache::remove\28SkResourceCache::Rec*\29 1993:SkRegion::op\28SkRegion\20const&\2c\20SkIRect\20const&\2c\20SkRegion::Op\29 1994:SkRegion::Iterator::Iterator\28SkRegion\20const&\29 1995:SkRecords::FillBounds::bounds\28SkRecords::DrawArc\20const&\29\20const 1996:SkReadBuffer::setMemory\28void\20const*\2c\20unsigned\20long\29 1997:SkRasterClip::SkRasterClip\28SkIRect\20const&\29 1998:SkRRect::writeToMemory\28void*\29\20const 1999:SkRRect::setRectXY\28SkRect\20const&\2c\20float\2c\20float\29 2000:SkPointPriv::DistanceToLineBetweenSqd\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPointPriv::Side*\29 2001:SkPoint::setNormalize\28float\2c\20float\29 2002:SkPixmapUtils::SwapWidthHeight\28SkImageInfo\20const&\29 2003:SkPictureRecorder::finishRecordingAsPicture\28\29 2004:SkPathPriv::ComputeFirstDirection\28SkPath\20const&\29 2005:SkPathEffect::asADash\28SkPathEffect::DashInfo*\29\20const 2006:SkPathEdgeIter::SkPathEdgeIter\28SkPath\20const&\29 2007:SkPath::rewind\28\29 2008:SkPath::isLine\28SkPoint*\29\20const 2009:SkPath::incReserve\28int\2c\20int\2c\20int\29 2010:SkPath::addOval\28SkRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\29 2011:SkPaint::setStrokeCap\28SkPaint::Cap\29 2012:SkPaint::refShader\28\29\20const 2013:SkOpSpan::setWindSum\28int\29 2014:SkOpSegment::markAndChaseWinding\28SkOpSpanBase*\2c\20SkOpSpanBase*\2c\20int\2c\20int\2c\20SkOpSpanBase**\29 2015:SkOpContourBuilder::addCurve\28SkPath::Verb\2c\20SkPoint\20const*\2c\20float\29 2016:SkOpAngle::starter\28\29 2017:SkOpAngle::insert\28SkOpAngle*\29 2018:SkNoDestructor::SkNoDestructor\28SkSL::String::Separator\28\29::Output&&\29 2019:SkMatrix::setSinCos\28float\2c\20float\29 2020:SkMatrix::decomposeScale\28SkSize*\2c\20SkMatrix*\29\20const 2021:SkMaskFilter::MakeBlur\28SkBlurStyle\2c\20float\2c\20bool\29 2022:SkMallocPixelRef::MakeAllocate\28SkImageInfo\20const&\2c\20unsigned\20long\29 2023:SkMD5::write\28void\20const*\2c\20unsigned\20long\29 2024:SkLineClipper::IntersectLine\28SkPoint\20const*\2c\20SkRect\20const&\2c\20SkPoint*\29 2025:SkImage_GaneshBase::SkImage_GaneshBase\28sk_sp\2c\20SkImageInfo\2c\20unsigned\20int\29 2026:SkImageGenerator::onRefEncodedData\28\29 2027:SkImage::makeShader\28SkTileMode\2c\20SkTileMode\2c\20SkSamplingOptions\20const&\2c\20SkMatrix\20const&\29\20const 2028:SkImage::makeRasterImage\28GrDirectContext*\2c\20SkImage::CachingHint\29\20const 2029:SkIDChangeListener::SkIDChangeListener\28\29 2030:SkIDChangeListener::List::reset\28\29 2031:SkGradientBaseShader::flatten\28SkWriteBuffer&\29\20const 2032:SkFontMgr::RefEmpty\28\29 2033:SkFont::setEdging\28SkFont::Edging\29 2034:SkEvalQuadAt\28SkPoint\20const*\2c\20float\29 2035:SkEncodedInfo::makeImageInfo\28\29\20const 2036:SkEdgeClipper::next\28SkPoint*\29 2037:SkDevice::scalerContextFlags\28\29\20const 2038:SkConic::evalAt\28float\2c\20SkPoint*\2c\20SkPoint*\29\20const 2039:SkColorInfo::SkColorInfo\28SkColorType\2c\20SkAlphaType\2c\20sk_sp\29 2040:SkCodec::skipScanlines\28int\29 2041:SkChopCubicAtHalf\28SkPoint\20const*\2c\20SkPoint*\29 2042:SkCapabilities::RasterBackend\28\29 2043:SkCanvas::topDevice\28\29\20const 2044:SkCanvas::saveLayer\28SkCanvas::SaveLayerRec\20const&\29 2045:SkCanvas::restore\28\29 2046:SkCanvas::imageInfo\28\29\20const 2047:SkCanvas::drawTextBlob\28SkTextBlob\20const*\2c\20float\2c\20float\2c\20SkPaint\20const&\29 2048:SkCanvas::drawDrawable\28SkDrawable*\2c\20SkMatrix\20const*\29 2049:SkCanvas::clipPath\28SkPath\20const&\2c\20SkClipOp\2c\20bool\29 2050:SkBmpBaseCodec::~SkBmpBaseCodec\28\29 2051:SkBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 2052:SkBlendMode\20SkReadBuffer::read32LE\28SkBlendMode\29 2053:SkBitmap::operator=\28SkBitmap\20const&\29 2054:SkBitmap::extractSubset\28SkBitmap*\2c\20SkIRect\20const&\29\20const 2055:SkBinaryWriteBuffer::writeByteArray\28void\20const*\2c\20unsigned\20long\29 2056:SkBinaryWriteBuffer::SkBinaryWriteBuffer\28SkSerialProcs\20const&\29 2057:SkBaseShadowTessellator::handleLine\28SkPoint\20const&\29 2058:SkAAClip::setRegion\28SkRegion\20const&\29 2059:R 2060:OT::hb_ot_apply_context_t::_set_glyph_class\28unsigned\20int\2c\20unsigned\20int\2c\20bool\2c\20bool\29 2061:OT::cmap::find_subtable\28unsigned\20int\2c\20unsigned\20int\29\20const 2062:GrXPFactory::FromBlendMode\28SkBlendMode\29 2063:GrTriangulator::setBottom\28GrTriangulator::Edge*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Comparator\20const&\29\20const 2064:GrTriangulator::mergeCollinearEdges\28GrTriangulator::Edge*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Comparator\20const&\29\20const 2065:GrTriangulator::Edge::disconnect\28\29 2066:GrThreadSafeCache::find\28skgpu::UniqueKey\20const&\29 2067:GrThreadSafeCache::add\28skgpu::UniqueKey\20const&\2c\20GrSurfaceProxyView\20const&\29 2068:GrThreadSafeCache::Entry::makeEmpty\28\29 2069:GrSurfaceProxyView::operator==\28GrSurfaceProxyView\20const&\29\20const 2070:GrSurfaceProxyView::Copy\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20skgpu::Mipmapped\2c\20SkIRect\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20std::__2::basic_string_view>\29 2071:GrSurfaceProxyPriv::doLazyInstantiation\28GrResourceProvider*\29 2072:GrSurfaceProxy::isFunctionallyExact\28\29\20const 2073:GrSurfaceProxy::Copy\28GrRecordingContext*\2c\20sk_sp\2c\20GrSurfaceOrigin\2c\20skgpu::Mipmapped\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20std::__2::basic_string_view>\2c\20sk_sp*\29 2074:GrSimpleMeshDrawOpHelperWithStencil::fixedFunctionFlags\28\29\20const 2075:GrSimpleMeshDrawOpHelper::finalizeProcessors\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrUserStencilSettings\20const*\2c\20GrClampType\2c\20GrProcessorAnalysisCoverage\2c\20GrProcessorAnalysisColor*\29 2076:GrSimpleMeshDrawOpHelper::CreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrGeometryProcessor*\2c\20GrProcessorSet&&\2c\20GrPrimitiveType\2c\20GrXferBarrierFlags\2c\20GrLoadOp\2c\20GrPipeline::InputFlags\2c\20GrUserStencilSettings\20const*\29 2077:GrSimpleMeshDrawOpHelper::CreatePipeline\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20skgpu::Swizzle\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrProcessorSet&&\2c\20GrPipeline::InputFlags\29 2078:GrResourceProvider::findOrMakeStaticBuffer\28GrGpuBufferType\2c\20unsigned\20long\2c\20void\20const*\2c\20skgpu::UniqueKey\20const&\29 2079:GrResourceProvider::findOrMakeStaticBuffer\28GrGpuBufferType\2c\20unsigned\20long\2c\20skgpu::UniqueKey\20const&\2c\20void\20\28*\29\28skgpu::VertexWriter\2c\20unsigned\20long\29\29 2080:GrResourceCache::findAndRefScratchResource\28skgpu::ScratchKey\20const&\29 2081:GrRecordingContextPriv::makeSFC\28GrImageInfo\2c\20std::__2::basic_string_view>\2c\20SkBackingFit\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrSurfaceOrigin\2c\20skgpu::Budgeted\29 2082:GrQuadUtils::TessellationHelper::Vertices::moveAlong\28GrQuadUtils::TessellationHelper::EdgeVectors\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\29 2083:GrQuad::asRect\28SkRect*\29\20const 2084:GrProcessorSet::GrProcessorSet\28GrProcessorSet&&\29 2085:GrPathUtils::generateCubicPoints\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20SkPoint**\2c\20unsigned\20int\29 2086:GrGpu::createBuffer\28unsigned\20long\2c\20GrGpuBufferType\2c\20GrAccessPattern\29 2087:GrGeometryProcessor::ProgramImpl::WriteOutputPosition\28GrGLSLVertexBuilder*\2c\20GrGLSLUniformHandler*\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\2c\20char\20const*\2c\20SkMatrix\20const&\2c\20GrResourceHandle*\29 2088:GrGLTexture::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 2089:GrGLSLShaderBuilder::appendColorGamutXform\28SkString*\2c\20char\20const*\2c\20GrGLSLColorSpaceXformHelper*\29 2090:GrGLSLColorSpaceXformHelper::emitCode\28GrGLSLUniformHandler*\2c\20GrColorSpaceXform\20const*\2c\20unsigned\20int\29 2091:GrGLRenderTarget::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 2092:GrGLRenderTarget::bindInternal\28unsigned\20int\2c\20bool\29 2093:GrGLGpu::getErrorAndCheckForOOM\28\29 2094:GrGLGpu::bindTexture\28int\2c\20GrSamplerState\2c\20skgpu::Swizzle\20const&\2c\20GrGLTexture*\29 2095:GrFragmentProcessors::Make\28SkShader\20const*\2c\20GrFPArgs\20const&\2c\20SkMatrix\20const&\29 2096:GrFragmentProcessor::visitWithImpls\28std::__2::function\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29\20const 2097:GrFragmentProcessor::ColorMatrix\28std::__2::unique_ptr>\2c\20float\20const*\2c\20bool\2c\20bool\2c\20bool\29 2098:GrDrawingManager::appendTask\28sk_sp\29 2099:GrColorInfo::GrColorInfo\28GrColorInfo\20const&\29 2100:GrCaps::isFormatCompressed\28GrBackendFormat\20const&\29\20const 2101:GrAAConvexTessellator::lineTo\28SkPoint\20const&\2c\20GrAAConvexTessellator::CurveState\29 2102:FT_Select_Metrics 2103:FT_Select_Charmap 2104:FT_Get_Next_Char 2105:FT_Get_Module_Interface 2106:FT_Done_Size 2107:DecodeImageStream 2108:CFF::opset_t::process_op\28unsigned\20int\2c\20CFF::interp_env_t&\29 2109:CFF::Charset::get_glyph\28unsigned\20int\2c\20unsigned\20int\29\20const 2110:wuffs_gif__decoder__num_decoded_frames 2111:void\20std::__2::vector\2c\20std::__2::allocator>>::__push_back_slow_path\20const&>\28sk_sp\20const&\29 2112:void\20std::__2::reverse\5babi:v160004\5d\28wchar_t*\2c\20wchar_t*\29 2113:void\20sort_r_simple<>\28void*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\20\28*\29\28void\20const*\2c\20void\20const*\29\29.2 2114:void\20merge_sort<&sweep_lt_vert\28SkPoint\20const&\2c\20SkPoint\20const&\29>\28GrTriangulator::VertexList*\29 2115:void\20merge_sort<&sweep_lt_horiz\28SkPoint\20const&\2c\20SkPoint\20const&\29>\28GrTriangulator::VertexList*\29 2116:void\20icu_73::\28anonymous\20namespace\29::MixedBlocks::extend\28unsigned\20int\20const*\2c\20int\2c\20int\2c\20int\29 2117:void\20emscripten::internal::MemberAccess::setWire\28float\20StrokeOpts::*\20const&\2c\20StrokeOpts&\2c\20float\29 2118:validate_offsetToRestore\28SkReadBuffer*\2c\20unsigned\20long\29 2119:utrie2_enum_73 2120:utext_clone_73 2121:ustr_hashUCharsN_73 2122:ures_appendResPath\28UResourceBundle*\2c\20char\20const*\2c\20int\2c\20UErrorCode*\29 2123:uprv_isInvariantUString_73 2124:umutablecptrie_set_73 2125:umutablecptrie_close_73 2126:uloc_getVariant_73 2127:uloc_canonicalize_73 2128:uhash_setValueDeleter_73 2129:ubidi_setPara_73 2130:ubidi_getVisualRun_73 2131:ubidi_getRuns_73 2132:u_strstr_73 2133:u_getPropertyValueEnum_73 2134:u_getIntPropertyValue_73 2135:tt_set_mm_blend 2136:tt_face_get_ps_name 2137:trinkle 2138:strtox.1 2139:strtoul 2140:std::__2::unique_ptr::release\5babi:v160004\5d\28\29 2141:std::__2::pair\2c\20void*>*>\2c\20bool>\20std::__2::__hash_table\2c\20std::__2::__unordered_map_hasher\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal\2c\20std::__2::equal_to\2c\20std::__2::hash\2c\20true>\2c\20std::__2::allocator>>::__emplace_unique_key_args\2c\20std::__2::tuple<>>\28GrTriangulator::Vertex*\20const&\2c\20std::__2::piecewise_construct_t\20const&\2c\20std::__2::tuple&&\2c\20std::__2::tuple<>&&\29 2142:std::__2::pair::pair\5babi:v160004\5d\28char\20const*&&\2c\20char*&&\29 2143:std::__2::moneypunct::do_decimal_point\28\29\20const 2144:std::__2::moneypunct::do_decimal_point\28\29\20const 2145:std::__2::istreambuf_iterator>::istreambuf_iterator\5babi:v160004\5d\28std::__2::basic_istream>&\29 2146:std::__2::ios_base::good\5babi:v160004\5d\28\29\20const 2147:std::__2::default_delete\2c\20SkIcuBreakIteratorCache::Request::Hash>::Pair\2c\20SkIcuBreakIteratorCache::Request\2c\20skia_private::THashMap\2c\20SkIcuBreakIteratorCache::Request::Hash>::Pair>::Slot\20\5b\5d>::_EnableIfConvertible\2c\20SkIcuBreakIteratorCache::Request::Hash>::Pair\2c\20SkIcuBreakIteratorCache::Request\2c\20skia_private::THashMap\2c\20SkIcuBreakIteratorCache::Request::Hash>::Pair>::Slot>::type\20std::__2::default_delete\2c\20SkIcuBreakIteratorCache::Request::Hash>::Pair\2c\20SkIcuBreakIteratorCache::Request\2c\20skia_private::THashMap\2c\20SkIcuBreakIteratorCache::Request::Hash>::Pair>::Slot\20\5b\5d>::operator\28\29\5babi:v160004\5d\2c\20SkIcuBreakIteratorCache::Request::Hash>::Pair\2c\20SkIcuBreakIteratorCache::Request\2c\20skia_private::THashMap\2c\20SkIcuBreakIteratorCache::Request::Hash>::Pair>::Slot>\28skia_private::THashTable\2c\20SkIcuBreakIteratorCache::Request::Hash>::Pair\2c\20SkIcuBreakIteratorCache::Request\2c\20skia_private::THashMap\2c\20SkIcuBreakIteratorCache::Request::Hash>::Pair>::Slot*\29\20const 2148:std::__2::ctype::toupper\5babi:v160004\5d\28char\29\20const 2149:std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29 2150:std::__2::basic_string\2c\20std::__2::allocator>\20const*\20std::__2::__scan_keyword\5babi:v160004\5d>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::ctype>\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::ctype\20const&\2c\20unsigned\20int&\2c\20bool\29 2151:std::__2::basic_string\2c\20std::__2::allocator>::operator\5b\5d\5babi:v160004\5d\28unsigned\20long\29\20const 2152:std::__2::basic_string\2c\20std::__2::allocator>::__fits_in_sso\5babi:v160004\5d\28unsigned\20long\29 2153:std::__2::basic_string\2c\20std::__2::allocator>\20const*\20std::__2::__scan_keyword\5babi:v160004\5d>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::ctype>\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::ctype\20const&\2c\20unsigned\20int&\2c\20bool\29 2154:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28char\20const*\2c\20char\20const*\29 2155:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 2156:std::__2::basic_string\2c\20std::__2::allocator>::__get_short_size\5babi:v160004\5d\28\29\20const 2157:std::__2::basic_string\2c\20std::__2::allocator>&\20std::__2::basic_string\2c\20std::__2::allocator>::__assign_no_alias\28char\20const*\2c\20unsigned\20long\29 2158:std::__2::basic_streambuf>::__pbump\5babi:v160004\5d\28long\29 2159:std::__2::basic_iostream>::~basic_iostream\28\29.1 2160:std::__2::allocator_traits>::deallocate\5babi:v160004\5d\28std::__2::allocator&\2c\20wchar_t*\2c\20unsigned\20long\29 2161:std::__2::allocator_traits>::deallocate\5babi:v160004\5d\28std::__2::allocator&\2c\20char*\2c\20unsigned\20long\29 2162:std::__2::__num_put_base::__format_int\28char*\2c\20char\20const*\2c\20bool\2c\20unsigned\20int\29 2163:std::__2::__num_put_base::__format_float\28char*\2c\20char\20const*\2c\20unsigned\20int\29 2164:std::__2::__itoa::__append8\5babi:v160004\5d\28char*\2c\20unsigned\20int\29 2165:sktext::gpu::VertexFiller::deviceRectAndCheckTransform\28SkMatrix\20const&\29\20const 2166:sktext::gpu::TextBlob::Key::operator==\28sktext::gpu::TextBlob::Key\20const&\29\20const 2167:sktext::gpu::GlyphVector::packedGlyphIDToGlyph\28sktext::gpu::StrikeCache*\29 2168:sktext::SkStrikePromise::strike\28\29 2169:skif::RoundIn\28SkRect\29 2170:skif::LayerSpace::inverseMapRect\28skif::LayerSpace\20const&\2c\20skif::LayerSpace*\29\20const 2171:skif::FilterResult::applyTransform\28skif::Context\20const&\2c\20skif::LayerSpace\20const&\2c\20SkSamplingOptions\20const&\29\20const 2172:skia_private::THashTable>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::resize\28int\29 2173:skia_private::THashTable\2c\20SkGoodHash>::Pair\2c\20int\2c\20skia_private::THashMap\2c\20SkGoodHash>::Pair>::Slot::emplace\28skia_private::THashMap\2c\20SkGoodHash>::Pair&&\2c\20unsigned\20int\29 2174:skia_private::THashTable\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair\2c\20SkSL::Type\20const*\2c\20skia_private::THashMap\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair>::resize\28int\29 2175:skia_private::THashTable::Pair\2c\20SkSL::SymbolTable::SymbolKey\2c\20skia_private::THashMap::Pair>::uncheckedSet\28skia_private::THashMap::Pair&&\29 2176:skia_private::THashTable::Pair\2c\20SkSL::SymbolTable::SymbolKey\2c\20skia_private::THashMap::Pair>::resize\28int\29 2177:skia_private::THashTable::Traits>::resize\28int\29 2178:skia_private::TArray::move\28void*\29 2179:skia_private::TArray::push_back\28SkRasterPipeline_MemoryCtxInfo&&\29 2180:skia_private::TArray\2c\20true>::push_back\28SkRGBA4f<\28SkAlphaType\293>&&\29 2181:skia_png_set_text_2 2182:skia_png_set_palette_to_rgb 2183:skia_png_handle_IHDR 2184:skia_png_handle_IEND 2185:skia_png_destroy_write_struct 2186:skia::textlayout::operator==\28skia::textlayout::FontArguments\20const&\2c\20skia::textlayout::FontArguments\20const&\29 2187:skia::textlayout::TextWrapper::TextStretch::extend\28skia::textlayout::Cluster*\29 2188:skia::textlayout::FontCollection::getFontManagerOrder\28\29\20const 2189:skia::textlayout::FontArguments::FontArguments\28skia::textlayout::FontArguments\20const&\29 2190:skia::textlayout::Decorations::calculateGaps\28skia::textlayout::TextLine::ClipContext\20const&\2c\20SkRect\20const&\2c\20float\2c\20float\29 2191:skia::textlayout::Block&\20skia_private::TArray::emplace_back\28unsigned\20long&&\2c\20unsigned\20long&&\2c\20skia::textlayout::TextStyle\20const&\29 2192:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::fixedFunctionFlags\28\29\20const 2193:skgpu::ganesh::SurfaceFillContext::fillRectWithFP\28SkIRect\20const&\2c\20SkMatrix\20const&\2c\20std::__2::unique_ptr>\29 2194:skgpu::ganesh::SurfaceFillContext::SurfaceFillContext\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20GrSurfaceProxyView\2c\20GrColorInfo\20const&\29 2195:skgpu::ganesh::SurfaceDrawContext::drawShape\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20GrStyledShape&&\29 2196:skgpu::ganesh::SurfaceDrawContext::drawPaint\28GrClip\20const*\2c\20GrPaint&&\2c\20SkMatrix\20const&\29 2197:skgpu::ganesh::SurfaceDrawContext::MakeWithFallback\28GrRecordingContext*\2c\20GrColorType\2c\20sk_sp\2c\20SkBackingFit\2c\20SkISize\2c\20SkSurfaceProps\20const&\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrSurfaceOrigin\2c\20skgpu::Budgeted\29 2198:skgpu::ganesh::SurfaceContext::rescaleInto\28skgpu::ganesh::SurfaceFillContext*\2c\20SkIRect\2c\20SkIRect\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\29 2199:skgpu::ganesh::SurfaceContext::PixelTransferResult::operator=\28skgpu::ganesh::SurfaceContext::PixelTransferResult&&\29 2200:skgpu::ganesh::SmallPathAtlasMgr::addToAtlas\28GrResourceProvider*\2c\20GrDeferredUploadTarget*\2c\20int\2c\20int\2c\20void\20const*\2c\20skgpu::AtlasLocator*\29 2201:skgpu::ganesh::OpsTask::~OpsTask\28\29 2202:skgpu::ganesh::OpsTask::setColorLoadOp\28GrLoadOp\2c\20std::__2::array\29 2203:skgpu::ganesh::OpsTask::deleteOps\28\29 2204:skgpu::ganesh::FillRectOp::Make\28GrRecordingContext*\2c\20GrPaint&&\2c\20GrAAType\2c\20DrawQuad*\2c\20GrUserStencilSettings\20const*\2c\20GrSimpleMeshDrawOpHelper::InputFlags\29 2205:skgpu::ganesh::Device::drawEdgeAAImageSet\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29::$_0::operator\28\29\28int\29\20const 2206:skgpu::ganesh::ClipStack::~ClipStack\28\29 2207:skgpu::TClientMappedBufferManager::~TClientMappedBufferManager\28\29 2208:skgpu::Swizzle::apply\28SkRasterPipeline*\29\20const 2209:skgpu::Plot::addSubImage\28int\2c\20int\2c\20void\20const*\2c\20skgpu::AtlasLocator*\29 2210:skgpu::GetLCDBlendFormula\28SkBlendMode\29 2211:skcms_TransferFunction_isHLGish 2212:sk_srgb_linear_singleton\28\29 2213:shr 2214:shl 2215:setRegionCheck\28SkRegion*\2c\20SkRegion\20const&\29 2216:res_getTableItemByIndex_73 2217:res_getArrayItem_73 2218:res_findResource_73 2219:read_header\28SkStream*\2c\20SkPngChunkReader*\2c\20SkCodec**\2c\20png_struct_def**\2c\20png_info_def**\29 2220:ps_dimension_set_mask_bits 2221:operator==\28SkPath\20const&\2c\20SkPath\20const&\29 2222:mbrtowc 2223:jround_up 2224:jpeg_make_d_derived_tbl 2225:init\28\29 2226:ilogbf 2227:icu_73::locale_set_default_internal\28char\20const*\2c\20UErrorCode&\29 2228:icu_73::compute\28int\2c\20icu_73::ReadArray2D\20const&\2c\20icu_73::ReadArray2D\20const&\2c\20icu_73::ReadArray1D\20const&\2c\20icu_73::ReadArray1D\20const&\2c\20icu_73::Array1D&\2c\20icu_73::Array1D&\2c\20icu_73::Array1D&\29 2229:icu_73::UnicodeString::getChar32Start\28int\29\20const 2230:icu_73::UnicodeString::extract\28int\2c\20int\2c\20char*\2c\20int\2c\20icu_73::UnicodeString::EInvariant\29\20const 2231:icu_73::UnicodeString::doReplace\28int\2c\20int\2c\20icu_73::UnicodeString\20const&\2c\20int\2c\20int\29 2232:icu_73::UnicodeString::copyFrom\28icu_73::UnicodeString\20const&\2c\20signed\20char\29 2233:icu_73::UnicodeString::UnicodeString\28signed\20char\2c\20icu_73::ConstChar16Ptr\2c\20int\29 2234:icu_73::UnicodeSet::setToBogus\28\29 2235:icu_73::UnicodeSet::freeze\28\29 2236:icu_73::UnicodeSet::copyFrom\28icu_73::UnicodeSet\20const&\2c\20signed\20char\29 2237:icu_73::UnicodeSet::add\28int\20const*\2c\20int\2c\20signed\20char\29 2238:icu_73::UnicodeSet::_toPattern\28icu_73::UnicodeString&\2c\20signed\20char\29\20const 2239:icu_73::UnicodeSet::UnicodeSet\28icu_73::UnicodeString\20const&\2c\20UErrorCode&\29 2240:icu_73::UVector::removeElementAt\28int\29 2241:icu_73::UDataPathIterator::next\28UErrorCode*\29 2242:icu_73::StringTrieBuilder::writeNode\28int\2c\20int\2c\20int\29 2243:icu_73::StringEnumeration::StringEnumeration\28\29 2244:icu_73::SimpleFilteredSentenceBreakIterator::breakExceptionAt\28int\29 2245:icu_73::RuleBasedBreakIterator::DictionaryCache::reset\28\29 2246:icu_73::RuleBasedBreakIterator::BreakCache::reset\28int\2c\20int\29 2247:icu_73::RuleBasedBreakIterator::BreakCache::populateNear\28int\2c\20UErrorCode&\29 2248:icu_73::RuleBasedBreakIterator::BreakCache::populateFollowing\28\29 2249:icu_73::ResourceDataValue::~ResourceDataValue\28\29 2250:icu_73::ReorderingBuffer::init\28int\2c\20UErrorCode&\29 2251:icu_73::Normalizer2Impl::makeFCD\28char16_t\20const*\2c\20char16_t\20const*\2c\20icu_73::ReorderingBuffer*\2c\20UErrorCode&\29\20const 2252:icu_73::Normalizer2Impl::hasCompBoundaryBefore\28unsigned\20char\20const*\2c\20unsigned\20char\20const*\29\20const 2253:icu_73::Normalizer2Impl::decomposeShort\28unsigned\20char\20const*\2c\20unsigned\20char\20const*\2c\20icu_73::Normalizer2Impl::StopAt\2c\20signed\20char\2c\20icu_73::ReorderingBuffer&\2c\20UErrorCode&\29\20const 2254:icu_73::Normalizer2Impl::addPropertyStarts\28USetAdder\20const*\2c\20UErrorCode&\29\20const 2255:icu_73::ICU_Utility::skipWhitespace\28icu_73::UnicodeString\20const&\2c\20int&\2c\20signed\20char\29 2256:hb_ucd_get_unicode_funcs 2257:hb_syllabic_insert_dotted_circles\28hb_font_t*\2c\20hb_buffer_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20int\2c\20int\29 2258:hb_shape_full 2259:hb_serialize_context_t::~hb_serialize_context_t\28\29 2260:hb_serialize_context_t::resolve_links\28\29 2261:hb_serialize_context_t::reset\28\29 2262:hb_lazy_loader_t\2c\20hb_face_t\2c\2016u\2c\20OT::cff1_accelerator_t>::get\28\29\20const 2263:hb_lazy_loader_t\2c\20hb_face_t\2c\2034u\2c\20hb_blob_t>::get\28\29\20const 2264:hb_language_from_string 2265:hb_font_t::mults_changed\28\29 2266:hb_font_destroy 2267:hb_buffer_t::next_glyph\28\29 2268:get_sof 2269:ftell 2270:ft_var_readpackedpoints 2271:ft_mem_strdup 2272:float\20emscripten::internal::MemberAccess::getWire\28float\20StrokeOpts::*\20const&\2c\20StrokeOpts\20const&\29 2273:findLikelySubtags\28char\20const*\2c\20char*\2c\20int\2c\20UErrorCode*\29 2274:fill_window 2275:exp 2276:encodeImage\28GrDirectContext*\2c\20sk_sp\2c\20SkEncodedImageFormat\2c\20int\29 2277:emscripten::val\20MakeTypedArray\28int\2c\20float\20const*\29 2278:emscripten::internal::MethodInvoker::invoke\28float\20\28SkContourMeasure::*\20const&\29\28\29\20const\2c\20SkContourMeasure\20const*\29 2279:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20unsigned\20long>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20unsigned\20long\29\2c\20unsigned\20long\2c\20unsigned\20long\29 2280:emscripten::internal::FunctionInvoker::invoke\28bool\20\28**\29\28SkPath\20const&\2c\20SkPath\20const&\29\2c\20SkPath*\2c\20SkPath*\29 2281:dquad_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 2282:do_clip_op\28SkReadBuffer*\2c\20SkCanvas*\2c\20SkRegion::Op\2c\20SkClipOp*\29 2283:do_anti_hairline\28int\2c\20int\2c\20int\2c\20int\2c\20SkIRect\20const*\2c\20SkBlitter*\29 2284:doWriteReverse\28char16_t\20const*\2c\20int\2c\20char16_t*\2c\20int\2c\20unsigned\20short\2c\20UErrorCode*\29 2285:doWriteForward\28char16_t\20const*\2c\20int\2c\20char16_t*\2c\20int\2c\20unsigned\20short\2c\20UErrorCode*\29 2286:dline_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 2287:dispose_chunk 2288:direct_blur_y\28void\20\28*\29\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29\2c\20int\2c\20int\2c\20unsigned\20short*\2c\20unsigned\20char\20const*\2c\20unsigned\20long\2c\20int\2c\20int\2c\20unsigned\20char*\2c\20unsigned\20long\29 2289:decltype\28fp\28\28SkRecords::NoOp\29\28\29\29\29\20SkRecord::Record::visit\28SkRecords::Draw&\29\20const 2290:dcubic_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 2291:dconic_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 2292:crop_rect_edge\28SkRect\20const&\2c\20int\2c\20int\2c\20int\2c\20int\2c\20float*\2c\20float*\2c\20float*\2c\20float*\2c\20float*\29 2293:createTagStringWithAlternates\28char\20const*\2c\20int\2c\20char\20const*\2c\20int\2c\20char\20const*\2c\20int\2c\20char\20const*\2c\20int\2c\20char\20const*\2c\20icu_73::ByteSink&\2c\20UErrorCode*\29 2294:createPath\28char\20const*\2c\20int\2c\20char\20const*\2c\20int\2c\20char\20const*\2c\20icu_73::CharString&\2c\20UErrorCode*\29 2295:char*\20std::__2::__rewrap_iter\5babi:v160004\5d>\28char*\2c\20char*\29 2296:cff_slot_load 2297:cff_parse_real 2298:cff_index_get_sid_string 2299:cff_index_access_element 2300:cf2_doStems 2301:cf2_doFlex 2302:byn$mgfn-shared$tt_cmap8_get_info 2303:byn$mgfn-shared$tt_cmap0_get_info 2304:byn$mgfn-shared$skia_png_set_strip_16 2305:byn$mgfn-shared$isBidiControl\28BinaryProperty\20const&\2c\20int\2c\20UProperty\29 2306:byn$mgfn-shared$SkSL::Tracer::line\28int\29 2307:byn$mgfn-shared$AlmostBequalUlps\28float\2c\20float\29 2308:buffer_verify_error\28hb_buffer_t*\2c\20hb_font_t*\2c\20char\20const*\2c\20...\29 2309:blur_y_rect\28void\20\28*\29\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29\2c\20int\2c\20skvx::Vec<8\2c\20unsigned\20short>\20\28*\29\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29\2c\20int\2c\20unsigned\20short*\2c\20unsigned\20char\20const*\2c\20unsigned\20long\2c\20int\2c\20int\2c\20unsigned\20char*\2c\20unsigned\20long\29 2310:blur_column\28void\20\28*\29\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29\2c\20skvx::Vec<8\2c\20unsigned\20short>\20\28*\29\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29\2c\20int\2c\20int\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20unsigned\20char\20const*\2c\20unsigned\20long\2c\20int\2c\20unsigned\20char*\2c\20unsigned\20long\29::$_0::operator\28\29\28unsigned\20char*\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\29\20const 2311:af_sort_and_quantize_widths 2312:af_glyph_hints_align_weak_points 2313:af_glyph_hints_align_strong_points 2314:af_face_globals_new 2315:af_cjk_compute_stem_width 2316:add_huff_table 2317:addPoint\28UBiDi*\2c\20int\2c\20int\29 2318:_addExtensionToList\28ExtensionListEntry**\2c\20ExtensionListEntry*\2c\20signed\20char\29 2319:__uselocale 2320:__math_xflow 2321:__cxxabiv1::__base_class_type_info::search_below_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 2322:\28anonymous\20namespace\29::make_vertices_spec\28bool\2c\20bool\29 2323:\28anonymous\20namespace\29::gather_lines_and_quads\28SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20float\2c\20bool\2c\20skia_private::TArray*\2c\20skia_private::TArray*\2c\20skia_private::TArray*\2c\20skia_private::TArray*\2c\20skia_private::TArray*\29::$_1::operator\28\29\28SkPoint\20const*\2c\20SkPoint\20const*\2c\20bool\29\20const 2324:\28anonymous\20namespace\29::draw_stencil_rect\28skgpu::ganesh::SurfaceDrawContext*\2c\20GrHardClip\20const&\2c\20GrUserStencilSettings\20const*\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20GrAA\29 2325:\28anonymous\20namespace\29::TentPass::blurSegment\28int\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int*\2c\20int\29::'lambda'\28skvx::Vec<4\2c\20unsigned\20int>\20const&\29::operator\28\29\28skvx::Vec<4\2c\20unsigned\20int>\20const&\29\20const 2326:\28anonymous\20namespace\29::GaussPass::blurSegment\28int\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int*\2c\20int\29::'lambda'\28skvx::Vec<4\2c\20unsigned\20int>\20const&\29::operator\28\29\28skvx::Vec<4\2c\20unsigned\20int>\20const&\29\20const 2327:\28anonymous\20namespace\29::CacheImpl::removeInternal\28\28anonymous\20namespace\29::CacheImpl::Value*\29 2328:WebPRescalerExport 2329:WebPInitAlphaProcessing 2330:WebPFreeDecBuffer 2331:WebPDemuxDelete 2332:VP8SetError 2333:VP8LInverseTransform 2334:VP8LDelete 2335:VP8LColorCacheClear 2336:UDataMemory_init_73 2337:TT_Load_Context 2338:StringBuffer\20apply_format_string<1024>\28char\20const*\2c\20void*\2c\20char\20\28&\29\20\5b1024\5d\2c\20SkString*\29 2339:SkYUVAPixmaps::operator=\28SkYUVAPixmaps\20const&\29 2340:SkYUVAPixmapInfo::SupportedDataTypes::enableDataType\28SkYUVAPixmapInfo::DataType\2c\20int\29 2341:SkWriter32::writeMatrix\28SkMatrix\20const&\29 2342:SkWriter32::snapshotAsData\28\29\20const 2343:SkVertices::uniqueID\28\29\20const 2344:SkVertices::approximateSize\28\29\20const 2345:SkUnicode::convertUtf8ToUtf16\28char\20const*\2c\20int\29 2346:SkUTF::UTF16ToUTF8\28char*\2c\20int\2c\20unsigned\20short\20const*\2c\20unsigned\20long\29 2347:SkTypefaceCache::NewTypefaceID\28\29 2348:SkTextBlobRunIterator::next\28\29 2349:SkTextBlobRunIterator::SkTextBlobRunIterator\28SkTextBlob\20const*\29 2350:SkTextBlobBuilder::SkTextBlobBuilder\28\29 2351:SkTextBlobBuilder::ConservativeRunBounds\28SkTextBlob::RunRecord\20const&\29 2352:SkTSpan::closestBoundedT\28SkDPoint\20const&\29\20const 2353:SkTSect::updateBounded\28SkTSpan*\2c\20SkTSpan*\2c\20SkTSpan*\29 2354:SkTSect::trim\28SkTSpan*\2c\20SkTSect*\29 2355:SkTDStorage::erase\28int\2c\20int\29 2356:SkTDPQueue::percolateUpIfNecessary\28int\29 2357:SkSurfaces::Raster\28SkImageInfo\20const&\2c\20unsigned\20long\2c\20SkSurfaceProps\20const*\29 2358:SkSurfaceProps::SkSurfaceProps\28unsigned\20int\2c\20SkPixelGeometry\2c\20float\2c\20float\29 2359:SkStrokerPriv::JoinFactory\28SkPaint::Join\29 2360:SkStrokeRec::setStrokeStyle\28float\2c\20bool\29 2361:SkStrokeRec::setFillStyle\28\29 2362:SkStrokeRec::applyToPath\28SkPath*\2c\20SkPath\20const&\29\20const 2363:SkString::set\28char\20const*\29 2364:SkStrikeSpec::findOrCreateStrike\28\29\20const 2365:SkStrikeSpec::MakeWithNoDevice\28SkFont\20const&\2c\20SkPaint\20const*\29 2366:SkStrike::unlock\28\29 2367:SkStrike::lock\28\29 2368:SkSharedMutex::SkSharedMutex\28\29 2369:SkShadowTessellator::MakeSpot\28SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkPoint3\20const&\2c\20SkPoint3\20const&\2c\20float\2c\20bool\2c\20bool\29 2370:SkShaders::Empty\28\29 2371:SkShaders::Color\28unsigned\20int\29 2372:SkShaderBase::appendRootStages\28SkStageRec\20const&\2c\20SkMatrix\20const&\29\20const 2373:SkScalerContext::~SkScalerContext\28\29.1 2374:SkSL::write_stringstream\28SkSL::StringStream\20const&\2c\20SkSL::OutputStream&\29 2375:SkSL::evaluate_3_way_intrinsic\28SkSL::Context\20const&\2c\20std::__2::array\20const&\2c\20SkSL::Type\20const&\2c\20double\20\28*\29\28double\2c\20double\2c\20double\29\29 2376:SkSL::VarDeclaration::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Modifiers\20const&\2c\20SkSL::Type\20const&\2c\20SkSL::Position\2c\20std::__2::basic_string_view>\2c\20SkSL::VariableStorage\2c\20std::__2::unique_ptr>\29 2377:SkSL::Type::priority\28\29\20const 2378:SkSL::Type::checkIfUsableInArray\28SkSL::Context\20const&\2c\20SkSL::Position\29\20const 2379:SkSL::SymbolTable::takeOwnershipOfString\28std::__2::basic_string\2c\20std::__2::allocator>\29 2380:SkSL::SymbolTable::isBuiltinType\28std::__2::basic_string_view>\29\20const 2381:SkSL::StructType::slotCount\28\29\20const 2382:SkSL::RP::SlotManager::mapVariableToSlots\28SkSL::Variable\20const&\2c\20SkSL::RP::SlotRange\29 2383:SkSL::RP::Program::appendStages\28SkRasterPipeline*\2c\20SkArenaAlloc*\2c\20SkSL::RP::Callbacks*\2c\20SkSpan\29\20const 2384:SkSL::RP::Generator::pushVectorizedExpression\28SkSL::Expression\20const&\2c\20SkSL::Type\20const&\29 2385:SkSL::RP::Builder::ternary_op\28SkSL::RP::BuilderOp\2c\20int\29 2386:SkSL::RP::Builder::simplifyPopSlotsUnmasked\28SkSL::RP::SlotRange*\29 2387:SkSL::RP::Builder::pop_slots_unmasked\28SkSL::RP::SlotRange\29 2388:SkSL::RP::Builder::pad_stack\28int\29 2389:SkSL::RP::Builder::exchange_src\28\29 2390:SkSL::ProgramUsage::remove\28SkSL::ProgramElement\20const&\29 2391:SkSL::ProgramUsage::isDead\28SkSL::Variable\20const&\29\20const 2392:SkSL::Pool::~Pool\28\29 2393:SkSL::PipelineStage::PipelineStageCodeGenerator::typeName\28SkSL::Type\20const&\29 2394:SkSL::LiteralType::priority\28\29\20const 2395:SkSL::IndexExpression::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 2396:SkSL::GLSLCodeGenerator::writeAnyConstructor\28SkSL::AnyConstructor\20const&\2c\20SkSL::OperatorPrecedence\29 2397:SkSL::ExpressionArray::clone\28\29\20const 2398:SkSL::Compiler::errorText\28bool\29 2399:SkSL::Block::Make\28SkSL::Position\2c\20skia_private::STArray<2\2c\20std::__2::unique_ptr>\2c\20true>\2c\20SkSL::Block::Kind\2c\20std::__2::unique_ptr>\29 2400:SkSL::Block::MakeBlock\28SkSL::Position\2c\20skia_private::STArray<2\2c\20std::__2::unique_ptr>\2c\20true>\2c\20SkSL::Block::Kind\2c\20std::__2::unique_ptr>\29 2401:SkSL::Analysis::DetectVarDeclarationWithoutScope\28SkSL::Statement\20const&\2c\20SkSL::ErrorReporter*\29 2402:SkRuntimeShaderBuilder::~SkRuntimeShaderBuilder\28\29 2403:SkRuntimeShaderBuilder::makeShader\28SkMatrix\20const*\29\20const 2404:SkRuntimeShaderBuilder::SkRuntimeShaderBuilder\28sk_sp\29 2405:SkRuntimeEffectPriv::TransformUniforms\28SkSpan\2c\20sk_sp\2c\20SkColorSpace\20const*\29 2406:SkRuntimeEffect::getRPProgram\28SkSL::DebugTracePriv*\29\20const 2407:SkRegion::getBoundaryPath\28SkPath*\29\20const 2408:SkRegion::Spanerator::next\28int*\2c\20int*\29 2409:SkRegion::SkRegion\28SkRegion\20const&\29 2410:SkReduceOrder::Quad\28SkPoint\20const*\2c\20SkPoint*\29 2411:SkReadBuffer::skipByteArray\28unsigned\20long*\29 2412:SkReadBuffer::readSampling\28\29 2413:SkReadBuffer::readRRect\28SkRRect*\29 2414:SkReadBuffer::checkInt\28int\2c\20int\29 2415:SkRasterPipeline::appendMatrix\28SkArenaAlloc*\2c\20SkMatrix\20const&\29 2416:SkQuads::RootsReal\28double\2c\20double\2c\20double\2c\20double*\29 2417:SkQuadraticEdge::updateQuadratic\28\29 2418:SkPngCodec::~SkPngCodec\28\29.1 2419:SkPngCodec::processData\28\29 2420:SkPixmap::readPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20int\2c\20int\29\20const 2421:SkPictureRecord::~SkPictureRecord\28\29 2422:SkPicture::~SkPicture\28\29.1 2423:SkPathStroker::quadStroke\28SkPoint\20const*\2c\20SkQuadConstruct*\29 2424:SkPathStroker::preJoinTo\28SkPoint\20const&\2c\20SkPoint*\2c\20SkPoint*\2c\20bool\29 2425:SkPathStroker::intersectRay\28SkQuadConstruct*\2c\20SkPathStroker::IntersectRayType\29\20const 2426:SkPathStroker::cubicStroke\28SkPoint\20const*\2c\20SkQuadConstruct*\29 2427:SkPathStroker::conicStroke\28SkConic\20const&\2c\20SkQuadConstruct*\29 2428:SkPathMeasure::isClosed\28\29 2429:SkPathEffectBase::getFlattenableType\28\29\20const 2430:SkPathBuilder::moveTo\28SkPoint\29 2431:SkPathBuilder::incReserve\28int\2c\20int\29 2432:SkPathBuilder::addRect\28SkRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\29 2433:SkPath::isLastContourClosed\28\29\20const 2434:SkPath::addRRect\28SkRRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\29 2435:SkPaintToGrPaintReplaceShader\28GrRecordingContext*\2c\20GrColorInfo\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\2c\20std::__2::unique_ptr>\2c\20SkSurfaceProps\20const&\2c\20GrPaint*\29 2436:SkPaint::setStrokeMiter\28float\29 2437:SkPaint::setStrokeJoin\28SkPaint::Join\29 2438:SkOpSpanBase::mergeMatches\28SkOpSpanBase*\29 2439:SkOpSpanBase::addOpp\28SkOpSpanBase*\29 2440:SkOpSegment::subDivide\28SkOpSpanBase\20const*\2c\20SkOpSpanBase\20const*\2c\20SkDCurve*\29\20const 2441:SkOpSegment::release\28SkOpSpan\20const*\29 2442:SkOpSegment::operand\28\29\20const 2443:SkOpSegment::moveNearby\28\29 2444:SkOpSegment::markDone\28SkOpSpan*\29 2445:SkOpSegment::markAndChaseDone\28SkOpSpanBase*\2c\20SkOpSpanBase*\2c\20SkOpSpanBase**\29 2446:SkOpSegment::isClose\28double\2c\20SkOpSegment\20const*\29\20const 2447:SkOpSegment::init\28SkPoint*\2c\20float\2c\20SkOpContour*\2c\20SkPath::Verb\29 2448:SkOpSegment::addT\28double\2c\20SkPoint\20const&\29 2449:SkOpCoincidence::fixUp\28SkOpPtT*\2c\20SkOpPtT\20const*\29 2450:SkOpCoincidence::add\28SkOpPtT*\2c\20SkOpPtT*\2c\20SkOpPtT*\2c\20SkOpPtT*\29 2451:SkOpCoincidence::addMissing\28bool*\29 2452:SkOpCoincidence::addIfMissing\28SkOpPtT\20const*\2c\20SkOpPtT\20const*\2c\20double\2c\20double\2c\20SkOpSegment*\2c\20SkOpSegment*\2c\20bool*\29 2453:SkOpCoincidence::addExpanded\28\29 2454:SkOpAngle::set\28SkOpSpanBase*\2c\20SkOpSpanBase*\29 2455:SkOpAngle::lineOnOneSide\28SkDPoint\20const&\2c\20SkDVector\20const&\2c\20SkOpAngle\20const*\2c\20bool\29\20const 2456:SkNoPixelsDevice::ClipState::op\28SkClipOp\2c\20SkM44\20const&\2c\20SkRect\20const&\2c\20bool\2c\20bool\29 2457:SkMatrix\20skif::Mapping::map\28SkMatrix\20const&\2c\20SkMatrix\20const&\29 2458:SkMatrixPriv::DifferentialAreaScale\28SkMatrix\20const&\2c\20SkPoint\20const&\29 2459:SkMatrix::writeToMemory\28void*\29\20const 2460:SkMatrix::preservesRightAngles\28float\29\20const 2461:SkM44::normalizePerspective\28\29 2462:SkLatticeIter::~SkLatticeIter\28\29 2463:SkLatticeIter::next\28SkIRect*\2c\20SkRect*\2c\20bool*\2c\20unsigned\20int*\29 2464:SkImages::RasterFromBitmap\28SkBitmap\20const&\29 2465:SkImage_Lazy::Validator::Validator\28sk_sp\2c\20SkColorType\20const*\2c\20sk_sp\29 2466:SkImageShader::MakeSubset\28sk_sp\2c\20SkRect\20const&\2c\20SkTileMode\2c\20SkTileMode\2c\20SkSamplingOptions\20const&\2c\20SkMatrix\20const*\2c\20bool\29 2467:SkImageFilters::Image\28sk_sp\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\29 2468:SkImageFilters::Blend\28SkBlendMode\2c\20sk_sp\2c\20sk_sp\2c\20SkImageFilters::CropRect\20const&\29 2469:SkImage::readPixels\28GrDirectContext*\2c\20SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20int\2c\20int\2c\20SkImage::CachingHint\29\20const 2470:SkHalfToFloat\28unsigned\20short\29 2471:SkGradientShader::MakeSweep\28float\2c\20float\2c\20SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20sk_sp\2c\20float\20const*\2c\20int\2c\20SkTileMode\2c\20float\2c\20float\2c\20SkGradientShader::Interpolation\20const&\2c\20SkMatrix\20const*\29 2472:SkGradientShader::MakeRadial\28SkPoint\20const&\2c\20float\2c\20SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20sk_sp\2c\20float\20const*\2c\20int\2c\20SkTileMode\2c\20SkGradientShader::Interpolation\20const&\2c\20SkMatrix\20const*\29 2473:SkGradientBaseShader::commonAsAGradient\28SkShaderBase::GradientInfo*\29\20const 2474:SkGradientBaseShader::ValidGradient\28SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20int\2c\20SkTileMode\2c\20SkGradientShader::Interpolation\20const&\29 2475:SkGradientBaseShader::SkGradientBaseShader\28SkGradientBaseShader::Descriptor\20const&\2c\20SkMatrix\20const&\29 2476:SkGradientBaseShader::MakeDegenerateGradient\28SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20float\20const*\2c\20int\2c\20sk_sp\2c\20SkTileMode\29 2477:SkGradientBaseShader::Descriptor::~Descriptor\28\29 2478:SkGradientBaseShader::Descriptor::Descriptor\28SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20sk_sp\2c\20float\20const*\2c\20int\2c\20SkTileMode\2c\20SkGradientShader::Interpolation\20const&\29 2479:SkGlyph::setPath\28SkArenaAlloc*\2c\20SkPath\20const*\2c\20bool\29 2480:SkFontMgr::matchFamilyStyleCharacter\28char\20const*\2c\20SkFontStyle\20const&\2c\20char\20const**\2c\20int\2c\20int\29\20const 2481:SkFont::setSize\28float\29 2482:SkEvalQuadAt\28SkPoint\20const*\2c\20float\2c\20SkPoint*\2c\20SkPoint*\29 2483:SkEncodedInfo::~SkEncodedInfo\28\29 2484:SkEmptyFontMgr::onMakeFromStreamIndex\28std::__2::unique_ptr>\2c\20int\29\20const 2485:SkDrawableList::~SkDrawableList\28\29 2486:SkDrawable::draw\28SkCanvas*\2c\20SkMatrix\20const*\29 2487:SkDevice::setDeviceCoordinateSystem\28SkM44\20const&\2c\20SkM44\20const&\2c\20SkM44\20const&\2c\20int\2c\20int\29 2488:SkData::PrivateNewWithCopy\28void\20const*\2c\20unsigned\20long\29::$_0::operator\28\29\28\29\20const 2489:SkDashPathEffect::Make\28float\20const*\2c\20int\2c\20float\29 2490:SkDQuad::monotonicInX\28\29\20const 2491:SkDCubic::dxdyAtT\28double\29\20const 2492:SkDCubic::RootsValidT\28double\2c\20double\2c\20double\2c\20double\2c\20double*\29 2493:SkCubicEdge::updateCubic\28\29 2494:SkConicalGradient::~SkConicalGradient\28\29 2495:SkColorSpace::serialize\28\29\20const 2496:SkColorSpace::MakeSRGBLinear\28\29 2497:SkColorFilterPriv::MakeGaussian\28\29 2498:SkColorConverter::SkColorConverter\28unsigned\20int\20const*\2c\20int\29 2499:SkCodec::startScanlineDecode\28SkImageInfo\20const&\2c\20SkCodec::Options\20const*\29 2500:SkCodec::handleFrameIndex\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20std::__2::function\29 2501:SkCodec::getScanlines\28void*\2c\20int\2c\20unsigned\20long\29 2502:SkChopQuadAtYExtrema\28SkPoint\20const*\2c\20SkPoint*\29 2503:SkChopCubicAt\28SkPoint\20const*\2c\20SkPoint*\2c\20float\20const*\2c\20int\29 2504:SkChopCubicAtYExtrema\28SkPoint\20const*\2c\20SkPoint*\29 2505:SkCharToGlyphCache::SkCharToGlyphCache\28\29 2506:SkCanvas::peekPixels\28SkPixmap*\29 2507:SkCanvas::getTotalMatrix\28\29\20const 2508:SkCanvas::getLocalToDevice\28\29\20const 2509:SkCanvas::getLocalClipBounds\28\29\20const 2510:SkCanvas::drawImageLattice\28SkImage\20const*\2c\20SkCanvas::Lattice\20const&\2c\20SkRect\20const&\2c\20SkFilterMode\2c\20SkPaint\20const*\29 2511:SkCanvas::drawAtlas\28SkImage\20const*\2c\20SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20SkBlendMode\2c\20SkSamplingOptions\20const&\2c\20SkRect\20const*\2c\20SkPaint\20const*\29 2512:SkCanvas::concat\28SkM44\20const&\29 2513:SkCanvas::SkCanvas\28SkBitmap\20const&\29 2514:SkCanvas::ImageSetEntry::ImageSetEntry\28SkCanvas::ImageSetEntry\20const&\29 2515:SkBmpCodec::ReadHeader\28SkStream*\2c\20bool\2c\20std::__2::unique_ptr>*\29 2516:SkBlitter::blitRectRegion\28SkIRect\20const&\2c\20SkRegion\20const&\29 2517:SkBlendMode_ShouldPreScaleCoverage\28SkBlendMode\2c\20bool\29 2518:SkBlendMode_AppendStages\28SkBlendMode\2c\20SkRasterPipeline*\29 2519:SkBitmap::tryAllocPixels\28SkBitmap::Allocator*\29 2520:SkBitmap::readPixels\28SkPixmap\20const&\2c\20int\2c\20int\29\20const 2521:SkBitmap::readPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20int\2c\20int\29\20const 2522:SkBitmap::installPixels\28SkPixmap\20const&\29 2523:SkBitmap::allocPixels\28SkImageInfo\20const&\29 2524:SkBitmap::SkBitmap\28SkBitmap&&\29 2525:SkBaseShadowTessellator::handleQuad\28SkPoint\20const*\29 2526:SkAutoDescriptor::~SkAutoDescriptor\28\29 2527:SkAnimatedImage::getFrameCount\28\29\20const 2528:SkAAClip::~SkAAClip\28\29 2529:SkAAClip::setPath\28SkPath\20const&\2c\20SkIRect\20const&\2c\20bool\29 2530:SkAAClip::op\28SkAAClip\20const&\2c\20SkClipOp\29 2531:OT::hb_ot_layout_lookup_accelerator_t*\20OT::hb_ot_layout_lookup_accelerator_t::create\28OT::Layout::GSUB_impl::SubstLookup\20const&\29 2532:OT::hb_ot_apply_context_t::replace_glyph\28unsigned\20int\29 2533:OT::apply_lookup\28OT::hb_ot_apply_context_t*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int\2c\20OT::LookupRecord\20const*\2c\20unsigned\20int\29 2534:OT::Layout::GPOS_impl::ValueFormat::get_device\28OT::IntType\20const*\2c\20bool*\2c\20void\20const*\2c\20hb_sanitize_context_t&\29 2535:OT::Layout::GPOS_impl::AnchorFormat3::get_anchor\28OT::hb_ot_apply_context_t*\2c\20unsigned\20int\2c\20float*\2c\20float*\29\20const 2536:OT::Layout::GPOS_impl::AnchorFormat2::get_anchor\28OT::hb_ot_apply_context_t*\2c\20unsigned\20int\2c\20float*\2c\20float*\29\20const 2537:OT::ClassDef::get_class\28unsigned\20int\29\20const 2538:JpegDecoderMgr::~JpegDecoderMgr\28\29 2539:GrTriangulator::simplify\28GrTriangulator::VertexList*\2c\20GrTriangulator::Comparator\20const&\29 2540:GrTriangulator::setTop\28GrTriangulator::Edge*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Comparator\20const&\29\20const 2541:GrTriangulator::mergeCoincidentVertices\28GrTriangulator::VertexList*\2c\20GrTriangulator::Comparator\20const&\29\20const 2542:GrTriangulator::Vertex*\20SkArenaAlloc::make\28SkPoint&\2c\20int&&\29 2543:GrThreadSafeCache::remove\28skgpu::UniqueKey\20const&\29 2544:GrThreadSafeCache::internalFind\28skgpu::UniqueKey\20const&\29 2545:GrThreadSafeCache::internalAdd\28skgpu::UniqueKey\20const&\2c\20GrSurfaceProxyView\20const&\29 2546:GrTextureEffect::Sampling::Sampling\28GrSurfaceProxy\20const&\2c\20GrSamplerState\2c\20SkRect\20const&\2c\20SkRect\20const*\2c\20float\20const*\2c\20bool\2c\20GrCaps\20const&\2c\20SkPoint\29 2547:GrTexture::markMipmapsClean\28\29 2548:GrTessellationShader::MakePipeline\28GrTessellationShader::ProgramArgs\20const&\2c\20GrAAType\2c\20GrAppliedClip&&\2c\20GrProcessorSet&&\29 2549:GrSurfaceProxyView::concatSwizzle\28skgpu::Swizzle\29 2550:GrSurfaceProxy::LazyCallbackResult::LazyCallbackResult\28sk_sp\29 2551:GrSurfaceProxy::Copy\28GrRecordingContext*\2c\20sk_sp\2c\20GrSurfaceOrigin\2c\20skgpu::Mipmapped\2c\20SkIRect\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20std::__2::basic_string_view>\2c\20GrSurfaceProxy::RectsMustMatch\2c\20sk_sp*\29 2552:GrStyledShape::GrStyledShape\28SkPath\20const&\2c\20GrStyle\20const&\2c\20GrStyledShape::DoSimplify\29 2553:GrStyledShape::GrStyledShape\28GrStyledShape\20const&\2c\20GrStyle::Apply\2c\20float\29 2554:GrSimpleMeshDrawOpHelper::CreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrPipeline\20const*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrGeometryProcessor*\2c\20GrPrimitiveType\2c\20GrXferBarrierFlags\2c\20GrLoadOp\2c\20GrUserStencilSettings\20const*\29 2555:GrShape::simplifyLine\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20unsigned\20int\29 2556:GrShape::reset\28\29 2557:GrShape::conservativeContains\28SkPoint\20const&\29\20const 2558:GrSWMaskHelper::init\28SkIRect\20const&\29 2559:GrResourceProvider::createNonAAQuadIndexBuffer\28\29 2560:GrResourceProvider::createBuffer\28unsigned\20long\2c\20GrGpuBufferType\2c\20GrAccessPattern\2c\20GrResourceProvider::ZeroInit\29 2561:GrResourceCache::refAndMakeResourceMRU\28GrGpuResource*\29 2562:GrResourceCache::findAndRefUniqueResource\28skgpu::UniqueKey\20const&\29 2563:GrRenderTask::addTarget\28GrDrawingManager*\2c\20sk_sp\29 2564:GrRenderTarget::~GrRenderTarget\28\29.1 2565:GrQuadUtils::WillUseHairline\28GrQuad\20const&\2c\20GrAAType\2c\20GrQuadAAFlags\29 2566:GrQuadUtils::CropToRect\28SkRect\20const&\2c\20GrAA\2c\20DrawQuad*\2c\20bool\29 2567:GrProxyProvider::processInvalidUniqueKey\28skgpu::UniqueKey\20const&\2c\20GrTextureProxy*\2c\20GrProxyProvider::InvalidateGPUResource\29 2568:GrPorterDuffXPFactory::Get\28SkBlendMode\29 2569:GrPixmap::operator=\28GrPixmap&&\29 2570:GrPathUtils::scaleToleranceToSrc\28float\2c\20SkMatrix\20const&\2c\20SkRect\20const&\29 2571:GrPathUtils::quadraticPointCount\28SkPoint\20const*\2c\20float\29 2572:GrPathUtils::cubicPointCount\28SkPoint\20const*\2c\20float\29 2573:GrPaint::setPorterDuffXPFactory\28SkBlendMode\29 2574:GrPaint::GrPaint\28GrPaint\20const&\29 2575:GrOpsRenderPass::draw\28int\2c\20int\29 2576:GrOpsRenderPass::drawInstanced\28int\2c\20int\2c\20int\2c\20int\29 2577:GrMeshDrawOp::onPrePrepareDraws\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 2578:GrMakeUniqueKeyInvalidationListener\28skgpu::UniqueKey*\2c\20unsigned\20int\29 2579:GrGradientShader::MakeGradientFP\28SkGradientBaseShader\20const&\2c\20GrFPArgs\20const&\2c\20SkShaders::MatrixRec\20const&\2c\20std::__2::unique_ptr>\2c\20SkMatrix\20const*\29 2580:GrGpuResource::getContext\28\29 2581:GrGpu::writePixels\28GrSurface*\2c\20SkIRect\2c\20GrColorType\2c\20GrColorType\2c\20GrMipLevel\20const*\2c\20int\2c\20bool\29 2582:GrGLTexture::onSetLabel\28\29 2583:GrGLTexture::onRelease\28\29 2584:GrGLTexture::onAbandon\28\29 2585:GrGLTexture::backendFormat\28\29\20const 2586:GrGLSLUniformHandler::addInputSampler\28skgpu::Swizzle\20const&\2c\20char\20const*\29 2587:GrGLSLShaderBuilder::appendFunctionDecl\28SkSLType\2c\20char\20const*\2c\20SkSpan\29 2588:GrGLSLProgramBuilder::fragmentProcessorHasCoordsParam\28GrFragmentProcessor\20const*\29\20const 2589:GrGLRenderTarget::onRelease\28\29 2590:GrGLRenderTarget::onAbandon\28\29 2591:GrGLGpu::resolveRenderFBOs\28GrGLRenderTarget*\2c\20SkIRect\20const&\2c\20GrGLRenderTarget::ResolveDirection\2c\20bool\29 2592:GrGLGpu::flushBlendAndColorWrite\28skgpu::BlendInfo\20const&\2c\20skgpu::Swizzle\20const&\29 2593:GrGLGetVersionFromString\28char\20const*\29 2594:GrGLCheckLinkStatus\28GrGLGpu\20const*\2c\20unsigned\20int\2c\20bool\2c\20skgpu::ShaderErrorHandler*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const**\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\29 2595:GrGLCaps::maxRenderTargetSampleCount\28GrGLFormat\29\20const 2596:GrFragmentProcessors::Make\28SkBlenderBase\20const*\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20GrFPArgs\20const&\29 2597:GrFragmentProcessor::isEqual\28GrFragmentProcessor\20const&\29\20const 2598:GrFragmentProcessor::asTextureEffect\28\29\20const 2599:GrFragmentProcessor::Rect\28std::__2::unique_ptr>\2c\20GrClipEdgeType\2c\20SkRect\29 2600:GrFragmentProcessor::ModulateRGBA\28std::__2::unique_ptr>\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\29 2601:GrDrawingManager::~GrDrawingManager\28\29 2602:GrDrawingManager::removeRenderTasks\28\29 2603:GrDrawingManager::getPathRenderer\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\2c\20bool\2c\20skgpu::ganesh::PathRendererChain::DrawType\2c\20skgpu::ganesh::PathRenderer::StencilSupport*\29 2604:GrDrawOpAtlas::compact\28skgpu::AtlasToken\29 2605:GrContext_Base::~GrContext_Base\28\29 2606:GrContext_Base::defaultBackendFormat\28SkColorType\2c\20skgpu::Renderable\29\20const 2607:GrColorSpaceXform::XformKey\28GrColorSpaceXform\20const*\29 2608:GrColorSpaceXform::Make\28SkColorSpace*\2c\20SkAlphaType\2c\20SkColorSpace*\2c\20SkAlphaType\29 2609:GrColorSpaceXform::Make\28GrColorInfo\20const&\2c\20GrColorInfo\20const&\29 2610:GrColorInfo::operator=\28GrColorInfo\20const&\29 2611:GrCaps::supportedReadPixelsColorType\28GrColorType\2c\20GrBackendFormat\20const&\2c\20GrColorType\29\20const 2612:GrCaps::getFallbackColorTypeAndFormat\28GrColorType\2c\20int\29\20const 2613:GrCaps::areColorTypeAndFormatCompatible\28GrColorType\2c\20GrBackendFormat\20const&\29\20const 2614:GrBufferAllocPool::~GrBufferAllocPool\28\29 2615:GrBlurUtils::GaussianBlur\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20GrColorType\2c\20SkAlphaType\2c\20sk_sp\2c\20SkIRect\2c\20SkIRect\2c\20float\2c\20float\2c\20SkTileMode\2c\20SkBackingFit\29 2616:GrBlurUtils::DrawShapeWithMaskFilter\28GrRecordingContext*\2c\20skgpu::ganesh::SurfaceDrawContext*\2c\20GrClip\20const*\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\2c\20GrStyledShape\20const&\29 2617:GrBaseContextPriv::getShaderErrorHandler\28\29\20const 2618:GrBackendTexture::GrBackendTexture\28GrBackendTexture\20const&\29 2619:GrBackendRenderTarget::getBackendFormat\28\29\20const 2620:GrBackendFormat::operator==\28GrBackendFormat\20const&\29\20const 2621:GrAAConvexTessellator::createOuterRing\28GrAAConvexTessellator::Ring\20const&\2c\20float\2c\20float\2c\20GrAAConvexTessellator::Ring*\29 2622:GrAAConvexTessellator::createInsetRings\28GrAAConvexTessellator::Ring&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20GrAAConvexTessellator::Ring**\29 2623:FindSortableTop\28SkOpContourHead*\29 2624:FT_Set_Charmap 2625:FT_Outline_Decompose 2626:FT_Open_Face 2627:FT_New_Size 2628:FT_Load_Sfnt_Table 2629:FT_GlyphLoader_Add 2630:FT_Get_Color_Glyph_Paint 2631:FT_Get_Color_Glyph_Layer 2632:FT_Get_Advance 2633:FT_Done_Library 2634:FT_CMap_New 2635:End 2636:DecodeImageData\28sk_sp\29 2637:Current_Ratio 2638:Cr_z__tr_stored_block 2639:ClipParams_unpackRegionOp\28SkReadBuffer*\2c\20unsigned\20int\29 2640:CircleOp::Circle&\20skia_private::TArray::emplace_back\28CircleOp::Circle&&\29 2641:CFF::CFFIndex>::sanitize\28hb_sanitize_context_t*\29\20const 2642:AlmostEqualUlps_Pin\28float\2c\20float\29 2643:wuffs_lzw__decoder__workbuf_len 2644:wuffs_gif__decoder__decode_image_config 2645:wuffs_gif__decoder__decode_frame_config 2646:winding_mono_quad\28SkPoint\20const*\2c\20float\2c\20float\2c\20int*\29 2647:winding_mono_conic\28SkConic\20const&\2c\20float\2c\20float\2c\20int*\29 2648:wcrtomb 2649:wchar_t\20const*\20std::__2::find\5babi:v160004\5d\28wchar_t\20const*\2c\20wchar_t\20const*\2c\20wchar_t\20const&\29 2650:void\20std::__2::__introsort\28skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::finish\28skia::textlayout::Block\20const&\2c\20float\2c\20float&\29::$_0&\2c\20std::__2::iterator_traits::difference_type\29 2651:void\20std::__2::__introsort\28\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::EntryComparator&\2c\20std::__2::iterator_traits<\28anonymous\20namespace\29::Entry*>::difference_type\29 2652:void\20std::__2::__introsort\28SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::Transform::\28anonymous\20namespace\29::BuiltinVariableScanner::sortNewElements\28\29::'lambda'\28SkSL::ProgramElement\20const*\2c\20SkSL::ProgramElement\20const*\29&\2c\20std::__2::iterator_traits::difference_type\29 2653:void\20std::__2::__introsort\28SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::Transform::FindAndDeclareBuiltinFunctions\28SkSL::Program&\29::$_0&\2c\20std::__2::iterator_traits::difference_type\29 2654:void\20std::__2::__inplace_merge\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::'lambda'\28\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\29&\2c\20std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>\28std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>\2c\20std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>\2c\20std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::'lambda'\28\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\29&\2c\20std::__2::iterator_traits\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>::difference_type\2c\20std::__2::iterator_traits\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>::difference_type\2c\20std::__2::iterator_traits\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>::value_type*\2c\20long\29 2655:void\20sort_r_simple\28void*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\20\28*\29\28void\20const*\2c\20void\20const*\2c\20void*\29\2c\20void*\29 2656:void\20sort_r_simple<>\28void*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\20\28*\29\28void\20const*\2c\20void\20const*\29\29.3 2657:void\20sort_r_simple<>\28void*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\20\28*\29\28void\20const*\2c\20void\20const*\29\29 2658:void\20SkTIntroSort\28double*\2c\20double*\29::'lambda'\28double\20const&\2c\20double\20const&\29>\28int\2c\20double*\2c\20int\2c\20void\20SkTQSort\28double*\2c\20double*\29::'lambda'\28double\20const&\2c\20double\20const&\29\20const&\29 2659:void\20SkTIntroSort\28SkEdge**\2c\20SkEdge**\29::'lambda'\28SkEdge\20const*\2c\20SkEdge\20const*\29>\28int\2c\20SkEdge*\2c\20int\2c\20void\20SkTQSort\28SkEdge**\2c\20SkEdge**\29::'lambda'\28SkEdge\20const*\2c\20SkEdge\20const*\29\20const&\29 2660:vfprintf 2661:valid_args\28SkImageInfo\20const&\2c\20unsigned\20long\2c\20unsigned\20long*\29 2662:utf8_back1SafeBody_73 2663:ustrcase_internalToUpper_73 2664:uscript_getScript_73 2665:ures_getStringWithAlias\28UResourceBundle\20const*\2c\20unsigned\20int\2c\20int\2c\20int*\2c\20UErrorCode*\29 2666:uprv_strdup_73 2667:uprv_sortArray_73 2668:uprv_mapFile_73 2669:uprv_compareASCIIPropertyNames_73 2670:update_offset_to_base\28char\20const*\2c\20long\29 2671:update_box 2672:unsigned\20long\20const&\20std::__2::min\5babi:v160004\5d\28unsigned\20long\20const&\2c\20unsigned\20long\20const&\29 2673:unsigned\20int\20std::__2::__sort5_wrap_policy\5babi:v160004\5d\28skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::finish\28skia::textlayout::Block\20const&\2c\20float\2c\20float&\29::$_0&\29 2674:unsigned\20int\20std::__2::__sort5_wrap_policy\5babi:v160004\5d\28\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::EntryComparator&\29 2675:unsigned\20int\20std::__2::__sort5_wrap_policy\5babi:v160004\5d\28SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::Transform::\28anonymous\20namespace\29::BuiltinVariableScanner::sortNewElements\28\29::'lambda'\28SkSL::ProgramElement\20const*\2c\20SkSL::ProgramElement\20const*\29&\29 2676:unsigned\20int\20std::__2::__sort5_wrap_policy\5babi:v160004\5d\28SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::Transform::FindAndDeclareBuiltinFunctions\28SkSL::Program&\29::$_0&\29 2677:unsigned\20int\20std::__2::__sort4\5babi:v160004\5d\28skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::finish\28skia::textlayout::Block\20const&\2c\20float\2c\20float&\29::$_0&\29 2678:unsigned\20int\20std::__2::__sort4\5babi:v160004\5d\28\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::EntryComparator&\29 2679:unsigned\20int\20std::__2::__sort4\5babi:v160004\5d\28SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::Transform::\28anonymous\20namespace\29::BuiltinVariableScanner::sortNewElements\28\29::'lambda'\28SkSL::ProgramElement\20const*\2c\20SkSL::ProgramElement\20const*\29&\29 2680:unsigned\20int\20std::__2::__sort4\5babi:v160004\5d\28SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::Transform::FindAndDeclareBuiltinFunctions\28SkSL::Program&\29::$_0&\29 2681:umutablecptrie_get_73 2682:ultag_isUnicodeLocaleAttributes_73 2683:ultag_isPrivateuseValueSubtags_73 2684:ulocimp_getKeywords_73 2685:uloc_openKeywords_73 2686:uloc_getScript_73 2687:uloc_getLanguage_73 2688:uloc_getCountry_73 2689:uhash_remove_73 2690:uhash_hashChars_73 2691:uhash_getiAndFound_73 2692:uhash_compareChars_73 2693:uenum_next_73 2694:udata_getHashTable\28UErrorCode&\29 2695:ucstrTextAccess\28UText*\2c\20long\20long\2c\20signed\20char\29 2696:u_strToUTF8_73 2697:u_strToUTF8WithSub_73 2698:u_strCompare_73 2699:u_memmove_73 2700:u_getUnicodeProperties_73 2701:u_getDataDirectory_73 2702:u_charMirror_73 2703:tt_size_reset 2704:tt_sbit_decoder_load_metrics 2705:tt_face_get_location 2706:tt_face_find_bdf_prop 2707:tolower 2708:toTextStyle\28SimpleTextStyle\20const&\29 2709:t1_cmap_unicode_done 2710:subdivide_cubic_to\28SkPath*\2c\20SkPoint\20const*\2c\20int\29 2711:subdivide\28SkConic\20const&\2c\20SkPoint*\2c\20int\29 2712:subQuickSort\28char*\2c\20int\2c\20int\2c\20int\2c\20int\20\28*\29\28void\20const*\2c\20void\20const*\2c\20void\20const*\29\2c\20void\20const*\2c\20void*\2c\20void*\29 2713:strtox 2714:strtoull_l 2715:strcat 2716:std::logic_error::~logic_error\28\29.1 2717:std::__2::vector>::push_back\5babi:v160004\5d\28float&&\29 2718:std::__2::vector>::__append\28unsigned\20long\29 2719:std::__2::vector<\28anonymous\20namespace\29::CacheImpl::Value*\2c\20std::__2::allocator<\28anonymous\20namespace\29::CacheImpl::Value*>>::__throw_length_error\5babi:v160004\5d\28\29\20const 2720:std::__2::vector>::reserve\28unsigned\20long\29 2721:std::__2::vector\2c\20std::__2::allocator>>::push_back\5babi:v160004\5d\28SkRGBA4f<\28SkAlphaType\293>\20const&\29 2722:std::__2::unique_ptr<\28anonymous\20namespace\29::SoftwarePathData\2c\20std::__2::default_delete<\28anonymous\20namespace\29::SoftwarePathData>>::reset\5babi:v160004\5d\28\28anonymous\20namespace\29::SoftwarePathData*\29 2723:std::__2::time_put>>::~time_put\28\29.1 2724:std::__2::pair\2c\20std::__2::allocator>>>::~pair\28\29 2725:std::__2::pair\20std::__2::__copy_trivial::operator\28\29\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20char*\29\20const 2726:std::__2::locale::operator=\28std::__2::locale\20const&\29 2727:std::__2::locale::locale\28\29 2728:std::__2::iterator_traits::difference_type\20std::__2::distance\5babi:v160004\5d\28unsigned\20int\20const*\2c\20unsigned\20int\20const*\29 2729:std::__2::ios_base::~ios_base\28\29 2730:std::__2::ios_base::init\28void*\29 2731:std::__2::ios_base::clear\28unsigned\20int\29 2732:std::__2::fpos<__mbstate_t>::fpos\5babi:v160004\5d\28long\20long\29 2733:std::__2::enable_if::value\20&&\20is_move_assignable::value\2c\20void>::type\20std::__2::swap\5babi:v160004\5d\28SkAnimatedImage::Frame&\2c\20SkAnimatedImage::Frame&\29 2734:std::__2::default_delete::operator\28\29\5babi:v160004\5d\28SkSL::ProgramUsage*\29\20const 2735:std::__2::decay>::__call\28std::declval\20const&>\28\29\29\29>::type\20std::__2::__to_address\5babi:v160004\5d\2c\20void>\28std::__2::__wrap_iter\20const&\29 2736:std::__2::chrono::duration>::duration\5babi:v160004\5d\28long\20long\20const&\2c\20std::__2::enable_if::value\20&&\20\28std::__2::integral_constant::value\20||\20!treat_as_floating_point::value\29\2c\20void>::type*\29 2737:std::__2::char_traits::move\28char*\2c\20char\20const*\2c\20unsigned\20long\29 2738:std::__2::char_traits::assign\28char*\2c\20unsigned\20long\2c\20char\29 2739:std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29.2 2740:std::__2::basic_stringbuf\2c\20std::__2::allocator>::~basic_stringbuf\28\29 2741:std::__2::basic_stringbuf\2c\20std::__2::allocator>::str\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 2742:std::__2::basic_string\2c\20std::__2::allocator>::push_back\28wchar_t\29 2743:std::__2::basic_string\2c\20std::__2::allocator>::capacity\5babi:v160004\5d\28\29\20const 2744:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28char*\2c\20char*\2c\20std::__2::allocator\20const&\29 2745:std::__2::basic_string\2c\20std::__2::allocator>::__make_iterator\5babi:v160004\5d\28char*\29 2746:std::__2::basic_string\2c\20std::__2::allocator>::__grow_by\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29 2747:std::__2::basic_streambuf>::setp\5babi:v160004\5d\28char*\2c\20char*\29 2748:std::__2::basic_streambuf>::basic_streambuf\28\29 2749:std::__2::basic_ostream>::~basic_ostream\28\29.1 2750:std::__2::basic_istream>::~basic_istream\28\29.1 2751:std::__2::basic_istream>::sentry::sentry\28std::__2::basic_istream>&\2c\20bool\29 2752:std::__2::basic_iostream>::~basic_iostream\28\29.2 2753:std::__2::__wrap_iter::operator+\5babi:v160004\5d\28long\29\20const 2754:std::__2::__wrap_iter::operator+\5babi:v160004\5d\28long\29\20const 2755:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d\28SkSL::Position&\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray&&\29 2756:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d\28SkSL::Position&\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray&&\29 2757:std::__2::__throw_system_error\28int\2c\20char\20const*\29 2758:std::__2::__throw_out_of_range\5babi:v160004\5d\28char\20const*\29 2759:std::__2::__throw_length_error\5babi:v160004\5d\28char\20const*\29 2760:std::__2::__optional_destruct_base::reset\5babi:v160004\5d\28\29 2761:std::__2::__num_get::__stage2_float_prep\28std::__2::ios_base&\2c\20wchar_t*\2c\20wchar_t&\2c\20wchar_t&\29 2762:std::__2::__num_get::__stage2_float_loop\28wchar_t\2c\20bool&\2c\20char&\2c\20char*\2c\20char*&\2c\20wchar_t\2c\20wchar_t\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int*\2c\20unsigned\20int*&\2c\20unsigned\20int&\2c\20wchar_t*\29 2763:std::__2::__num_get::__stage2_float_prep\28std::__2::ios_base&\2c\20char*\2c\20char&\2c\20char&\29 2764:std::__2::__num_get::__stage2_float_loop\28char\2c\20bool&\2c\20char&\2c\20char*\2c\20char*&\2c\20char\2c\20char\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int*\2c\20unsigned\20int*&\2c\20unsigned\20int&\2c\20char*\29 2765:std::__2::__libcpp_wcrtomb_l\5babi:v160004\5d\28char*\2c\20wchar_t\2c\20__mbstate_t*\2c\20__locale_struct*\29 2766:std::__2::__less::operator\28\29\5babi:v160004\5d\28unsigned\20int\20const&\2c\20unsigned\20long\20const&\29\20const 2767:std::__2::__itoa::__base_10_u32\5babi:v160004\5d\28char*\2c\20unsigned\20int\29 2768:std::__2::__itoa::__append6\5babi:v160004\5d\28char*\2c\20unsigned\20int\29 2769:std::__2::__itoa::__append4\5babi:v160004\5d\28char*\2c\20unsigned\20int\29 2770:std::__2::__call_once\28unsigned\20long\20volatile&\2c\20void*\2c\20void\20\28*\29\28void*\29\29 2771:sktext::gpu::VertexFiller::flatten\28SkWriteBuffer&\29\20const 2772:sktext::gpu::VertexFiller::Make\28skgpu::MaskFormat\2c\20SkMatrix\20const&\2c\20SkRect\2c\20SkSpan\2c\20sktext::gpu::SubRunAllocator*\2c\20sktext::gpu::FillerType\29 2773:sktext::gpu::SubRunContainer::draw\28SkCanvas*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20SkRefCnt\20const*\2c\20std::__2::function\2c\20sktext::gpu::RendererData\29>\20const&\29\20const 2774:sktext::gpu::SubRunAllocator::SubRunAllocator\28int\29 2775:sktext::gpu::GlyphVector::flatten\28SkWriteBuffer&\29\20const 2776:sktext::gpu::GlyphVector::Make\28sktext::SkStrikePromise&&\2c\20SkSpan\2c\20sktext::gpu::SubRunAllocator*\29 2777:sktext::SkStrikePromise::flatten\28SkWriteBuffer&\29\20const 2778:sktext::GlyphRunBuilder::makeGlyphRunList\28sktext::GlyphRun\20const&\2c\20SkPaint\20const&\2c\20SkPoint\29 2779:sktext::GlyphRun::GlyphRun\28SkFont\20const&\2c\20SkSpan\2c\20SkSpan\2c\20SkSpan\2c\20SkSpan\2c\20SkSpan\29 2780:skpaint_to_grpaint_impl\28GrRecordingContext*\2c\20GrColorInfo\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\2c\20std::__2::optional>>\2c\20SkBlender*\2c\20SkSurfaceProps\20const&\2c\20GrPaint*\29 2781:skip_literal_string 2782:skif::FilterResult::getAnalyzedShaderView\28skif::Context\20const&\2c\20SkSamplingOptions\20const&\2c\20SkEnumBitMask\29\20const 2783:skif::FilterResult::draw\28skif::Context\20const&\2c\20SkDevice*\2c\20bool\2c\20SkBlender\20const*\29\20const 2784:skif::FilterResult::Builder::outputBounds\28std::__2::optional>\29\20const 2785:skif::FilterResult::Builder::drawShader\28sk_sp\2c\20skif::LayerSpace\20const&\2c\20bool\29\20const 2786:skif::FilterResult::Builder::createInputShaders\28skif::LayerSpace\20const&\2c\20bool\29 2787:skia_private::THashTable\20\28*\29\28SkReadBuffer&\29\2c\20SkGoodHash>::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap\20\28*\29\28SkReadBuffer&\29\2c\20SkGoodHash>::Pair>::resize\28int\29 2788:skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::removeSlot\28int\29 2789:skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::resize\28int\29 2790:skia_private::THashTable::Pair\2c\20char\20const*\2c\20skia_private::THashMap::Pair>::resize\28int\29 2791:skia_private::THashTable::Pair\2c\20SkSL::IRNode\20const*\2c\20skia_private::THashMap::Pair>::resize\28int\29 2792:skia_private::THashTable::AdaptedTraits>::removeIfExists\28skgpu::ganesh::SmallPathShapeDataKey\20const&\29 2793:skia_private::THashTable::Traits>::resize\28int\29 2794:skia_private::THashTable>\2c\20GrGLGpu::ProgramCache::DescHash>::Entry*\2c\20GrProgramDesc\2c\20SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::Traits>::find\28GrProgramDesc\20const&\29\20const 2795:skia_private::THashTable::AdaptedTraits>::uncheckedSet\28GrThreadSafeCache::Entry*&&\29 2796:skia_private::THashTable::AdaptedTraits>::resize\28int\29 2797:skia_private::THashTable::AdaptedTraits>::removeIfExists\28skgpu::UniqueKey\20const&\29 2798:skia_private::THashTable::AdaptedTraits>::uncheckedSet\28GrTextureProxy*&&\29 2799:skia_private::THashTable::AdaptedTraits>::resize\28int\29 2800:skia_private::THashTable::Traits>::uncheckedSet\28FT_Opaque_Paint_&&\29 2801:skia_private::THashTable::Traits>::resize\28int\29 2802:skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::~THashMap\28\29 2803:skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::find\28std::__2::basic_string_view>\20const&\29\20const 2804:skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::THashMap\28std::initializer_list>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>\29 2805:skia_private::THashMap>\2c\20SkGoodHash>::set\28SkSL::Variable\20const*\2c\20std::__2::unique_ptr>\29 2806:skia_private::THashMap\2c\20SkIcuBreakIteratorCache::Request::Hash>::set\28SkIcuBreakIteratorCache::Request\2c\20sk_sp\29 2807:skia_private::TArray::resize_back\28int\29 2808:skia_private::TArray::push_back_raw\28int\29 2809:skia_private::TArray::resize_back\28int\29 2810:skia_png_write_chunk 2811:skia_png_set_sBIT 2812:skia_png_set_read_fn 2813:skia_png_set_packing 2814:skia_png_set_bKGD 2815:skia_png_save_uint_32 2816:skia_png_reciprocal2 2817:skia_png_realloc_array 2818:skia_png_read_start_row 2819:skia_png_read_IDAT_data 2820:skia_png_handle_zTXt 2821:skia_png_handle_tRNS 2822:skia_png_handle_tIME 2823:skia_png_handle_tEXt 2824:skia_png_handle_sRGB 2825:skia_png_handle_sPLT 2826:skia_png_handle_sCAL 2827:skia_png_handle_sBIT 2828:skia_png_handle_pHYs 2829:skia_png_handle_pCAL 2830:skia_png_handle_oFFs 2831:skia_png_handle_iTXt 2832:skia_png_handle_iCCP 2833:skia_png_handle_hIST 2834:skia_png_handle_gAMA 2835:skia_png_handle_cHRM 2836:skia_png_handle_bKGD 2837:skia_png_handle_as_unknown 2838:skia_png_handle_PLTE 2839:skia_png_do_strip_channel 2840:skia_png_destroy_read_struct 2841:skia_png_destroy_info_struct 2842:skia_png_compress_IDAT 2843:skia_png_combine_row 2844:skia_png_colorspace_set_sRGB 2845:skia_png_check_fp_string 2846:skia_png_check_fp_number 2847:skia::textlayout::TypefaceFontStyleSet::createTypeface\28int\29 2848:skia::textlayout::TextLine::shapeEllipsis\28SkString\20const&\2c\20skia::textlayout::Cluster\20const*\29::$_0::operator\28\29\28sk_sp\2c\20sk_sp\29\20const 2849:skia::textlayout::TextLine::getRectsForRange\28skia::textlayout::SkRange\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const 2850:skia::textlayout::TextLine::getGlyphPositionAtCoordinate\28float\29 2851:skia::textlayout::Run::isResolved\28\29\20const 2852:skia::textlayout::Run::copyTo\28SkTextBlobBuilder&\2c\20unsigned\20long\2c\20unsigned\20long\29\20const 2853:skia::textlayout::ParagraphImpl::buildClusterTable\28\29 2854:skia::textlayout::OneLineShaper::~OneLineShaper\28\29 2855:skia::textlayout::FontCollection::setDefaultFontManager\28sk_sp\29 2856:skia::textlayout::FontCollection::FontCollection\28\29 2857:skia::textlayout::Cluster::isSoftBreak\28\29\20const 2858:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::flush\28GrMeshDrawTarget*\2c\20skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::FlushInfo*\29\20const 2859:skgpu::ganesh::\28anonymous\20namespace\29::HullShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::~Impl\28\29 2860:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::programInfo\28\29 2861:skgpu::ganesh::SurfaceFillContext::discard\28\29 2862:skgpu::ganesh::SurfaceDrawContext::internalStencilClear\28SkIRect\20const*\2c\20bool\29 2863:skgpu::ganesh::SurfaceDrawContext::drawPath\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkPath\20const&\2c\20GrStyle\20const&\29 2864:skgpu::ganesh::SurfaceDrawContext::attemptQuadOptimization\28GrClip\20const*\2c\20GrUserStencilSettings\20const*\2c\20DrawQuad*\2c\20GrPaint*\29 2865:skgpu::ganesh::SurfaceDrawContext::Make\28GrRecordingContext*\2c\20GrColorType\2c\20sk_sp\2c\20sk_sp\2c\20GrSurfaceOrigin\2c\20SkSurfaceProps\20const&\29 2866:skgpu::ganesh::SurfaceContext::rescaleInto\28skgpu::ganesh::SurfaceFillContext*\2c\20SkIRect\2c\20SkIRect\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\29::$_0::operator\28\29\28GrSurfaceProxyView\2c\20SkIRect\29\20const 2867:skgpu::ganesh::SmallPathAtlasMgr::~SmallPathAtlasMgr\28\29 2868:skgpu::ganesh::QuadPerEdgeAA::MinColorType\28SkRGBA4f<\28SkAlphaType\292>\29 2869:skgpu::ganesh::PathRendererChain::PathRendererChain\28GrRecordingContext*\2c\20skgpu::ganesh::PathRendererChain::Options\20const&\29 2870:skgpu::ganesh::PathRenderer::getStencilSupport\28GrStyledShape\20const&\29\20const 2871:skgpu::ganesh::PathCurveTessellator::draw\28GrOpFlushState*\29\20const 2872:skgpu::ganesh::OpsTask::recordOp\28std::__2::unique_ptr>\2c\20bool\2c\20GrProcessorSet::Analysis\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const*\2c\20GrCaps\20const&\29 2873:skgpu::ganesh::FilterAndMipmapHaveNoEffect\28GrQuad\20const&\2c\20GrQuad\20const&\29 2874:skgpu::ganesh::FillRectOp::MakeNonAARect\28GrRecordingContext*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20GrUserStencilSettings\20const*\29 2875:skgpu::ganesh::FillRRectOp::Make\28GrRecordingContext*\2c\20SkArenaAlloc*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkRRect\20const&\2c\20SkRect\20const&\2c\20GrAA\29 2876:skgpu::ganesh::Device::drawRRect\28SkRRect\20const&\2c\20SkPaint\20const&\29 2877:skgpu::ganesh::Device::drawImageQuadDirect\28SkImage\20const*\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 2878:skgpu::ganesh::Device::Make\28std::__2::unique_ptr>\2c\20SkAlphaType\2c\20skgpu::ganesh::Device::InitContents\29 2879:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::setup_dashed_rect\28SkRect\20const&\2c\20skgpu::VertexWriter&\2c\20SkMatrix\20const&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashCap\29 2880:skgpu::ganesh::ClipStack::SaveRecord::invalidateMasks\28GrProxyProvider*\2c\20SkTBlockList*\29 2881:skgpu::ganesh::ClipStack::RawElement::contains\28skgpu::ganesh::ClipStack::SaveRecord\20const&\29\20const 2882:skgpu::ganesh::AtlasTextOp::operator\20new\28unsigned\20long\29 2883:skgpu::ganesh::AtlasTextOp::Geometry::Make\28sktext::gpu::AtlasSubRun\20const&\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\2c\20sk_sp&&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkArenaAlloc*\29 2884:skgpu::ganesh::AtlasRenderTask::addAtlasDrawOp\28std::__2::unique_ptr>\2c\20GrCaps\20const&\29 2885:skcms_Transform::$_2::operator\28\29\28skcms_Curve\20const*\2c\20int\29\20const 2886:skcms_MaxRoundtripError 2887:sk_sp::~sk_sp\28\29 2888:sk_free_releaseproc\28void\20const*\2c\20void*\29 2889:siprintf 2890:sift 2891:shallowTextClone\28UText*\2c\20UText\20const*\2c\20UErrorCode*\29 2892:rotate\28SkDCubic\20const&\2c\20int\2c\20int\2c\20SkDCubic&\29 2893:res_getResource_73 2894:read_header\28SkStream*\2c\20SkISize*\29 2895:quad_intersect_ray\28SkPoint\20const*\2c\20float\2c\20SkDLine\20const&\2c\20SkIntersections*\29 2896:qsort 2897:psh_globals_set_scale 2898:ps_parser_skip_PS_token 2899:ps_builder_done 2900:portable::uniform_color\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 2901:png_text_compress 2902:png_inflate_read 2903:png_inflate_claim 2904:png_image_size 2905:png_colorspace_endpoints_match 2906:png_build_16bit_table 2907:normalize 2908:next_marker 2909:morphpoints\28SkPoint*\2c\20SkPoint\20const*\2c\20int\2c\20SkPathMeasure&\2c\20float\29 2910:make_unpremul_effect\28std::__2::unique_ptr>\29 2911:long\20std::__2::__libcpp_atomic_refcount_decrement\5babi:v160004\5d\28long&\29 2912:long\20const&\20std::__2::min\5babi:v160004\5d\28long\20const&\2c\20long\20const&\29 2913:log1p 2914:locale_getKeywordsStart_73 2915:load_truetype_glyph 2916:loadParentsExceptRoot\28UResourceDataEntry*&\2c\20char*\2c\20int\2c\20signed\20char\2c\20char*\2c\20UErrorCode*\29 2917:line_intersect_ray\28SkPoint\20const*\2c\20float\2c\20SkDLine\20const&\2c\20SkIntersections*\29 2918:lang_find_or_insert\28char\20const*\29 2919:jpeg_calc_output_dimensions 2920:inner_scanline\28int\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkBlitter*\29 2921:inflate_table 2922:increment_simple_rowgroup_ctr 2923:icu_73::spanOneUTF8\28icu_73::UnicodeSet\20const&\2c\20unsigned\20char\20const*\2c\20int\29 2924:icu_73::enumGroupNames\28icu_73::UCharNames*\2c\20unsigned\20short\20const*\2c\20int\2c\20int\2c\20signed\20char\20\28*\29\28void*\2c\20int\2c\20UCharNameChoice\2c\20char\20const*\2c\20int\29\2c\20void*\2c\20UCharNameChoice\29 2925:icu_73::\28anonymous\20namespace\29::appendResult\28char16_t*\2c\20int\2c\20int\2c\20int\2c\20char16_t\20const*\2c\20int\2c\20unsigned\20int\2c\20icu_73::Edits*\29 2926:icu_73::\28anonymous\20namespace\29::AliasReplacer::replace\28icu_73::Locale\20const&\2c\20icu_73::CharString&\2c\20UErrorCode&\29::$_0::__invoke\28UElement\2c\20UElement\29 2927:icu_73::UnicodeString::fromUTF8\28icu_73::StringPiece\29 2928:icu_73::UnicodeString::doCompare\28int\2c\20int\2c\20char16_t\20const*\2c\20int\2c\20int\29\20const 2929:icu_73::UnicodeString::UnicodeString\28char\20const*\2c\20int\2c\20icu_73::UnicodeString::EInvariant\29 2930:icu_73::UnicodeString::UnicodeString\28char16_t\20const*\2c\20int\29 2931:icu_73::UnicodeSet::retainAll\28icu_73::UnicodeSet\20const&\29 2932:icu_73::UnicodeSet::remove\28int\2c\20int\29 2933:icu_73::UnicodeSet::exclusiveOr\28int\20const*\2c\20int\2c\20signed\20char\29 2934:icu_73::UnicodeSet::ensureBufferCapacity\28int\29 2935:icu_73::UnicodeSet::applyIntPropertyValue\28UProperty\2c\20int\2c\20UErrorCode&\29 2936:icu_73::UnicodeSet::applyFilter\28signed\20char\20\28*\29\28int\2c\20void*\29\2c\20void*\2c\20icu_73::UnicodeSet\20const*\2c\20UErrorCode&\29 2937:icu_73::UnicodeSet::UnicodeSet\28icu_73::UnicodeSet\20const&\29 2938:icu_73::UVector::sort\28int\20\28*\29\28UElement\2c\20UElement\29\2c\20UErrorCode&\29 2939:icu_73::UVector::removeElement\28void*\29 2940:icu_73::UVector::insertElementAt\28void*\2c\20int\2c\20UErrorCode&\29 2941:icu_73::UVector::UVector\28UErrorCode&\29 2942:icu_73::UVector32::setSize\28int\29 2943:icu_73::UCharsTrieBuilder::add\28icu_73::UnicodeString\20const&\2c\20int\2c\20UErrorCode&\29 2944:icu_73::StringTrieBuilder::~StringTrieBuilder\28\29 2945:icu_73::SimpleFilteredSentenceBreakIterator::internalNext\28int\29 2946:icu_73::RuleCharacterIterator::atEnd\28\29\20const 2947:icu_73::ResourceDataValue::getString\28int&\2c\20UErrorCode&\29\20const 2948:icu_73::ResourceDataValue::getArray\28UErrorCode&\29\20const 2949:icu_73::ReorderingBuffer::append\28char16_t\20const*\2c\20int\2c\20signed\20char\2c\20unsigned\20char\2c\20unsigned\20char\2c\20UErrorCode&\29 2950:icu_73::PatternProps::isWhiteSpace\28int\29 2951:icu_73::Normalizer2Impl::~Normalizer2Impl\28\29 2952:icu_73::Normalizer2Impl::decompose\28int\2c\20unsigned\20short\2c\20icu_73::ReorderingBuffer&\2c\20UErrorCode&\29\20const 2953:icu_73::Normalizer2Impl::decompose\28char16_t\20const*\2c\20char16_t\20const*\2c\20icu_73::ReorderingBuffer*\2c\20UErrorCode&\29\20const 2954:icu_73::Normalizer2Impl::decomposeShort\28char16_t\20const*\2c\20char16_t\20const*\2c\20signed\20char\2c\20signed\20char\2c\20icu_73::ReorderingBuffer&\2c\20UErrorCode&\29\20const 2955:icu_73::LocaleUtility::initNameFromLocale\28icu_73::Locale\20const&\2c\20icu_73::UnicodeString&\29 2956:icu_73::LocaleBuilder::~LocaleBuilder\28\29 2957:icu_73::Locale::getKeywordValue\28icu_73::StringPiece\2c\20icu_73::ByteSink&\2c\20UErrorCode&\29\20const 2958:icu_73::Locale::getDefault\28\29 2959:icu_73::ICUServiceKey::~ICUServiceKey\28\29 2960:icu_73::ICUResourceBundleFactory::~ICUResourceBundleFactory\28\29 2961:icu_73::ICULocaleService::~ICULocaleService\28\29 2962:icu_73::EmojiProps::getSingleton\28UErrorCode&\29 2963:icu_73::Edits::reset\28\29 2964:icu_73::DictionaryBreakEngine::~DictionaryBreakEngine\28\29 2965:icu_73::CharString::getAppendBuffer\28int\2c\20int\2c\20int&\2c\20UErrorCode&\29 2966:icu_73::BytesTrie::readValue\28unsigned\20char\20const*\2c\20int\29 2967:icu_73::ByteSinkUtil::appendChange\28unsigned\20char\20const*\2c\20unsigned\20char\20const*\2c\20char16_t\20const*\2c\20int\2c\20icu_73::ByteSink&\2c\20icu_73::Edits*\2c\20UErrorCode&\29 2968:icu_73::BreakIterator::makeInstance\28icu_73::Locale\20const&\2c\20int\2c\20UErrorCode&\29 2969:hb_tag_from_string 2970:hb_shape_plan_destroy 2971:hb_script_get_horizontal_direction 2972:hb_paint_extents_context_t::push_clip\28hb_extents_t\29 2973:hb_ot_color_palette_get_colors 2974:hb_lazy_loader_t\2c\20hb_face_t\2c\2012u\2c\20OT::vmtx_accelerator_t>::get\28\29\20const 2975:hb_lazy_loader_t\2c\20hb_face_t\2c\2023u\2c\20hb_blob_t>::get\28\29\20const 2976:hb_lazy_loader_t\2c\20hb_face_t\2c\201u\2c\20hb_blob_t>::get\28\29\20const 2977:hb_lazy_loader_t\2c\20hb_face_t\2c\2018u\2c\20hb_blob_t>::get\28\29\20const 2978:hb_hashmap_t::alloc\28unsigned\20int\29 2979:hb_font_funcs_destroy 2980:hb_face_get_upem 2981:hb_face_destroy 2982:hb_draw_cubic_to_nil\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 2983:hb_buffer_set_segment_properties 2984:hb_blob_create 2985:gray_render_line 2986:get_vendor\28char\20const*\29 2987:get_renderer\28char\20const*\2c\20GrGLExtensions\20const&\29 2988:get_joining_type\28unsigned\20int\2c\20hb_unicode_general_category_t\29 2989:getDefaultScript\28icu_73::CharString\20const&\2c\20icu_73::CharString\20const&\29 2990:generate_distance_field_from_image\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\29 2991:ft_var_readpackeddeltas 2992:ft_var_get_item_delta 2993:ft_var_done_item_variation_store 2994:ft_glyphslot_done 2995:ft_glyphslot_alloc_bitmap 2996:freelocale 2997:free_pool 2998:fquad_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 2999:fp_barrierf 3000:fline_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 3001:fixN0c\28BracketData*\2c\20int\2c\20int\2c\20unsigned\20char\29 3002:findFirstExisting\28char\20const*\2c\20char*\2c\20char\20const*\2c\20UResOpenType\2c\20signed\20char*\2c\20signed\20char*\2c\20signed\20char*\2c\20UErrorCode*\29 3003:fcubic_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 3004:fconic_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 3005:fclose 3006:expm1f 3007:exp2f 3008:emscripten::internal::MethodInvoker::invoke\28void\20\28SkFont::*\20const&\29\28float\29\2c\20SkFont*\2c\20float\29 3009:emscripten::internal::MethodInvoker\20\28SkAnimatedImage::*\29\28\29\2c\20sk_sp\2c\20SkAnimatedImage*>::invoke\28sk_sp\20\28SkAnimatedImage::*\20const&\29\28\29\2c\20SkAnimatedImage*\29 3010:emscripten::internal::Invoker>\2c\20SimpleParagraphStyle\2c\20sk_sp>::invoke\28std::__2::unique_ptr>\20\28*\29\28SimpleParagraphStyle\2c\20sk_sp\29\2c\20SimpleParagraphStyle*\2c\20sk_sp*\29 3011:emscripten::internal::FunctionInvoker::invoke\28int\20\28**\29\28SkCanvas&\2c\20SkPaint\20const*\2c\20unsigned\20long\2c\20SkImageFilter\20const*\2c\20unsigned\20int\29\2c\20SkCanvas*\2c\20SkPaint\20const*\2c\20unsigned\20long\2c\20SkImageFilter\20const*\2c\20unsigned\20int\29 3012:emscripten::internal::FunctionInvoker::invoke\28emscripten::val\20\28**\29\28SkFontMgr&\2c\20int\29\2c\20SkFontMgr*\2c\20int\29 3013:do_scanline\28int\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkBlitter*\29 3014:doLoadFromIndividualFiles\28char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20signed\20char\20\28*\29\28void*\2c\20char\20const*\2c\20char\20const*\2c\20UDataInfo\20const*\29\2c\20void*\2c\20UErrorCode*\2c\20UErrorCode*\29 3015:doLoadFromCommonData\28signed\20char\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20signed\20char\20\28*\29\28void*\2c\20char\20const*\2c\20char\20const*\2c\20UDataInfo\20const*\29\2c\20void*\2c\20UErrorCode*\2c\20UErrorCode*\29 3016:decompose\28hb_ot_shape_normalize_context_t\20const*\2c\20bool\2c\20unsigned\20int\29 3017:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\20const&\2c\20skgpu::ganesh::DashOp::AAMode\2c\20SkMatrix\20const&\2c\20bool\29::$_0>\28skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingCircleEffect::Make\28SkArenaAlloc*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20skgpu::ganesh::DashOp::AAMode\2c\20SkMatrix\20const&\2c\20bool\29::$_0&&\29::'lambda'\28char*\29::__invoke\28char*\29 3018:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28GrCaps\20const&\2c\20GrSurfaceProxyView\20const&\2c\20bool&\2c\20GrPipeline*&\2c\20GrUserStencilSettings\20const*&&\2c\20\28anonymous\20namespace\29::DrawAtlasPathShader*&\2c\20GrPrimitiveType&&\2c\20GrXferBarrierFlags&\2c\20GrLoadOp&\29::'lambda'\28void*\29>\28GrProgramInfo&&\29::'lambda'\28char*\29::__invoke\28char*\29 3019:cubic_intersect_ray\28SkPoint\20const*\2c\20float\2c\20SkDLine\20const&\2c\20SkIntersections*\29 3020:conic_intersect_ray\28SkPoint\20const*\2c\20float\2c\20SkDLine\20const&\2c\20SkIntersections*\29 3021:char\20const*\20std::__2::find\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20char\20const&\29 3022:char\20const*\20std::__2::__rewrap_range\5babi:v160004\5d\28char\20const*\2c\20char\20const*\29 3023:cff_index_get_pointers 3024:cff2_path_param_t::move_to\28CFF::point_t\20const&\29 3025:cff1_path_param_t::move_to\28CFF::point_t\20const&\29 3026:cf2_glyphpath_computeOffset 3027:cached_mask_gamma\28float\2c\20float\2c\20float\29 3028:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 3029:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 3030:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 3031:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 3032:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 3033:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 3034:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 3035:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 3036:byn$mgfn-shared$void\20SkSwizzler::SkipLeading8888ZerosThen<&fast_swizzle_rgba_to_rgba_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 3037:byn$mgfn-shared$ultag_isExtensionSubtags_73 3038:byn$mgfn-shared$std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d\28SkSL::Position&\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray&&\29 3039:byn$mgfn-shared$std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 3040:byn$mgfn-shared$skia_private::TArray::operator=\28skia_private::TArray\20const&\29 3041:byn$mgfn-shared$skia_private::TArray::operator=\28skia_private::TArray&&\29 3042:byn$mgfn-shared$skgpu::ganesh::\28anonymous\20namespace\29::HullShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 3043:byn$mgfn-shared$non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 3044:byn$mgfn-shared$icu_73::LaoBreakEngine::~LaoBreakEngine\28\29.1 3045:byn$mgfn-shared$icu_73::LaoBreakEngine::~LaoBreakEngine\28\29 3046:byn$mgfn-shared$getInPC\28IntProperty\20const&\2c\20int\2c\20UProperty\29 3047:byn$mgfn-shared$\28anonymous\20namespace\29::DirectMaskSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 3048:byn$mgfn-shared$SkRuntimeEffect::MakeForColorFilter\28SkString\2c\20SkRuntimeEffect::Options\20const&\29 3049:byn$mgfn-shared$SkImageInfo::MakeN32Premul\28int\2c\20int\29 3050:byn$mgfn-shared$SkBlockMemoryStream::~SkBlockMemoryStream\28\29.1 3051:byn$mgfn-shared$SkBlockMemoryStream::~SkBlockMemoryStream\28\29 3052:byn$mgfn-shared$SkBinaryWriteBuffer::writeScalarArray\28float\20const*\2c\20unsigned\20int\29 3053:byn$mgfn-shared$Round_To_Grid 3054:byn$mgfn-shared$LineConicIntersections::addLineNearEndPoints\28\29 3055:byn$mgfn-shared$GrModulateAtlasCoverageEffect::onMakeProgramImpl\28\29\20const 3056:byn$mgfn-shared$GrGLProgramDataManager::setMatrix2fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 3057:byn$mgfn-shared$GrGLProgramDataManager::setMatrix2f\28GrResourceHandle\2c\20float\20const*\29\20const 3058:byn$mgfn-shared$DefaultGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 3059:build_tree 3060:bracketAddOpening\28BracketData*\2c\20char16_t\2c\20int\29 3061:bool\20OT::glyf_impl::Glyph::get_points\28hb_font_t*\2c\20OT::glyf_accelerator_t\20const&\2c\20contour_point_vector_t&\2c\20contour_point_vector_t*\2c\20head_maxp_info_t*\2c\20unsigned\20int*\2c\20bool\2c\20bool\2c\20bool\2c\20hb_array_t\2c\20hb_map_t*\2c\20unsigned\20int\2c\20unsigned\20int*\29\20const 3062:bool\20OT::glyf_accelerator_t::get_points\28hb_font_t*\2c\20unsigned\20int\2c\20OT::glyf_accelerator_t::points_aggregator_t\29\20const 3063:bool\20OT::GSUBGPOSVersion1_2::sanitize\28hb_sanitize_context_t*\29\20const 3064:bool\20OT::GSUBGPOSVersion1_2::sanitize\28hb_sanitize_context_t*\29\20const 3065:blit_aaa_trapezoid_row\28AdditiveBlitter*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char*\2c\20bool\2c\20bool\2c\20bool\29 3066:auto\20std::__2::__unwrap_range\5babi:v160004\5d\28char\20const*\2c\20char\20const*\29 3067:atan 3068:alloc_large 3069:af_glyph_hints_done 3070:add_quad\28SkPoint\20const*\2c\20skia_private::TArray*\29 3071:acos 3072:aaa_fill_path\28SkPath\20const&\2c\20SkIRect\20const&\2c\20AdditiveBlitter*\2c\20int\2c\20int\2c\20bool\2c\20bool\2c\20bool\29 3073:_get_path\28OT::cff1::accelerator_t\20const*\2c\20hb_font_t*\2c\20unsigned\20int\2c\20hb_draw_session_t&\2c\20bool\2c\20CFF::point_t*\29 3074:_get_bounds\28OT::cff1::accelerator_t\20const*\2c\20unsigned\20int\2c\20bounds_t&\2c\20bool\29 3075:_getVariant\28char\20const*\2c\20char\2c\20icu_73::ByteSink&\2c\20signed\20char\29 3076:_enumPropertyStartsRange\28void\20const*\2c\20int\2c\20int\2c\20unsigned\20int\29 3077:_embind_register_bindings 3078:_canonicalize\28char\20const*\2c\20icu_73::ByteSink&\2c\20unsigned\20int\2c\20UErrorCode*\29 3079:__trunctfdf2 3080:__towrite 3081:__toread 3082:__subtf3 3083:__strchrnul 3084:__rem_pio2f 3085:__rem_pio2 3086:__math_uflowf 3087:__math_oflowf 3088:__fwritex 3089:__dynamic_cast 3090:__cxxabiv1::__class_type_info::process_static_type_below_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20int\29\20const 3091:__cxxabiv1::__class_type_info::process_static_type_above_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20void\20const*\2c\20int\29\20const 3092:__cxxabiv1::__class_type_info::process_found_base_class\28__cxxabiv1::__dynamic_cast_info*\2c\20void*\2c\20int\29\20const 3093:__cxxabiv1::__base_class_type_info::search_above_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 3094:\28anonymous\20namespace\29::ulayout_ensureData\28UErrorCode&\29 3095:\28anonymous\20namespace\29::shape_contains_rect\28GrShape\20const&\2c\20SkMatrix\20const&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20SkMatrix\20const&\2c\20bool\29 3096:\28anonymous\20namespace\29::getRange\28void\20const*\2c\20int\2c\20unsigned\20int\20\28*\29\28void\20const*\2c\20unsigned\20int\29\2c\20void\20const*\2c\20unsigned\20int*\29 3097:\28anonymous\20namespace\29::generateFacePathCOLRv1\28FT_FaceRec_*\2c\20unsigned\20short\2c\20SkPath*\29 3098:\28anonymous\20namespace\29::convert_noninflect_cubic_to_quads_with_constraint\28SkPoint\20const*\2c\20float\2c\20SkPathFirstDirection\2c\20skia_private::TArray*\2c\20int\29 3099:\28anonymous\20namespace\29::convert_noninflect_cubic_to_quads\28SkPoint\20const*\2c\20float\2c\20skia_private::TArray*\2c\20int\2c\20bool\2c\20bool\29 3100:\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const 3101:\28anonymous\20namespace\29::bloat_quad\28SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkMatrix\20const*\2c\20\28anonymous\20namespace\29::BezierVertex*\29 3102:\28anonymous\20namespace\29::SkEmptyTypeface::onMakeClone\28SkFontArguments\20const&\29\20const 3103:\28anonymous\20namespace\29::SkColorFilterImageFilter::~SkColorFilterImageFilter\28\29.1 3104:\28anonymous\20namespace\29::SkColorFilterImageFilter::~SkColorFilterImageFilter\28\29 3105:\28anonymous\20namespace\29::SkBlurImageFilter::mapSigma\28skif::Mapping\20const&\2c\20bool\29\20const 3106:\28anonymous\20namespace\29::DrawAtlasOpImpl::visitProxies\28std::__2::function\20const&\29\20const 3107:\28anonymous\20namespace\29::DrawAtlasOpImpl::programInfo\28\29 3108:\28anonymous\20namespace\29::DrawAtlasOpImpl::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 3109:\28anonymous\20namespace\29::DirectMaskSubRun::testingOnly_packedGlyphIDToGlyph\28sktext::gpu::StrikeCache*\29\20const 3110:\28anonymous\20namespace\29::DirectMaskSubRun::glyphs\28\29\20const 3111:WebPRescaleNeededLines 3112:WebPInitDecBufferInternal 3113:WebPInitCustomIo 3114:WebPGetFeaturesInternal 3115:WebPDemuxGetFrame 3116:VP8LInitBitReader 3117:VP8LColorIndexInverseTransformAlpha 3118:VP8InitIoInternal 3119:VP8InitBitReader 3120:UDatamemory_assign_73 3121:T_CString_toUpperCase_73 3122:TT_Vary_Apply_Glyph_Deltas 3123:TT_Set_Var_Design 3124:SkWuffsCodec::decodeFrame\28\29 3125:SkVertices::MakeCopy\28SkVertices::VertexMode\2c\20int\2c\20SkPoint\20const*\2c\20SkPoint\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20short\20const*\29 3126:SkVertices::Builder::texCoords\28\29 3127:SkVertices::Builder::positions\28\29 3128:SkVertices::Builder::init\28SkVertices::Desc\20const&\29 3129:SkVertices::Builder::colors\28\29 3130:SkVertices::Builder::Builder\28SkVertices::VertexMode\2c\20int\2c\20int\2c\20unsigned\20int\29 3131:SkUnicode_icu::extractPositions\28char\20const*\2c\20int\2c\20SkUnicode::BreakType\2c\20char\20const*\2c\20std::__2::function\20const&\29 3132:SkTypeface_FreeType::MakeFromStream\28std::__2::unique_ptr>\2c\20SkFontArguments\20const&\29 3133:SkTypeface::getTableSize\28unsigned\20int\29\20const 3134:SkTextBlobRunIterator::positioning\28\29\20const 3135:SkTSpan::splitAt\28SkTSpan*\2c\20double\2c\20SkArenaAlloc*\29 3136:SkTSect::computePerpendiculars\28SkTSect*\2c\20SkTSpan*\2c\20SkTSpan*\29 3137:SkTDStorage::insert\28int\29 3138:SkTDStorage::calculateSizeOrDie\28int\29::$_0::operator\28\29\28\29\20const 3139:SkTDPQueue::percolateDownIfNecessary\28int\29 3140:SkTConic::hullIntersects\28SkDConic\20const&\2c\20bool*\29\20const 3141:SkSurface_Base::SkSurface_Base\28int\2c\20int\2c\20SkSurfaceProps\20const*\29 3142:SkStrokerPriv::CapFactory\28SkPaint::Cap\29 3143:SkStrokeRec::getInflationRadius\28\29\20const 3144:SkString::equals\28char\20const*\29\20const 3145:SkStrikeSpec::MakeTransformMask\28SkFont\20const&\2c\20SkPaint\20const&\2c\20SkSurfaceProps\20const&\2c\20SkScalerContextFlags\2c\20SkMatrix\20const&\29 3146:SkStrikeSpec::MakePath\28SkFont\20const&\2c\20SkPaint\20const&\2c\20SkSurfaceProps\20const&\2c\20SkScalerContextFlags\29 3147:SkStrike::glyph\28SkGlyphDigest\29 3148:SkSpecialImages::AsView\28GrRecordingContext*\2c\20SkSpecialImage\20const*\29 3149:SkShapers::HB::ShapeDontWrapOrReorder\28sk_sp\2c\20sk_sp\29 3150:SkShaper::TrivialRunIterator::endOfCurrentRun\28\29\20const 3151:SkShaper::TrivialRunIterator::atEnd\28\29\20const 3152:SkShaper::MakeFontMgrRunIterator\28char\20const*\2c\20unsigned\20long\2c\20SkFont\20const&\2c\20sk_sp\29 3153:SkShadowTessellator::MakeAmbient\28SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkPoint3\20const&\2c\20bool\29 3154:SkScan::FillTriangle\28SkPoint\20const*\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 3155:SkScan::FillPath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 3156:SkScan::FillIRect\28SkIRect\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 3157:SkScan::AntiHairLine\28SkPoint\20const*\2c\20int\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 3158:SkScan::AntiFillPath\28SkPath\20const&\2c\20SkRegion\20const&\2c\20SkBlitter*\2c\20bool\29 3159:SkScalerContextFTUtils::drawSVGGlyph\28FT_FaceRec_*\2c\20SkGlyph\20const&\2c\20unsigned\20int\2c\20SkSpan\2c\20SkCanvas*\29\20const 3160:SkScalarInterpFunc\28float\2c\20float\20const*\2c\20float\20const*\2c\20int\29 3161:SkSLTypeString\28SkSLType\29 3162:SkSL::simplify_negation\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\29 3163:SkSL::simplify_matrix_multiplication\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\2c\20int\2c\20int\2c\20int\2c\20int\29 3164:SkSL::simplify_componentwise\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\29 3165:SkSL::build_argument_type_list\28SkSpan>\20const>\29 3166:SkSL::\28anonymous\20namespace\29::SwitchCaseContainsExit::visitStatement\28SkSL::Statement\20const&\29 3167:SkSL::\28anonymous\20namespace\29::ReturnsInputAlphaVisitor::returnsInputAlpha\28SkSL::Expression\20const&\29 3168:SkSL::\28anonymous\20namespace\29::ConstantExpressionVisitor::visitExpression\28SkSL::Expression\20const&\29 3169:SkSL::Variable::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Position\2c\20SkSL::Layout\20const&\2c\20SkSL::ModifierFlags\2c\20SkSL::Type\20const*\2c\20SkSL::Position\2c\20std::__2::basic_string_view>\2c\20SkSL::VariableStorage\29 3170:SkSL::Type::checkForOutOfRangeLiteral\28SkSL::Context\20const&\2c\20SkSL::Expression\20const&\29\20const 3171:SkSL::Type::MakeSamplerType\28char\20const*\2c\20SkSL::Type\20const&\29 3172:SkSL::SymbolTable::moveSymbolTo\28SkSL::SymbolTable*\2c\20SkSL::Symbol*\2c\20SkSL::Context\20const&\29 3173:SkSL::SymbolTable::isType\28std::__2::basic_string_view>\29\20const 3174:SkSL::Symbol::instantiate\28SkSL::Context\20const&\2c\20SkSL::Position\29\20const 3175:SkSL::SampleUsage::merge\28SkSL::SampleUsage\20const&\29 3176:SkSL::ReturnStatement::~ReturnStatement\28\29.1 3177:SkSL::ReturnStatement::~ReturnStatement\28\29 3178:SkSL::RP::UnownedLValueSlice::~UnownedLValueSlice\28\29 3179:SkSL::RP::Generator::pushTernaryExpression\28SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\29 3180:SkSL::RP::Generator::pushStructuredComparison\28SkSL::RP::LValue*\2c\20SkSL::Operator\2c\20SkSL::RP::LValue*\2c\20SkSL::Type\20const&\29 3181:SkSL::RP::Generator::pushMatrixMultiply\28SkSL::RP::LValue*\2c\20SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\2c\20int\2c\20int\2c\20int\2c\20int\29 3182:SkSL::RP::DynamicIndexLValue::~DynamicIndexLValue\28\29 3183:SkSL::RP::Builder::push_uniform\28SkSL::RP::SlotRange\29 3184:SkSL::RP::Builder::merge_condition_mask\28\29 3185:SkSL::RP::Builder::jump\28int\29 3186:SkSL::RP::Builder::branch_if_no_active_lanes_on_stack_top_equal\28int\2c\20int\29 3187:SkSL::ProgramUsage::add\28SkSL::ProgramElement\20const&\29 3188:SkSL::Pool::detachFromThread\28\29 3189:SkSL::PipelineStage::ConvertProgram\28SkSL::Program\20const&\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20SkSL::PipelineStage::Callbacks*\29 3190:SkSL::Parser::unaryExpression\28\29 3191:SkSL::Parser::swizzle\28SkSL::Position\2c\20std::__2::unique_ptr>\2c\20std::__2::basic_string_view>\2c\20SkSL::Position\29 3192:SkSL::Parser::block\28bool\2c\20std::__2::unique_ptr>*\29 3193:SkSL::Operator::getBinaryPrecedence\28\29\20const 3194:SkSL::ModuleLoader::loadGPUModule\28SkSL::Compiler*\29 3195:SkSL::ModifierFlags::checkPermittedFlags\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ModifierFlags\29\20const 3196:SkSL::Mangler::uniqueName\28std::__2::basic_string_view>\2c\20SkSL::SymbolTable*\29 3197:SkSL::LiteralType::slotType\28unsigned\20long\29\20const 3198:SkSL::Layout::operator==\28SkSL::Layout\20const&\29\20const 3199:SkSL::Layout::checkPermittedLayout\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkEnumBitMask\29\20const 3200:SkSL::Inliner::analyze\28std::__2::vector>\2c\20std::__2::allocator>>>\20const&\2c\20SkSL::SymbolTable*\2c\20SkSL::ProgramUsage*\29 3201:SkSL::GLSLCodeGenerator::~GLSLCodeGenerator\28\29 3202:SkSL::GLSLCodeGenerator::writeLiteral\28SkSL::Literal\20const&\29 3203:SkSL::GLSLCodeGenerator::writeFunctionDeclaration\28SkSL::FunctionDeclaration\20const&\29 3204:SkSL::ForStatement::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ForLoopPositions\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 3205:SkSL::FieldAccess::description\28SkSL::OperatorPrecedence\29\20const 3206:SkSL::Expression::isIncomplete\28SkSL::Context\20const&\29\20const 3207:SkSL::Expression::compareConstant\28SkSL::Expression\20const&\29\20const 3208:SkSL::DebugTracePriv::~DebugTracePriv\28\29 3209:SkSL::Context::Context\28SkSL::BuiltinTypes\20const&\2c\20SkSL::ErrorReporter&\29 3210:SkSL::ConstructorArrayCast::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>\29 3211:SkSL::ConstructorArray::~ConstructorArray\28\29 3212:SkSL::ConstructorArray::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray\29 3213:SkSL::Analysis::CheckProgramStructure\28SkSL::Program\20const&\2c\20bool\29::ProgramSizeVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 3214:SkSL::Analysis::CallsColorTransformIntrinsics\28SkSL::Program\20const&\29 3215:SkSL::AliasType::bitWidth\28\29\20const 3216:SkRuntimeEffectPriv::VarAsUniform\28SkSL::Variable\20const&\2c\20SkSL::Context\20const&\2c\20unsigned\20long*\29 3217:SkRuntimeEffectPriv::UniformsAsSpan\28SkSpan\2c\20sk_sp\2c\20bool\2c\20SkColorSpace\20const*\2c\20SkArenaAlloc*\29 3218:SkRuntimeEffect::source\28\29\20const 3219:SkRuntimeEffect::makeShader\28sk_sp\2c\20SkSpan\2c\20SkMatrix\20const*\29\20const 3220:SkRuntimeEffect::MakeForBlender\28SkString\2c\20SkRuntimeEffect::Options\20const&\29 3221:SkResourceCache::checkMessages\28\29 3222:SkResourceCache::NewCachedData\28unsigned\20long\29 3223:SkRegion::translate\28int\2c\20int\2c\20SkRegion*\29\20const 3224:SkReduceOrder::Cubic\28SkPoint\20const*\2c\20SkPoint*\29 3225:SkRectPriv::QuadContainsRectMask\28SkM44\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20float\29 3226:SkRectPriv::ClosestDisjointEdge\28SkIRect\20const&\2c\20SkIRect\20const&\29 3227:SkRecords::PreCachedPath::PreCachedPath\28SkPath\20const&\29 3228:SkRecords::FillBounds::pushSaveBlock\28SkPaint\20const*\29 3229:SkRecordDraw\28SkRecord\20const&\2c\20SkCanvas*\2c\20SkPicture\20const*\20const*\2c\20SkDrawable*\20const*\2c\20int\2c\20SkBBoxHierarchy\20const*\2c\20SkPicture::AbortCallback*\29 3230:SkReadBuffer::readPoint\28SkPoint*\29 3231:SkReadBuffer::readPath\28SkPath*\29 3232:SkReadBuffer::readByteArrayAsData\28\29 3233:SkReadBuffer::readArray\28void*\2c\20unsigned\20long\2c\20unsigned\20long\29 3234:SkRasterPipelineBlitter::~SkRasterPipelineBlitter\28\29 3235:SkRasterPipelineBlitter::blitRectWithTrace\28int\2c\20int\2c\20int\2c\20int\2c\20bool\29 3236:SkRasterPipelineBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 3237:SkRasterPipelineBlitter::Create\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkArenaAlloc*\2c\20SkRasterPipeline\20const&\2c\20bool\2c\20bool\2c\20SkShader\20const*\29 3238:SkRasterPipeline::appendLoad\28SkColorType\2c\20SkRasterPipeline_MemoryCtx\20const*\29 3239:SkRasterClip::op\28SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkClipOp\2c\20bool\29 3240:SkRRectPriv::ConservativeIntersect\28SkRRect\20const&\2c\20SkRRect\20const&\29 3241:SkRRect::scaleRadii\28\29 3242:SkRRect::AreRectAndRadiiValid\28SkRect\20const&\2c\20SkPoint\20const*\29 3243:SkRBuffer::skip\28unsigned\20long\29 3244:SkPngCodec::IsPng\28void\20const*\2c\20unsigned\20long\29 3245:SkPixmap::setColorSpace\28sk_sp\29 3246:SkPixelRef::~SkPixelRef\28\29 3247:SkPixelRef::notifyPixelsChanged\28\29 3248:SkPictureRecorder::beginRecording\28SkRect\20const&\2c\20sk_sp\29 3249:SkPictureRecord::addPathToHeap\28SkPath\20const&\29 3250:SkPictureData::getPath\28SkReadBuffer*\29\20const 3251:SkPicture::serialize\28SkWStream*\2c\20SkSerialProcs\20const*\2c\20SkRefCntSet*\2c\20bool\29\20const 3252:SkPathWriter::update\28SkOpPtT\20const*\29 3253:SkPathStroker::strokeCloseEnough\28SkPoint\20const*\2c\20SkPoint\20const*\2c\20SkQuadConstruct*\29\20const 3254:SkPathStroker::finishContour\28bool\2c\20bool\29 3255:SkPathRef::reset\28\29 3256:SkPathRef::isRRect\28SkRRect*\2c\20bool*\2c\20unsigned\20int*\29\20const 3257:SkPathRef::addGenIDChangeListener\28sk_sp\29 3258:SkPathPriv::IsRectContour\28SkPath\20const&\2c\20bool\2c\20int*\2c\20SkPoint\20const**\2c\20bool*\2c\20SkPathDirection*\2c\20SkRect*\29 3259:SkPathEffectBase::onAsPoints\28SkPathEffectBase::PointData*\2c\20SkPath\20const&\2c\20SkStrokeRec\20const&\2c\20SkMatrix\20const&\2c\20SkRect\20const*\29\20const 3260:SkPathEffect::filterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\29\20const 3261:SkPathBuilder::quadTo\28SkPoint\2c\20SkPoint\29 3262:SkPathBuilder::cubicTo\28SkPoint\2c\20SkPoint\2c\20SkPoint\29 3263:SkPath::writeToMemory\28void*\29\20const 3264:SkPath::reversePathTo\28SkPath\20const&\29 3265:SkPath::rQuadTo\28float\2c\20float\2c\20float\2c\20float\29 3266:SkPath::contains\28float\2c\20float\29\20const 3267:SkPath::arcTo\28float\2c\20float\2c\20float\2c\20SkPath::ArcSize\2c\20SkPathDirection\2c\20float\2c\20float\29 3268:SkPath::approximateBytesUsed\28\29\20const 3269:SkPath::addCircle\28float\2c\20float\2c\20float\2c\20SkPathDirection\29 3270:SkPath::Rect\28SkRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\29 3271:SkParsePath::ToSVGString\28SkPath\20const&\2c\20SkParsePath::PathEncoding\29::$_0::operator\28\29\28char\2c\20SkPoint\20const*\2c\20unsigned\20long\29\20const 3272:SkParse::FindScalar\28char\20const*\2c\20float*\29 3273:SkPairPathEffect::flatten\28SkWriteBuffer&\29\20const 3274:SkPaintToGrPaintWithBlend\28GrRecordingContext*\2c\20GrColorInfo\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\2c\20SkBlender*\2c\20SkSurfaceProps\20const&\2c\20GrPaint*\29 3275:SkPaint::refImageFilter\28\29\20const 3276:SkPaint::refBlender\28\29\20const 3277:SkPaint::getBlendMode_or\28SkBlendMode\29\20const 3278:SkPackARGB_as_RGBA\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 3279:SkPackARGB_as_BGRA\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 3280:SkOpSpan::setOppSum\28int\29 3281:SkOpSegment::markAndChaseWinding\28SkOpSpanBase*\2c\20SkOpSpanBase*\2c\20int\2c\20SkOpSpanBase**\29 3282:SkOpSegment::markAllDone\28\29 3283:SkOpSegment::activeWinding\28SkOpSpanBase*\2c\20SkOpSpanBase*\29 3284:SkOpPtT::contains\28SkOpSegment\20const*\29\20const 3285:SkOpEdgeBuilder::closeContour\28SkPoint\20const&\2c\20SkPoint\20const&\29 3286:SkOpCoincidence::releaseDeleted\28\29 3287:SkOpCoincidence::markCollapsed\28SkOpPtT*\29 3288:SkOpCoincidence::findOverlaps\28SkOpCoincidence*\29\20const 3289:SkOpCoincidence::expand\28\29 3290:SkOpCoincidence::apply\28\29 3291:SkOpAngle::orderable\28SkOpAngle*\29 3292:SkOpAngle::computeSector\28\29 3293:SkNullBlitter::~SkNullBlitter\28\29 3294:SkNoPixelsDevice::SkNoPixelsDevice\28SkIRect\20const&\2c\20SkSurfaceProps\20const&\2c\20sk_sp\29 3295:SkNoPixelsDevice::SkNoPixelsDevice\28SkIRect\20const&\2c\20SkSurfaceProps\20const&\29 3296:SkNoDestructor>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>>::SkNoDestructor\28skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>&&\29 3297:SkMessageBus::BufferFinishedMessage\2c\20GrDirectContext::DirectContextID\2c\20false>::Get\28\29 3298:SkMemoryStream::SkMemoryStream\28void\20const*\2c\20unsigned\20long\2c\20bool\29 3299:SkMemoryStream::SkMemoryStream\28sk_sp\29 3300:SkMatrixPriv::InverseMapRect\28SkMatrix\20const&\2c\20SkRect*\2c\20SkRect\20const&\29 3301:SkMatrix::setRotate\28float\29 3302:SkMatrix::setPolyToPoly\28SkPoint\20const*\2c\20SkPoint\20const*\2c\20int\29 3303:SkMatrix::postSkew\28float\2c\20float\29 3304:SkMatrix::invert\28SkMatrix*\29\20const 3305:SkMatrix::getMinScale\28\29\20const 3306:SkMatrix::getMinMaxScales\28float*\29\20const 3307:SkMaskBuilder::PrepareDestination\28int\2c\20int\2c\20SkMask\20const&\29 3308:SkMakeBitmapShaderForPaint\28SkPaint\20const&\2c\20SkBitmap\20const&\2c\20SkTileMode\2c\20SkTileMode\2c\20SkSamplingOptions\20const&\2c\20SkMatrix\20const*\2c\20SkCopyPixelsMode\29 3309:SkLineClipper::ClipLine\28SkPoint\20const*\2c\20SkRect\20const&\2c\20SkPoint*\2c\20bool\29 3310:SkJpegCodec::ReadHeader\28SkStream*\2c\20SkCodec**\2c\20JpegDecoderMgr**\2c\20std::__2::unique_ptr>\29 3311:SkJSONWriter::separator\28bool\29 3312:SkIntersections::intersectRay\28SkDQuad\20const&\2c\20SkDLine\20const&\29 3313:SkIntersections::intersectRay\28SkDLine\20const&\2c\20SkDLine\20const&\29 3314:SkIntersections::intersectRay\28SkDCubic\20const&\2c\20SkDLine\20const&\29 3315:SkIntersections::intersectRay\28SkDConic\20const&\2c\20SkDLine\20const&\29 3316:SkIntersections::cleanUpParallelLines\28bool\29 3317:SkImage_Raster::SkImage_Raster\28SkImageInfo\20const&\2c\20sk_sp\2c\20unsigned\20long\2c\20unsigned\20int\29 3318:SkImage_Ganesh::~SkImage_Ganesh\28\29 3319:SkImageShader::Make\28sk_sp\2c\20SkTileMode\2c\20SkTileMode\2c\20SkSamplingOptions\20const&\2c\20SkMatrix\20const*\2c\20bool\29 3320:SkImageInfo::Make\28SkISize\2c\20SkColorType\2c\20SkAlphaType\29 3321:SkImageInfo::MakeN32Premul\28SkISize\29 3322:SkImageGenerator::getPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\29 3323:SkImageGenerator::SkImageGenerator\28SkImageInfo\20const&\2c\20unsigned\20int\29 3324:SkImageFilters::MatrixTransform\28SkMatrix\20const&\2c\20SkSamplingOptions\20const&\2c\20sk_sp\29 3325:SkImageFilters::Blur\28float\2c\20float\2c\20SkTileMode\2c\20sk_sp\2c\20SkImageFilters::CropRect\20const&\29 3326:SkImageFilter_Base::getInputBounds\28skif::Mapping\20const&\2c\20skif::DeviceSpace\20const&\2c\20std::__2::optional>\29\20const 3327:SkImageFilter_Base::affectsTransparentBlack\28\29\20const 3328:SkImage::width\28\29\20const 3329:SkImage::readPixels\28GrDirectContext*\2c\20SkPixmap\20const&\2c\20int\2c\20int\2c\20SkImage::CachingHint\29\20const 3330:SkImage::hasMipmaps\28\29\20const 3331:SkIcuBreakIteratorCache::makeBreakIterator\28SkUnicode::BreakType\2c\20char\20const*\29 3332:SkIDChangeListener::List::add\28sk_sp\29 3333:SkGradientShader::MakeTwoPointConical\28SkPoint\20const&\2c\20float\2c\20SkPoint\20const&\2c\20float\2c\20SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20sk_sp\2c\20float\20const*\2c\20int\2c\20SkTileMode\2c\20SkGradientShader::Interpolation\20const&\2c\20SkMatrix\20const*\29 3334:SkGradientShader::MakeLinear\28SkPoint\20const*\2c\20SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20sk_sp\2c\20float\20const*\2c\20int\2c\20SkTileMode\2c\20SkGradientShader::Interpolation\20const&\2c\20SkMatrix\20const*\29 3335:SkGradientBaseShader::AppendInterpolatedToDstStages\28SkRasterPipeline*\2c\20SkArenaAlloc*\2c\20bool\2c\20SkGradientShader::Interpolation\20const&\2c\20SkColorSpace\20const*\2c\20SkColorSpace\20const*\29 3336:SkGlyph::setPath\28SkArenaAlloc*\2c\20SkScalerContext*\29 3337:SkGlyph::mask\28\29\20const 3338:SkFontScanner_FreeType::GetAxes\28FT_FaceRec_*\2c\20skia_private::STArray<4\2c\20SkFontScanner::AxisDefinition\2c\20true>*\29 3339:SkFontPriv::ApproximateTransformedTextSize\28SkFont\20const&\2c\20SkMatrix\20const&\2c\20SkPoint\20const&\29 3340:SkFontMgr::matchFamily\28char\20const*\29\20const 3341:SkFindCubicMaxCurvature\28SkPoint\20const*\2c\20float*\29 3342:SkEncodedInfo::ICCProfile::Make\28sk_sp\29 3343:SkEmptyFontMgr::onMatchFamilyStyleCharacter\28char\20const*\2c\20SkFontStyle\20const&\2c\20char\20const**\2c\20int\2c\20int\29\20const 3344:SkEdge::setLine\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkIRect\20const*\2c\20int\29 3345:SkDynamicMemoryWStream::padToAlign4\28\29 3346:SkDrawable::SkDrawable\28\29 3347:SkDrawBase::drawRRect\28SkRRect\20const&\2c\20SkPaint\20const&\29\20const 3348:SkDrawBase::drawDevicePoints\28SkCanvas::PointMode\2c\20unsigned\20long\2c\20SkPoint\20const*\2c\20SkPaint\20const&\2c\20SkDevice*\29\20const 3349:SkDraw::drawBitmap\28SkBitmap\20const&\2c\20SkMatrix\20const&\2c\20SkRect\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\29\20const 3350:SkDevice::simplifyGlyphRunRSXFormAndRedraw\28SkCanvas*\2c\20sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\29 3351:SkDevice::drawFilteredImage\28skif::Mapping\20const&\2c\20SkSpecialImage*\2c\20SkColorType\2c\20SkImageFilter\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\29 3352:SkDevice::SkDevice\28SkImageInfo\20const&\2c\20SkSurfaceProps\20const&\29 3353:SkDataTable::at\28int\2c\20unsigned\20long*\29\20const 3354:SkData::MakeZeroInitialized\28unsigned\20long\29 3355:SkData::MakeFromStream\28SkStream*\2c\20unsigned\20long\29 3356:SkDQuad::dxdyAtT\28double\29\20const 3357:SkDQuad::RootsReal\28double\2c\20double\2c\20double\2c\20double*\29 3358:SkDQuad::FindExtrema\28double\20const*\2c\20double*\29 3359:SkDCubic::subDivide\28double\2c\20double\29\20const 3360:SkDCubic::searchRoots\28double*\2c\20int\2c\20double\2c\20SkDCubic::SearchAxis\2c\20double*\29\20const 3361:SkDCubic::Coefficients\28double\20const*\2c\20double*\2c\20double*\2c\20double*\2c\20double*\29 3362:SkDConic::dxdyAtT\28double\29\20const 3363:SkDConic::FindExtrema\28double\20const*\2c\20float\2c\20double*\29 3364:SkCopyStreamToData\28SkStream*\29 3365:SkContourMeasure_segTo\28SkPoint\20const*\2c\20unsigned\20int\2c\20float\2c\20float\2c\20SkPath*\29 3366:SkContourMeasureIter::next\28\29 3367:SkContourMeasureIter::Impl::compute_quad_segs\28SkPoint\20const*\2c\20float\2c\20int\2c\20int\2c\20unsigned\20int\2c\20int\29 3368:SkContourMeasureIter::Impl::compute_cubic_segs\28SkPoint\20const*\2c\20float\2c\20int\2c\20int\2c\20unsigned\20int\2c\20int\29 3369:SkContourMeasureIter::Impl::compute_conic_segs\28SkConic\20const&\2c\20float\2c\20int\2c\20SkPoint\20const&\2c\20int\2c\20SkPoint\20const&\2c\20unsigned\20int\2c\20int\29 3370:SkContourMeasure::getPosTan\28float\2c\20SkPoint*\2c\20SkPoint*\29\20const 3371:SkConic::evalAt\28float\29\20const 3372:SkConic::TransformW\28SkPoint\20const*\2c\20float\2c\20SkMatrix\20const&\29 3373:SkColorToPMColor4f\28unsigned\20int\2c\20GrColorInfo\20const&\29 3374:SkColorSpaceLuminance::Fetch\28float\29 3375:SkColorSpace::transferFn\28skcms_TransferFunction*\29\20const 3376:SkColorSpace::toXYZD50\28skcms_Matrix3x3*\29\20const 3377:SkColorPalette::SkColorPalette\28unsigned\20int\20const*\2c\20int\29 3378:SkColorFilters::Blend\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20sk_sp\2c\20SkBlendMode\29 3379:SkColor4fPrepForDst\28SkRGBA4f<\28SkAlphaType\293>\2c\20GrColorInfo\20const&\29 3380:SkCodec::startIncrementalDecode\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const*\29 3381:SkChopMonoCubicAtY\28SkPoint\20const*\2c\20float\2c\20SkPoint*\29 3382:SkChopCubicAt\28SkPoint\20const*\2c\20SkPoint*\2c\20float\2c\20float\29 3383:SkCanvas::setMatrix\28SkM44\20const&\29 3384:SkCanvas::scale\28float\2c\20float\29 3385:SkCanvas::private_draw_shadow_rec\28SkPath\20const&\2c\20SkDrawShadowRec\20const&\29 3386:SkCanvas::onResetClip\28\29 3387:SkCanvas::onClipShader\28sk_sp\2c\20SkClipOp\29 3388:SkCanvas::onClipRegion\28SkRegion\20const&\2c\20SkClipOp\29 3389:SkCanvas::onClipRect\28SkRect\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 3390:SkCanvas::onClipRRect\28SkRRect\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 3391:SkCanvas::onClipPath\28SkPath\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 3392:SkCanvas::internal_private_resetClip\28\29 3393:SkCanvas::internalSaveLayer\28SkCanvas::SaveLayerRec\20const&\2c\20SkCanvas::SaveLayerStrategy\2c\20bool\29 3394:SkCanvas::experimental_DrawEdgeAAImageSet\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 3395:SkCanvas::drawRRect\28SkRRect\20const&\2c\20SkPaint\20const&\29 3396:SkCanvas::drawPoints\28SkCanvas::PointMode\2c\20unsigned\20long\2c\20SkPoint\20const*\2c\20SkPaint\20const&\29 3397:SkCanvas::drawPatch\28SkPoint\20const*\2c\20unsigned\20int\20const*\2c\20SkPoint\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 3398:SkCanvas::drawOval\28SkRect\20const&\2c\20SkPaint\20const&\29 3399:SkCanvas::drawDRRect\28SkRRect\20const&\2c\20SkRRect\20const&\2c\20SkPaint\20const&\29 3400:SkCanvas::drawArc\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 3401:SkCanvas::clipRRect\28SkRRect\20const&\2c\20SkClipOp\2c\20bool\29 3402:SkCanvas::SkCanvas\28SkIRect\20const&\29 3403:SkCachedData::~SkCachedData\28\29 3404:SkCTMShader::~SkCTMShader\28\29.1 3405:SkBmpRLECodec::setPixel\28void*\2c\20unsigned\20long\2c\20SkImageInfo\20const&\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20char\29 3406:SkBmpCodec::prepareToDecode\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\29 3407:SkBlurMaskFilterImpl::computeXformedSigma\28SkMatrix\20const&\29\20const 3408:SkBlitterClipper::apply\28SkBlitter*\2c\20SkRegion\20const*\2c\20SkIRect\20const*\29 3409:SkBlitter::blitRegion\28SkRegion\20const&\29 3410:SkBitmapDevice::BDDraw::~BDDraw\28\29 3411:SkBitmapCacheDesc::Make\28SkImage\20const*\29 3412:SkBitmap::writePixels\28SkPixmap\20const&\2c\20int\2c\20int\29 3413:SkBitmap::setPixels\28void*\29 3414:SkBitmap::pixelRefOrigin\28\29\20const 3415:SkBitmap::notifyPixelsChanged\28\29\20const 3416:SkBitmap::isImmutable\28\29\20const 3417:SkBitmap::allocPixels\28\29 3418:SkBinaryWriteBuffer::writeScalarArray\28float\20const*\2c\20unsigned\20int\29 3419:SkBaseShadowTessellator::~SkBaseShadowTessellator\28\29.1 3420:SkBaseShadowTessellator::handleCubic\28SkMatrix\20const&\2c\20SkPoint*\29 3421:SkBaseShadowTessellator::handleConic\28SkMatrix\20const&\2c\20SkPoint*\2c\20float\29 3422:SkAutoPathBoundsUpdate::SkAutoPathBoundsUpdate\28SkPath*\2c\20SkRect\20const&\29 3423:SkAutoDescriptor::SkAutoDescriptor\28SkAutoDescriptor&&\29 3424:SkArenaAllocWithReset::SkArenaAllocWithReset\28char*\2c\20unsigned\20long\2c\20unsigned\20long\29 3425:SkAnimatedImage::decodeNextFrame\28\29 3426:SkAnimatedImage::Frame::copyTo\28SkAnimatedImage::Frame*\29\20const 3427:SkAnalyticQuadraticEdge::updateQuadratic\28\29 3428:SkAnalyticCubicEdge::updateCubic\28bool\29 3429:SkAlphaRuns::reset\28int\29 3430:SkAAClip::setRect\28SkIRect\20const&\29 3431:Simplify\28SkPath\20const&\2c\20SkPath*\29 3432:ReconstructRow 3433:R.1 3434:OpAsWinding::nextEdge\28Contour&\2c\20OpAsWinding::Edge\29 3435:OT::sbix::sanitize\28hb_sanitize_context_t*\29\20const 3436:OT::post::accelerator_t::cmp_gids\28void\20const*\2c\20void\20const*\2c\20void*\29 3437:OT::gvar::sanitize_shallow\28hb_sanitize_context_t*\29\20const 3438:OT::fvar::sanitize\28hb_sanitize_context_t*\29\20const 3439:OT::cmap::sanitize\28hb_sanitize_context_t*\29\20const 3440:OT::cmap::accelerator_t::accelerator_t\28hb_face_t*\29 3441:OT::cff2::accelerator_templ_t>::~accelerator_templ_t\28\29 3442:OT::avar::sanitize\28hb_sanitize_context_t*\29\20const 3443:OT::VarRegionList::evaluate\28unsigned\20int\2c\20int\20const*\2c\20unsigned\20int\2c\20float*\29\20const 3444:OT::Rule::apply\28OT::hb_ot_apply_context_t*\2c\20OT::ContextApplyLookupContext\20const&\29\20const 3445:OT::OpenTypeFontFile::sanitize\28hb_sanitize_context_t*\29\20const 3446:OT::MVAR::sanitize\28hb_sanitize_context_t*\29\20const 3447:OT::Layout::GSUB_impl::SubstLookup::serialize_ligature\28hb_serialize_context_t*\2c\20unsigned\20int\2c\20hb_sorted_array_t\2c\20hb_array_t\2c\20hb_array_t\2c\20hb_array_t\2c\20hb_array_t\29 3448:OT::Layout::GPOS_impl::MarkArray::apply\28OT::hb_ot_apply_context_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20OT::Layout::GPOS_impl::AnchorMatrix\20const&\2c\20unsigned\20int\2c\20unsigned\20int\29\20const 3449:OT::GDEFVersion1_2::sanitize\28hb_sanitize_context_t*\29\20const 3450:OT::Device::get_y_delta\28hb_font_t*\2c\20OT::VariationStore\20const&\2c\20float*\29\20const 3451:OT::Device::get_x_delta\28hb_font_t*\2c\20OT::VariationStore\20const&\2c\20float*\29\20const 3452:OT::ClipList::get_extents\28unsigned\20int\2c\20hb_glyph_extents_t*\2c\20OT::VarStoreInstancer\20const&\29\20const 3453:OT::ChainRule::apply\28OT::hb_ot_apply_context_t*\2c\20OT::ChainContextApplyLookupContext\20const&\29\20const 3454:OT::CPAL::sanitize\28hb_sanitize_context_t*\29\20const 3455:OT::COLR::sanitize\28hb_sanitize_context_t*\29\20const 3456:OT::COLR::paint_glyph\28hb_font_t*\2c\20unsigned\20int\2c\20hb_paint_funcs_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20bool\29\20const 3457:MakeRasterCopyPriv\28SkPixmap\20const&\2c\20unsigned\20int\29 3458:LineQuadraticIntersections::pinTs\28double*\2c\20double*\2c\20SkDPoint*\2c\20LineQuadraticIntersections::PinTPoint\29 3459:LineQuadraticIntersections::checkCoincident\28\29 3460:LineQuadraticIntersections::addLineNearEndPoints\28\29 3461:LineCubicIntersections::pinTs\28double*\2c\20double*\2c\20SkDPoint*\2c\20LineCubicIntersections::PinTPoint\29 3462:LineCubicIntersections::checkCoincident\28\29 3463:LineCubicIntersections::addLineNearEndPoints\28\29 3464:LineConicIntersections::pinTs\28double*\2c\20double*\2c\20SkDPoint*\2c\20LineConicIntersections::PinTPoint\29 3465:LineConicIntersections::checkCoincident\28\29 3466:LineConicIntersections::addLineNearEndPoints\28\29 3467:GrXferProcessor::GrXferProcessor\28GrProcessor::ClassID\29 3468:GrVertexChunkBuilder::~GrVertexChunkBuilder\28\29 3469:GrTriangulator::tessellate\28GrTriangulator::VertexList\20const&\2c\20GrTriangulator::Comparator\20const&\29 3470:GrTriangulator::splitEdge\28GrTriangulator::Edge*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Comparator\20const&\29 3471:GrTriangulator::pathToPolys\28float\2c\20SkRect\20const&\2c\20bool*\29 3472:GrTriangulator::generateCubicPoints\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20GrTriangulator::VertexList*\2c\20int\29\20const 3473:GrTriangulator::emitTriangle\28GrTriangulator::Vertex*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::Vertex*\2c\20int\2c\20skgpu::VertexWriter\29\20const 3474:GrTriangulator::checkForIntersection\28GrTriangulator::Edge*\2c\20GrTriangulator::Edge*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::VertexList*\2c\20GrTriangulator::Comparator\20const&\29 3475:GrTriangulator::applyFillType\28int\29\20const 3476:GrTriangulator::EdgeList::insert\28GrTriangulator::Edge*\2c\20GrTriangulator::Edge*\29 3477:GrTriangulator::Edge::insertBelow\28GrTriangulator::Vertex*\2c\20GrTriangulator::Comparator\20const&\29 3478:GrTriangulator::Edge::insertAbove\28GrTriangulator::Vertex*\2c\20GrTriangulator::Comparator\20const&\29 3479:GrToGLStencilFunc\28GrStencilTest\29 3480:GrThreadSafeCache::dropAllRefs\28\29 3481:GrTextureRenderTargetProxy::callbackDesc\28\29\20const 3482:GrTexture::GrTexture\28GrGpu*\2c\20SkISize\20const&\2c\20skgpu::Protected\2c\20GrTextureType\2c\20GrMipmapStatus\2c\20std::__2::basic_string_view>\29 3483:GrTexture::ComputeScratchKey\28GrCaps\20const&\2c\20GrBackendFormat\20const&\2c\20SkISize\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20skgpu::ScratchKey*\29 3484:GrSurfaceProxyView::asTextureProxyRef\28\29\20const 3485:GrSurfaceProxy::GrSurfaceProxy\28std::__2::function&&\2c\20GrBackendFormat\20const&\2c\20SkISize\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20GrInternalSurfaceFlags\2c\20GrSurfaceProxy::UseAllocator\2c\20std::__2::basic_string_view>\29 3486:GrSurfaceProxy::GrSurfaceProxy\28sk_sp\2c\20SkBackingFit\2c\20GrSurfaceProxy::UseAllocator\29 3487:GrSurface::setRelease\28sk_sp\29 3488:GrStyledShape::styledBounds\28\29\20const 3489:GrStyledShape::asLine\28SkPoint*\2c\20bool*\29\20const 3490:GrStyledShape::addGenIDChangeListener\28sk_sp\29\20const 3491:GrSimpleMeshDrawOpHelper::fixedFunctionFlags\28\29\20const 3492:GrShape::setRect\28SkRect\20const&\29 3493:GrShape::setRRect\28SkRRect\20const&\29 3494:GrResourceProvider::assignUniqueKeyToResource\28skgpu::UniqueKey\20const&\2c\20GrGpuResource*\29 3495:GrResourceCache::releaseAll\28\29 3496:GrResourceCache::getNextTimestamp\28\29 3497:GrRenderTask::addDependency\28GrRenderTask*\29 3498:GrRenderTargetProxy::canUseStencil\28GrCaps\20const&\29\20const 3499:GrRecordingContextPriv::addOnFlushCallbackObject\28GrOnFlushCallbackObject*\29 3500:GrRecordingContext::~GrRecordingContext\28\29 3501:GrRecordingContext::abandonContext\28\29 3502:GrQuadUtils::TessellationHelper::Vertices::moveTo\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20int>\20const&\29 3503:GrQuadUtils::TessellationHelper::EdgeEquations::reset\28GrQuadUtils::TessellationHelper::EdgeVectors\20const&\29 3504:GrQuadUtils::ResolveAAType\28GrAAType\2c\20GrQuadAAFlags\2c\20GrQuad\20const&\2c\20GrAAType*\2c\20GrQuadAAFlags*\29 3505:GrQuadBuffer<\28anonymous\20namespace\29::FillRectOpImpl::ColorAndAA>::append\28GrQuad\20const&\2c\20\28anonymous\20namespace\29::FillRectOpImpl::ColorAndAA&&\2c\20GrQuad\20const*\29 3506:GrPixmap::GrPixmap\28GrImageInfo\2c\20void*\2c\20unsigned\20long\29 3507:GrPipeline::GrPipeline\28GrPipeline::InitArgs\20const&\2c\20GrProcessorSet&&\2c\20GrAppliedClip&&\29 3508:GrPersistentCacheUtils::UnpackCachedShaders\28SkReadBuffer*\2c\20std::__2::basic_string\2c\20std::__2::allocator>*\2c\20SkSL::ProgramInterface*\2c\20int\2c\20GrPersistentCacheUtils::ShaderMetadata*\29 3509:GrPathUtils::convertCubicToQuads\28SkPoint\20const*\2c\20float\2c\20skia_private::TArray*\29 3510:GrPathTessellationShader::Make\28GrShaderCaps\20const&\2c\20SkArenaAlloc*\2c\20SkMatrix\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20skgpu::tess::PatchAttribs\29 3511:GrOp::chainConcat\28std::__2::unique_ptr>\29 3512:GrOp::GenOpClassID\28\29 3513:GrMeshDrawOp::PatternHelper::PatternHelper\28GrMeshDrawTarget*\2c\20GrPrimitiveType\2c\20unsigned\20long\2c\20sk_sp\2c\20int\2c\20int\2c\20int\2c\20int\29 3514:GrMemoryPool::Make\28unsigned\20long\2c\20unsigned\20long\29 3515:GrMakeKeyFromImageID\28skgpu::UniqueKey*\2c\20unsigned\20int\2c\20SkIRect\20const&\29 3516:GrImageInfo::GrImageInfo\28GrColorInfo\20const&\2c\20SkISize\20const&\29 3517:GrGpuResource::removeScratchKey\28\29 3518:GrGpuResource::registerWithCacheWrapped\28GrWrapCacheable\29 3519:GrGpuResource::dumpMemoryStatisticsPriv\28SkTraceMemoryDump*\2c\20SkString\20const&\2c\20char\20const*\2c\20unsigned\20long\29\20const 3520:GrGpuBuffer::onGpuMemorySize\28\29\20const 3521:GrGpu::resolveRenderTarget\28GrRenderTarget*\2c\20SkIRect\20const&\29 3522:GrGpu::executeFlushInfo\28SkSpan\2c\20SkSurfaces::BackendSurfaceAccess\2c\20GrFlushInfo\20const&\2c\20skgpu::MutableTextureState\20const*\29 3523:GrGeometryProcessor::TextureSampler::TextureSampler\28GrSamplerState\2c\20GrBackendFormat\20const&\2c\20skgpu::Swizzle\20const&\29 3524:GrGeometryProcessor::ProgramImpl::ComputeMatrixKeys\28GrShaderCaps\20const&\2c\20SkMatrix\20const&\2c\20SkMatrix\20const&\29 3525:GrGLUniformHandler::getUniformVariable\28GrResourceHandle\29\20const 3526:GrGLTextureRenderTarget::~GrGLTextureRenderTarget\28\29.1 3527:GrGLSemaphore::GrGLSemaphore\28GrGLGpu*\2c\20bool\29 3528:GrGLSLVaryingHandler::~GrGLSLVaryingHandler\28\29 3529:GrGLSLShaderBuilder::emitFunction\28SkSLType\2c\20char\20const*\2c\20SkSpan\2c\20char\20const*\29 3530:GrGLSLProgramDataManager::setSkMatrix\28GrResourceHandle\2c\20SkMatrix\20const&\29\20const 3531:GrGLSLProgramBuilder::writeFPFunction\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29 3532:GrGLSLProgramBuilder::invokeFP\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl\20const&\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\29\20const 3533:GrGLSLProgramBuilder::addRTFlipUniform\28char\20const*\29 3534:GrGLSLFragmentShaderBuilder::dstColor\28\29 3535:GrGLSLBlend::BlendKey\28SkBlendMode\29 3536:GrGLProgramBuilder::~GrGLProgramBuilder\28\29 3537:GrGLProgramBuilder::computeCountsAndStrides\28unsigned\20int\2c\20GrGeometryProcessor\20const&\2c\20bool\29 3538:GrGLGpu::flushScissor\28GrScissorState\20const&\2c\20int\2c\20GrSurfaceOrigin\29 3539:GrGLGpu::flushClearColor\28std::__2::array\29 3540:GrGLGpu::deleteFence\28__GLsync*\29 3541:GrGLGpu::createTexture\28SkISize\2c\20GrGLFormat\2c\20unsigned\20int\2c\20skgpu::Renderable\2c\20GrGLTextureParameters::SamplerOverriddenState*\2c\20int\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 3542:GrGLGpu::copySurfaceAsDraw\28GrSurface*\2c\20bool\2c\20GrSurface*\2c\20SkIRect\20const&\2c\20SkIRect\20const&\2c\20SkFilterMode\29 3543:GrGLGpu::SamplerObjectCache::~SamplerObjectCache\28\29 3544:GrGLGpu::HWVertexArrayState::bindInternalVertexArray\28GrGLGpu*\2c\20GrBuffer\20const*\29 3545:GrGLFunction::GrGLFunction\28void\20\28*\29\28unsigned\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\29\29::'lambda'\28void\20const*\2c\20unsigned\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\29::__invoke\28void\20const*\2c\20unsigned\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\29 3546:GrGLFinishCallbacks::callAll\28bool\29 3547:GrGLBuffer::Make\28GrGLGpu*\2c\20unsigned\20long\2c\20GrGpuBufferType\2c\20GrAccessPattern\29 3548:GrGLAttribArrayState::enableVertexArrays\28GrGLGpu\20const*\2c\20int\2c\20GrPrimitiveRestart\29 3549:GrFragmentProcessors::make_effect_fp\28sk_sp\2c\20char\20const*\2c\20sk_sp\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20SkSpan\2c\20GrFPArgs\20const&\29 3550:GrFragmentProcessors::MakeChildFP\28SkRuntimeEffect::ChildPtr\20const&\2c\20GrFPArgs\20const&\29 3551:GrFragmentProcessors::IsSupported\28SkMaskFilter\20const*\29 3552:GrFragmentProcessor::makeProgramImpl\28\29\20const 3553:GrFragmentProcessor::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 3554:GrFragmentProcessor::MulInputByChildAlpha\28std::__2::unique_ptr>\29 3555:GrFragmentProcessor::HighPrecision\28std::__2::unique_ptr>\29::HighPrecisionFragmentProcessor::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 3556:GrFragmentProcessor::DeviceSpace\28std::__2::unique_ptr>\29 3557:GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 3558:GrDynamicAtlas::makeNode\28GrDynamicAtlas::Node*\2c\20int\2c\20int\2c\20int\2c\20int\29 3559:GrDrawingManager::setLastRenderTask\28GrSurfaceProxy\20const*\2c\20GrRenderTask*\29 3560:GrDrawingManager::flushSurfaces\28SkSpan\2c\20SkSurfaces::BackendSurfaceAccess\2c\20GrFlushInfo\20const&\2c\20skgpu::MutableTextureState\20const*\29 3561:GrDrawOpAtlas::updatePlot\28GrDeferredUploadTarget*\2c\20skgpu::AtlasLocator*\2c\20skgpu::Plot*\29 3562:GrDirectContext::resetContext\28unsigned\20int\29 3563:GrDirectContext::getResourceCacheLimit\28\29\20const 3564:GrDefaultGeoProcFactory::MakeForDeviceSpace\28SkArenaAlloc*\2c\20GrDefaultGeoProcFactory::Color\20const&\2c\20GrDefaultGeoProcFactory::Coverage\20const&\2c\20GrDefaultGeoProcFactory::LocalCoords\20const&\2c\20SkMatrix\20const&\29 3565:GrColorSpaceXformEffect::Make\28std::__2::unique_ptr>\2c\20sk_sp\29 3566:GrColorSpaceXform::apply\28SkRGBA4f<\28SkAlphaType\293>\20const&\29 3567:GrColorSpaceXform::Equals\28GrColorSpaceXform\20const*\2c\20GrColorSpaceXform\20const*\29 3568:GrBufferAllocPool::unmap\28\29 3569:GrBlurUtils::can_filter_mask\28SkMaskFilterBase\20const*\2c\20GrStyledShape\20const&\2c\20SkIRect\20const&\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkIRect*\29 3570:GrBicubicEffect::MakeSubset\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkMatrix\20const&\2c\20GrSamplerState::WrapMode\2c\20GrSamplerState::WrapMode\2c\20SkRect\20const&\2c\20SkCubicResampler\2c\20GrBicubicEffect::Direction\2c\20GrCaps\20const&\29 3571:GrBackendTextures::MakeGL\28int\2c\20int\2c\20skgpu::Mipmapped\2c\20GrGLTextureInfo\20const&\2c\20sk_sp\2c\20std::__2::basic_string_view>\29 3572:GrBackendFormatStencilBits\28GrBackendFormat\20const&\29 3573:GrBackendFormat::asMockCompressionType\28\29\20const 3574:GrAATriangulator::~GrAATriangulator\28\29 3575:GrAATriangulator::makeEvent\28GrAATriangulator::SSEdge*\2c\20GrAATriangulator::EventList*\29\20const 3576:GrAAConvexTessellator::fanRing\28GrAAConvexTessellator::Ring\20const&\29 3577:GrAAConvexTessellator::computePtAlongBisector\28int\2c\20SkPoint\20const&\2c\20int\2c\20float\2c\20SkPoint*\29\20const 3578:FT_Stream_ReadAt 3579:FT_Stream_OpenMemory 3580:FT_Set_Char_Size 3581:FT_Request_Metrics 3582:FT_Hypot 3583:FT_Get_Var_Design_Coordinates 3584:FT_Get_Paint 3585:FT_Get_MM_Var 3586:DecodeImageData 3587:Cr_z_inflate_table 3588:Cr_z_inflateReset 3589:Cr_z_deflateEnd 3590:Cr_z_copy_with_crc 3591:Compute_Point_Displacement 3592:AAT::trak::sanitize\28hb_sanitize_context_t*\29\20const 3593:AAT::ltag::sanitize\28hb_sanitize_context_t*\29\20const 3594:AAT::feat::sanitize\28hb_sanitize_context_t*\29\20const 3595:AAT::StateTable::sanitize\28hb_sanitize_context_t*\2c\20unsigned\20int*\29\20const 3596:AAT::Lookup>\2c\20OT::IntType\2c\20false>>::sanitize\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 3597:AAT::KerxTable::sanitize\28hb_sanitize_context_t*\29\20const 3598:AAT::KerxTable::sanitize\28hb_sanitize_context_t*\29\20const 3599:AAT::KerxTable::sanitize\28hb_sanitize_context_t*\29\20const 3600:zeroinfnan 3601:xyz_almost_equal\28skcms_Matrix3x3\20const&\2c\20skcms_Matrix3x3\20const&\29 3602:wuffs_lzw__decoder__transform_io 3603:wuffs_gif__decoder__set_quirk_enabled 3604:wuffs_gif__decoder__restart_frame 3605:wuffs_gif__decoder__num_animation_loops 3606:wuffs_gif__decoder__frame_dirty_rect 3607:wuffs_gif__decoder__decode_up_to_id_part1 3608:wuffs_gif__decoder__decode_frame 3609:write_vertex_position\28GrGLSLVertexBuilder*\2c\20GrGLSLUniformHandler*\2c\20GrShaderCaps\20const&\2c\20GrShaderVar\20const&\2c\20SkMatrix\20const&\2c\20char\20const*\2c\20GrShaderVar*\2c\20GrResourceHandle*\29 3610:write_text_tag\28char\20const*\29 3611:write_passthrough_vertex_position\28GrGLSLVertexBuilder*\2c\20GrShaderVar\20const&\2c\20GrShaderVar*\29 3612:write_mAB_or_mBA_tag\28unsigned\20int\2c\20skcms_Curve\20const*\2c\20skcms_Curve\20const*\2c\20unsigned\20char\20const*\2c\20unsigned\20char\20const*\2c\20skcms_Curve\20const*\2c\20skcms_Matrix3x4\20const*\29 3613:wctomb 3614:wchar_t*\20std::__2::copy\5babi:v160004\5d\2c\20wchar_t*>\28std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\2c\20wchar_t*\29 3615:walk_simple_edges\28SkEdge*\2c\20SkBlitter*\2c\20int\2c\20int\29 3616:vsscanf 3617:void\20std::__2::vector>::__emplace_back_slow_path&\2c\20SkSpan&\2c\20SkSpan&\2c\20SkSpan&\2c\20SkSpan&>\28SkFont\20const&\2c\20SkSpan&\2c\20SkSpan&\2c\20SkSpan&\2c\20SkSpan&\2c\20SkSpan&\29 3618:void\20std::__2::vector>::assign\28skia::textlayout::FontFeature*\2c\20skia::textlayout::FontFeature*\29 3619:void\20std::__2::vector\2c\20std::__2::allocator>>::__emplace_back_slow_path>\28sk_sp&&\29 3620:void\20std::__2::vector>::assign\28SkString*\2c\20SkString*\29 3621:void\20std::__2::vector>::__emplace_back_slow_path\28char\20const*&\29 3622:void\20std::__2::vector>::__push_back_slow_path\28SkSL::FunctionDebugInfo&&\29 3623:void\20std::__2::vector>::__push_back_slow_path\28SkMeshSpecification::Varying&&\29 3624:void\20std::__2::vector>::__push_back_slow_path\28SkMeshSpecification::Attribute&&\29 3625:void\20std::__2::vector>::assign\28SkFontArguments::VariationPosition::Coordinate*\2c\20SkFontArguments::VariationPosition::Coordinate*\29 3626:void\20std::__2::vector>::__emplace_back_slow_path\28SkRect&\2c\20int&\2c\20int&\29 3627:void\20std::__2::allocator_traits>::construct\5babi:v160004\5d\28std::__2::__sso_allocator&\2c\20std::__2::locale::facet**\29 3628:void\20std::__2::__tree_balance_after_insert\5babi:v160004\5d*>\28std::__2::__tree_node_base*\2c\20std::__2::__tree_node_base*\29 3629:void\20std::__2::__stable_sort_move\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::'lambda'\28\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\29&\2c\20std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>\28std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>\2c\20std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::'lambda'\28\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\29&\2c\20std::__2::iterator_traits\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>::difference_type\2c\20std::__2::iterator_traits\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>::value_type*\29 3630:void\20std::__2::__sift_up\5babi:v160004\5d*>>\28std::__2::__wrap_iter*>\2c\20std::__2::__wrap_iter*>\2c\20GrGeometryProcessor::ProgramImpl::emitTransformCode\28GrGLSLVertexBuilder*\2c\20GrGLSLUniformHandler*\29::$_0&\2c\20std::__2::iterator_traits*>>::difference_type\29 3631:void\20std::__2::__optional_storage_base::__assign_from\5babi:v160004\5d\20const&>\28std::__2::__optional_copy_assign_base\20const&\29 3632:void\20std::__2::__double_or_nothing\5babi:v160004\5d\28std::__2::unique_ptr&\2c\20char*&\2c\20char*&\29 3633:void\20sorted_merge<&sweep_lt_vert\28SkPoint\20const&\2c\20SkPoint\20const&\29>\28GrTriangulator::VertexList*\2c\20GrTriangulator::VertexList*\2c\20GrTriangulator::VertexList*\29 3634:void\20sorted_merge<&sweep_lt_horiz\28SkPoint\20const&\2c\20SkPoint\20const&\29>\28GrTriangulator::VertexList*\2c\20GrTriangulator::VertexList*\2c\20GrTriangulator::VertexList*\29 3635:void\20sort_r_simple<>\28void*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\20\28*\29\28void\20const*\2c\20void\20const*\29\29.1 3636:void\20skgpu::ganesh::SurfaceFillContext::clear<\28SkAlphaType\292>\28SkRGBA4f<\28SkAlphaType\292>\20const&\29 3637:void\20emscripten::internal::raw_destructor>\28sk_sp*\29 3638:void\20emscripten::internal::MemberAccess>::setWire\28sk_sp\20SkRuntimeEffect::TracedShader::*\20const&\2c\20SkRuntimeEffect::TracedShader&\2c\20sk_sp*\29 3639:void\20emscripten::internal::MemberAccess::setWire\28SimpleFontStyle\20SimpleStrutStyle::*\20const&\2c\20SimpleStrutStyle&\2c\20SimpleFontStyle*\29 3640:void\20\28anonymous\20namespace\29::copyFT2LCD16\28FT_Bitmap_\20const&\2c\20SkMaskBuilder*\2c\20int\2c\20unsigned\20char\20const*\2c\20unsigned\20char\20const*\2c\20unsigned\20char\20const*\29 3641:void\20SkTIntroSort\28int\2c\20int*\2c\20int\2c\20DistanceLessThan\20const&\29 3642:void\20SkTIntroSort\28float*\2c\20float*\29::'lambda'\28float\20const&\2c\20float\20const&\29>\28int\2c\20float*\2c\20int\2c\20void\20SkTQSort\28float*\2c\20float*\29::'lambda'\28float\20const&\2c\20float\20const&\29\20const&\29 3643:void\20SkTIntroSort\28int\2c\20SkString*\2c\20int\2c\20bool\20\20const\28&\29\28SkString\20const&\2c\20SkString\20const&\29\29 3644:void\20SkTIntroSort\28int\2c\20SkOpRayHit**\2c\20int\2c\20bool\20\20const\28&\29\28SkOpRayHit\20const*\2c\20SkOpRayHit\20const*\29\29 3645:void\20SkTIntroSort\28SkOpContour**\2c\20SkOpContour**\29::'lambda'\28SkOpContour\20const*\2c\20SkOpContour\20const*\29>\28int\2c\20SkOpContour*\2c\20int\2c\20void\20SkTQSort\28SkOpContour**\2c\20SkOpContour**\29::'lambda'\28SkOpContour\20const*\2c\20SkOpContour\20const*\29\20const&\29 3646:void\20SkTIntroSort>\2c\20SkCodec::Result*\29::Entry\2c\20SkIcoCodec::MakeFromStream\28std::__2::unique_ptr>\2c\20SkCodec::Result*\29::EntryLessThan>\28int\2c\20SkIcoCodec::MakeFromStream\28std::__2::unique_ptr>\2c\20SkCodec::Result*\29::Entry*\2c\20int\2c\20SkIcoCodec::MakeFromStream\28std::__2::unique_ptr>\2c\20SkCodec::Result*\29::EntryLessThan\20const&\29 3647:void\20SkTIntroSort\28SkClosestRecord\20const**\2c\20SkClosestRecord\20const**\29::'lambda'\28SkClosestRecord\20const*\2c\20SkClosestRecord\20const*\29>\28int\2c\20SkClosestRecord\20const*\2c\20int\2c\20void\20SkTQSort\28SkClosestRecord\20const**\2c\20SkClosestRecord\20const**\29::'lambda'\28SkClosestRecord\20const*\2c\20SkClosestRecord\20const*\29\20const&\29 3648:void\20SkTIntroSort\28SkAnalyticEdge**\2c\20SkAnalyticEdge**\29::'lambda'\28SkAnalyticEdge\20const*\2c\20SkAnalyticEdge\20const*\29>\28int\2c\20SkAnalyticEdge*\2c\20int\2c\20void\20SkTQSort\28SkAnalyticEdge**\2c\20SkAnalyticEdge**\29::'lambda'\28SkAnalyticEdge\20const*\2c\20SkAnalyticEdge\20const*\29\20const&\29 3649:void\20SkTIntroSort\28int\2c\20GrGpuResource**\2c\20int\2c\20bool\20\20const\28&\29\28GrGpuResource*\20const&\2c\20GrGpuResource*\20const&\29\29 3650:void\20SkTIntroSort\28int\2c\20GrGpuResource**\2c\20int\2c\20bool\20\28*\20const&\29\28GrGpuResource*\20const&\2c\20GrGpuResource*\20const&\29\29 3651:void\20SkTIntroSort\28int\2c\20Edge*\2c\20int\2c\20EdgeLT\20const&\29 3652:void\20GrGeometryProcessor::ProgramImpl::collectTransforms\28GrGLSLVertexBuilder*\2c\20GrGLSLVaryingHandler*\2c\20GrGLSLUniformHandler*\2c\20GrShaderType\2c\20GrShaderVar\20const&\2c\20GrShaderVar\20const&\2c\20GrPipeline\20const&\29::$_0::operator\28\29<$_0>\28$_0&\2c\20GrFragmentProcessor\20const&\2c\20bool\2c\20GrFragmentProcessor\20const*\2c\20int\2c\20GrGeometryProcessor::ProgramImpl::collectTransforms\28GrGLSLVertexBuilder*\2c\20GrGLSLVaryingHandler*\2c\20GrGLSLUniformHandler*\2c\20GrShaderType\2c\20GrShaderVar\20const&\2c\20GrShaderVar\20const&\2c\20GrPipeline\20const&\29::BaseCoord\29 3653:void\20AAT::StateTableDriver::drive::driver_context_t>\28AAT::LigatureSubtable::driver_context_t*\2c\20AAT::hb_aat_apply_context_t*\29::'lambda0'\28\29::operator\28\29\28\29\20const 3654:virtual\20thunk\20to\20GrGLTexture::onSetLabel\28\29 3655:virtual\20thunk\20to\20GrGLTexture::backendFormat\28\29\20const 3656:vfiprintf 3657:validate_texel_levels\28SkISize\2c\20GrColorType\2c\20GrMipLevel\20const*\2c\20int\2c\20GrCaps\20const*\29 3658:utf8TextClose\28UText*\29 3659:utf8TextAccess\28UText*\2c\20long\20long\2c\20signed\20char\29 3660:utext_openConstUnicodeString_73 3661:utext_moveIndex32_73 3662:utext_getPreviousNativeIndex_73 3663:utext_extract_73 3664:uscript_getShortName_73 3665:ures_resetIterator_73 3666:ures_initStackObject_73 3667:ures_getValueWithFallback_73 3668:ures_getInt_73 3669:ures_getIntVector_73 3670:ures_copyResb_73 3671:uprv_stricmp_73 3672:uprv_getMaxValues_73 3673:uprv_compareInvAscii_73 3674:upropsvec_addPropertyStarts_73 3675:uprops_getSource_73 3676:unsigned\20short\20std::__2::__num_get_unsigned_integral\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\2c\20int\29 3677:unsigned\20long\20long\20std::__2::__num_get_unsigned_integral\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\2c\20int\29 3678:unsigned\20int\20std::__2::__num_get_unsigned_integral\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\2c\20int\29 3679:unsigned\20int\20const*\20std::__2::lower_bound\5babi:v160004\5d\28unsigned\20int\20const*\2c\20unsigned\20int\20const*\2c\20unsigned\20long\20const&\29 3680:unorm_getFCD16_73 3681:ultag_isUnicodeLocaleKey_73 3682:ultag_isScriptSubtag_73 3683:ultag_isLanguageSubtag_73 3684:ultag_isExtensionSubtags_73 3685:ultag_getTKeyStart_73 3686:ulocimp_toBcpType_73 3687:ulocimp_forLanguageTag_73 3688:uloc_toUnicodeLocaleType_73 3689:uloc_toUnicodeLocaleKey_73 3690:uloc_setKeywordValue_73 3691:uloc_getTableStringWithFallback_73 3692:uloc_getName_73 3693:uloc_getDisplayName_73 3694:uenum_unext_73 3695:udata_open_73 3696:udata_checkCommonData_73 3697:ucptrie_internalU8PrevIndex_73 3698:uchar_addPropertyStarts_73 3699:ucase_toFullUpper_73 3700:ucase_toFullLower_73 3701:ucase_toFullFolding_73 3702:ucase_getTypeOrIgnorable_73 3703:ucase_addPropertyStarts_73 3704:ubidi_getPairedBracketType_73 3705:ubidi_close_73 3706:u_unescapeAt_73 3707:u_strFindFirst_73 3708:u_memrchr_73 3709:u_memcmp_73 3710:u_hasBinaryProperty_73 3711:u_getPropertyEnum_73 3712:tt_size_run_prep 3713:tt_size_done_bytecode 3714:tt_sbit_decoder_load_image 3715:tt_face_vary_cvt 3716:tt_face_palette_set 3717:tt_face_load_cvt 3718:tt_face_get_metrics 3719:tt_done_blend 3720:tt_delta_interpolate 3721:tt_cmap4_set_range 3722:tt_cmap4_next 3723:tt_cmap4_char_map_linear 3724:tt_cmap4_char_map_binary 3725:tt_cmap14_get_def_chars 3726:tt_cmap13_next 3727:tt_cmap12_next 3728:tt_cmap12_init 3729:tt_cmap12_char_map_binary 3730:tt_apply_mvar 3731:toParagraphStyle\28SimpleParagraphStyle\20const&\29 3732:tanhf 3733:t1_lookup_glyph_by_stdcharcode_ps 3734:t1_builder_close_contour 3735:t1_builder_check_points 3736:strtoull 3737:strtoll_l 3738:strtol 3739:strspn 3740:store_int 3741:std::logic_error::~logic_error\28\29 3742:std::logic_error::logic_error\28char\20const*\29 3743:std::exception::exception\5babi:v160004\5d\28\29 3744:std::__2::vector>::__append\28unsigned\20long\29 3745:std::__2::vector>::max_size\28\29\20const 3746:std::__2::vector>::__construct_at_end\28unsigned\20long\29 3747:std::__2::vector>::__clear\5babi:v160004\5d\28\29 3748:std::__2::vector>::__base_destruct_at_end\5babi:v160004\5d\28std::__2::locale::facet**\29 3749:std::__2::vector>::__annotate_shrink\5babi:v160004\5d\28unsigned\20long\29\20const 3750:std::__2::vector>::__annotate_new\5babi:v160004\5d\28unsigned\20long\29\20const 3751:std::__2::vector>::__annotate_delete\5babi:v160004\5d\28\29\20const 3752:std::__2::vector>::insert\28std::__2::__wrap_iter\2c\20float&&\29 3753:std::__2::vector>::__append\28unsigned\20long\29 3754:std::__2::unique_ptr::operator=\5babi:v160004\5d\28std::__2::unique_ptr&&\29 3755:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 3756:std::__2::unique_ptr>\20SkSL::coalesce_vector\28std::__2::array\20const&\2c\20double\2c\20SkSL::Type\20const&\2c\20double\20\28*\29\28double\2c\20double\2c\20double\29\2c\20double\20\28*\29\28double\29\29 3757:std::__2::unique_ptr>::operator=\5babi:v160004\5d\28std::nullptr_t\29 3758:std::__2::tuple\2c\20int\2c\20sktext::gpu::SubRunAllocator>\20sktext::gpu::SubRunAllocator::AllocateClassMemoryAndArena\28int\29::'lambda0'\28\29::operator\28\29\28\29\20const 3759:std::__2::tuple\2c\20int\2c\20sktext::gpu::SubRunAllocator>\20sktext::gpu::SubRunAllocator::AllocateClassMemoryAndArena\28int\29::'lambda'\28\29::operator\28\29\28\29\20const 3760:std::__2::to_string\28unsigned\20long\29 3761:std::__2::to_chars_result\20std::__2::__to_chars_itoa\5babi:v160004\5d\28char*\2c\20char*\2c\20unsigned\20int\2c\20std::__2::integral_constant\29 3762:std::__2::time_put>>::~time_put\28\29 3763:std::__2::time_get>>::__get_year\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const 3764:std::__2::time_get>>::__get_weekdayname\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const 3765:std::__2::time_get>>::__get_monthname\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const 3766:std::__2::time_get>>::__get_year\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const 3767:std::__2::time_get>>::__get_weekdayname\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const 3768:std::__2::time_get>>::__get_monthname\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const 3769:std::__2::reverse_iterator::operator++\5babi:v160004\5d\28\29 3770:std::__2::reverse_iterator::operator*\5babi:v160004\5d\28\29\20const 3771:std::__2::priority_queue>\2c\20GrAATriangulator::EventComparator>::push\28GrAATriangulator::Event*\20const&\29 3772:std::__2::pair\2c\20void*>*>\2c\20bool>\20std::__2::__hash_table\2c\20std::__2::__unordered_map_hasher\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal\2c\20std::__2::equal_to\2c\20std::__2::hash\2c\20true>\2c\20std::__2::allocator>>::__emplace_unique_key_args\2c\20std::__2::tuple<>>\28GrFragmentProcessor\20const*\20const&\2c\20std::__2::piecewise_construct_t\20const&\2c\20std::__2::tuple&&\2c\20std::__2::tuple<>&&\29 3773:std::__2::pair*>\2c\20bool>\20std::__2::__hash_table\2c\20std::__2::equal_to\2c\20std::__2::allocator>::__emplace_unique_key_args\28int\20const&\2c\20int\20const&\29 3774:std::__2::pair\2c\20std::__2::allocator>>>::pair\28std::__2::pair\2c\20std::__2::allocator>>>&&\29 3775:std::__2::ostreambuf_iterator>::operator=\5babi:v160004\5d\28wchar_t\29 3776:std::__2::ostreambuf_iterator>::operator=\5babi:v160004\5d\28char\29 3777:std::__2::optional&\20std::__2::optional::operator=\5babi:v160004\5d\28SkPath\20const&\29 3778:std::__2::numpunct::~numpunct\28\29 3779:std::__2::numpunct::~numpunct\28\29 3780:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20int&\29\20const 3781:std::__2::num_get>>\20const&\20std::__2::use_facet\5babi:v160004\5d>>>\28std::__2::locale\20const&\29 3782:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20int&\29\20const 3783:std::__2::moneypunct\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 3784:std::__2::moneypunct\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 3785:std::__2::moneypunct::do_negative_sign\28\29\20const 3786:std::__2::moneypunct\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 3787:std::__2::moneypunct\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 3788:std::__2::moneypunct::do_negative_sign\28\29\20const 3789:std::__2::money_get>>::__do_get\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::locale\20const&\2c\20unsigned\20int\2c\20unsigned\20int&\2c\20bool&\2c\20std::__2::ctype\20const&\2c\20std::__2::unique_ptr&\2c\20wchar_t*&\2c\20wchar_t*\29 3790:std::__2::money_get>>::__do_get\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::locale\20const&\2c\20unsigned\20int\2c\20unsigned\20int&\2c\20bool&\2c\20std::__2::ctype\20const&\2c\20std::__2::unique_ptr&\2c\20char*&\2c\20char*\29 3791:std::__2::locale::__imp::~__imp\28\29 3792:std::__2::iterator_traits::difference_type\20std::__2::__distance\5babi:v160004\5d\28unsigned\20int\20const*\2c\20unsigned\20int\20const*\2c\20std::__2::random_access_iterator_tag\29 3793:std::__2::iterator_traits\2c\20std::__2::allocator>\20const*>::difference_type\20std::__2::distance\5babi:v160004\5d\2c\20std::__2::allocator>\20const*>\28std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\29 3794:std::__2::iterator_traits::difference_type\20std::__2::distance\5babi:v160004\5d\28char*\2c\20char*\29 3795:std::__2::iterator_traits::difference_type\20std::__2::__distance\5babi:v160004\5d\28char*\2c\20char*\2c\20std::__2::random_access_iterator_tag\29 3796:std::__2::istreambuf_iterator>::operator++\5babi:v160004\5d\28int\29 3797:std::__2::istreambuf_iterator>::__test_for_eof\5babi:v160004\5d\28\29\20const 3798:std::__2::istreambuf_iterator>::operator++\5babi:v160004\5d\28int\29 3799:std::__2::istreambuf_iterator>::__test_for_eof\5babi:v160004\5d\28\29\20const 3800:std::__2::ios_base::width\5babi:v160004\5d\28long\29 3801:std::__2::ios_base::imbue\28std::__2::locale\20const&\29 3802:std::__2::ios_base::__call_callbacks\28std::__2::ios_base::event\29 3803:std::__2::hash::operator\28\29\28skia::textlayout::FontArguments\20const&\29\20const 3804:std::__2::enable_if\2c\20sk_sp>::type\20SkLocalMatrixShader::MakeWrapped\2c\20SkTileMode&\2c\20SkTileMode&\2c\20SkFilterMode&\2c\20SkRect\20const*&>\28SkMatrix\20const*\2c\20sk_sp&&\2c\20SkTileMode&\2c\20SkTileMode&\2c\20SkFilterMode&\2c\20SkRect\20const*&\29 3805:std::__2::enable_if::value\20&&\20is_move_assignable::value\2c\20void>::type\20std::__2::swap\5babi:v160004\5d\28char&\2c\20char&\29 3806:std::__2::enable_if<__is_cpp17_random_access_iterator::value\2c\20char*>::type\20std::__2::copy_n\5babi:v160004\5d\28char\20const*\2c\20unsigned\20long\2c\20char*\29 3807:std::__2::enable_if<__is_cpp17_forward_iterator::value\2c\20void>::type\20std::__2::basic_string\2c\20std::__2::allocator>::__init\28wchar_t\20const*\2c\20wchar_t\20const*\29 3808:std::__2::enable_if<__is_cpp17_forward_iterator::value\2c\20void>::type\20std::__2::basic_string\2c\20std::__2::allocator>::__init\28char*\2c\20char*\29 3809:std::__2::deque>::__add_back_capacity\28\29 3810:std::__2::default_delete::operator\28\29\5babi:v160004\5d\28sktext::gpu::TextBlobRedrawCoordinator*\29\20const 3811:std::__2::default_delete::operator\28\29\5babi:v160004\5d\28sktext::GlyphRunBuilder*\29\20const 3812:std::__2::ctype::~ctype\28\29 3813:std::__2::codecvt::~codecvt\28\29 3814:std::__2::codecvt::do_out\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*&\2c\20char*\2c\20char*\2c\20char*&\29\20const 3815:std::__2::codecvt::do_out\28__mbstate_t&\2c\20char32_t\20const*\2c\20char32_t\20const*\2c\20char32_t\20const*&\2c\20char*\2c\20char*\2c\20char*&\29\20const 3816:std::__2::codecvt::do_length\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20unsigned\20long\29\20const 3817:std::__2::codecvt::do_in\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*&\2c\20char32_t*\2c\20char32_t*\2c\20char32_t*&\29\20const 3818:std::__2::codecvt::do_out\28__mbstate_t&\2c\20char16_t\20const*\2c\20char16_t\20const*\2c\20char16_t\20const*&\2c\20char*\2c\20char*\2c\20char*&\29\20const 3819:std::__2::codecvt::do_length\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20unsigned\20long\29\20const 3820:std::__2::codecvt::do_in\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*&\2c\20char16_t*\2c\20char16_t*\2c\20char16_t*&\29\20const 3821:std::__2::char_traits::not_eof\28int\29 3822:std::__2::basic_stringbuf\2c\20std::__2::allocator>::str\28\29\20const 3823:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28unsigned\20long\2c\20wchar_t\29 3824:std::__2::basic_string\2c\20std::__2::allocator>::__grow_by_and_replace\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20wchar_t\20const*\29 3825:std::__2::basic_string\2c\20std::__2::allocator>::__grow_by\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29 3826:std::__2::basic_string\2c\20std::__2::allocator>::resize\28unsigned\20long\2c\20char\29 3827:std::__2::basic_string\2c\20std::__2::allocator>::insert\28unsigned\20long\2c\20char\20const*\2c\20unsigned\20long\29 3828:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28unsigned\20long\2c\20char\29 3829:std::__2::basic_string\2c\20std::__2::allocator>::basic_string>\2c\20void>\28std::__2::basic_string_view>\20const&\29 3830:std::__2::basic_string\2c\20std::__2::allocator>::__throw_out_of_range\5babi:v160004\5d\28\29\20const 3831:std::__2::basic_string\2c\20std::__2::allocator>::__null_terminate_at\5babi:v160004\5d\28char*\2c\20unsigned\20long\29 3832:std::__2::basic_string\2c\20std::__2::allocator>&\20std::__2::basic_string\2c\20std::__2::allocator>::__assign_no_alias\28char\20const*\2c\20unsigned\20long\29 3833:std::__2::basic_string\2c\20std::__2::allocator>&\20skia_private::TArray\2c\20std::__2::allocator>\2c\20false>::emplace_back\28char\20const*&&\29 3834:std::__2::basic_streambuf>::sgetc\5babi:v160004\5d\28\29 3835:std::__2::basic_streambuf>::sbumpc\5babi:v160004\5d\28\29 3836:std::__2::basic_streambuf>::sputc\5babi:v160004\5d\28char\29 3837:std::__2::basic_streambuf>::sgetc\5babi:v160004\5d\28\29 3838:std::__2::basic_streambuf>::sbumpc\5babi:v160004\5d\28\29 3839:std::__2::basic_ostream>::~basic_ostream\28\29.2 3840:std::__2::basic_ostream>::sentry::~sentry\28\29 3841:std::__2::basic_ostream>::sentry::sentry\28std::__2::basic_ostream>&\29 3842:std::__2::basic_ostream>::operator<<\28float\29 3843:std::__2::basic_ostream>::flush\28\29 3844:std::__2::basic_istream>::~basic_istream\28\29.2 3845:std::__2::allocator_traits>::deallocate\5babi:v160004\5d\28std::__2::__sso_allocator&\2c\20std::__2::locale::facet**\2c\20unsigned\20long\29 3846:std::__2::allocator::deallocate\5babi:v160004\5d\28wchar_t*\2c\20unsigned\20long\29 3847:std::__2::allocator::allocate\5babi:v160004\5d\28unsigned\20long\29 3848:std::__2::allocator::allocate\5babi:v160004\5d\28unsigned\20long\29 3849:std::__2::__wrap_iter\20std::__2::vector>::insert\2c\200>\28std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\29 3850:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d\28SkSL::Position&\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray&&\29 3851:std::__2::__time_put::__time_put\5babi:v160004\5d\28\29 3852:std::__2::__time_put::__do_put\28char*\2c\20char*&\2c\20tm\20const*\2c\20char\2c\20char\29\20const 3853:std::__2::__split_buffer>::push_back\28skia::textlayout::OneLineShaper::RunBlock*&&\29 3854:std::__2::__optional_destruct_base::~__optional_destruct_base\5babi:v160004\5d\28\29 3855:std::__2::__num_put::__widen_and_group_int\28char*\2c\20char*\2c\20char*\2c\20wchar_t*\2c\20wchar_t*&\2c\20wchar_t*&\2c\20std::__2::locale\20const&\29 3856:std::__2::__num_put::__widen_and_group_float\28char*\2c\20char*\2c\20char*\2c\20wchar_t*\2c\20wchar_t*&\2c\20wchar_t*&\2c\20std::__2::locale\20const&\29 3857:std::__2::__num_put::__widen_and_group_int\28char*\2c\20char*\2c\20char*\2c\20char*\2c\20char*&\2c\20char*&\2c\20std::__2::locale\20const&\29 3858:std::__2::__num_put::__widen_and_group_float\28char*\2c\20char*\2c\20char*\2c\20char*\2c\20char*&\2c\20char*&\2c\20std::__2::locale\20const&\29 3859:std::__2::__money_put::__gather_info\28bool\2c\20bool\2c\20std::__2::locale\20const&\2c\20std::__2::money_base::pattern&\2c\20wchar_t&\2c\20wchar_t&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20int&\29 3860:std::__2::__money_put::__format\28wchar_t*\2c\20wchar_t*&\2c\20wchar_t*&\2c\20unsigned\20int\2c\20wchar_t\20const*\2c\20wchar_t\20const*\2c\20std::__2::ctype\20const&\2c\20bool\2c\20std::__2::money_base::pattern\20const&\2c\20wchar_t\2c\20wchar_t\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20int\29 3861:std::__2::__money_put::__gather_info\28bool\2c\20bool\2c\20std::__2::locale\20const&\2c\20std::__2::money_base::pattern&\2c\20char&\2c\20char&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20int&\29 3862:std::__2::__money_put::__format\28char*\2c\20char*&\2c\20char*&\2c\20unsigned\20int\2c\20char\20const*\2c\20char\20const*\2c\20std::__2::ctype\20const&\2c\20bool\2c\20std::__2::money_base::pattern\20const&\2c\20char\2c\20char\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20int\29 3863:std::__2::__libcpp_sscanf_l\28char\20const*\2c\20__locale_struct*\2c\20char\20const*\2c\20...\29 3864:std::__2::__libcpp_mbrtowc_l\5babi:v160004\5d\28wchar_t*\2c\20char\20const*\2c\20unsigned\20long\2c\20__mbstate_t*\2c\20__locale_struct*\29 3865:std::__2::__libcpp_mb_cur_max_l\5babi:v160004\5d\28__locale_struct*\29 3866:std::__2::__libcpp_deallocate\5babi:v160004\5d\28void*\2c\20unsigned\20long\2c\20unsigned\20long\29 3867:std::__2::__libcpp_allocate\5babi:v160004\5d\28unsigned\20long\2c\20unsigned\20long\29 3868:std::__2::__is_overaligned_for_new\5babi:v160004\5d\28unsigned\20long\29 3869:std::__2::__function::__value_func::swap\5babi:v160004\5d\28std::__2::__function::__value_func&\29 3870:std::__2::__function::__func\28GrOp\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29\2c\20std::__2::allocator\28GrOp\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::operator\28\29\28GrSurfaceProxy*&&\2c\20skgpu::Mipmapped&&\29 3871:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0>\2c\20void\20\28\29>::operator\28\29\28\29 3872:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::operator\28\29\28std::__2::function&\29 3873:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::destroy\28\29 3874:std::__2::__constexpr_wcslen\5babi:v160004\5d\28wchar_t\20const*\29 3875:std::__2::__allocation_result>::pointer>\20std::__2::__allocate_at_least\5babi:v160004\5d>\28std::__2::__sso_allocator&\2c\20unsigned\20long\29 3876:start_input_pass 3877:sktext::gpu::can_use_direct\28SkMatrix\20const&\2c\20SkMatrix\20const&\29 3878:sktext::gpu::build_distance_adjust_table\28float\2c\20float\29 3879:sktext::gpu::VertexFiller::opMaskType\28\29\20const 3880:sktext::gpu::VertexFiller::fillVertexData\28int\2c\20int\2c\20SkSpan\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkIRect\2c\20void*\29\20const 3881:sktext::gpu::TextBlobRedrawCoordinator::internalRemove\28sktext::gpu::TextBlob*\29 3882:sktext::gpu::SubRunContainer::MakeInAlloc\28sktext::GlyphRunList\20const&\2c\20SkMatrix\20const&\2c\20SkPaint\20const&\2c\20SkStrikeDeviceInfo\2c\20sktext::StrikeForGPUCacheInterface*\2c\20sktext::gpu::SubRunAllocator*\2c\20sktext::gpu::SubRunContainer::SubRunCreationBehavior\2c\20char\20const*\29::$_2::operator\28\29\28SkZip\2c\20skgpu::MaskFormat\29\20const 3883:sktext::gpu::SubRunContainer::MakeInAlloc\28sktext::GlyphRunList\20const&\2c\20SkMatrix\20const&\2c\20SkPaint\20const&\2c\20SkStrikeDeviceInfo\2c\20sktext::StrikeForGPUCacheInterface*\2c\20sktext::gpu::SubRunAllocator*\2c\20sktext::gpu::SubRunContainer::SubRunCreationBehavior\2c\20char\20const*\29::$_0::operator\28\29\28SkZip\2c\20skgpu::MaskFormat\29\20const 3884:sktext::gpu::SubRunContainer::MakeInAlloc\28sktext::GlyphRunList\20const&\2c\20SkMatrix\20const&\2c\20SkPaint\20const&\2c\20SkStrikeDeviceInfo\2c\20sktext::StrikeForGPUCacheInterface*\2c\20sktext::gpu::SubRunAllocator*\2c\20sktext::gpu::SubRunContainer::SubRunCreationBehavior\2c\20char\20const*\29 3885:sktext::gpu::SubRunContainer::EstimateAllocSize\28sktext::GlyphRunList\20const&\29 3886:sktext::gpu::SubRunAllocator::SubRunAllocator\28char*\2c\20int\2c\20int\29 3887:sktext::gpu::StrikeCache::~StrikeCache\28\29 3888:sktext::gpu::SlugImpl::Make\28SkMatrix\20const&\2c\20sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\2c\20SkStrikeDeviceInfo\2c\20sktext::StrikeForGPUCacheInterface*\29 3889:sktext::gpu::BagOfBytes::BagOfBytes\28char*\2c\20unsigned\20long\2c\20unsigned\20long\29::$_1::operator\28\29\28\29\20const 3890:sktext::glyphrun_source_bounds\28SkFont\20const&\2c\20SkPaint\20const&\2c\20SkZip\2c\20SkSpan\29 3891:sktext::SkStrikePromise::resetStrike\28\29 3892:sktext::GlyphRunList::makeBlob\28\29\20const 3893:sktext::GlyphRunBuilder::blobToGlyphRunList\28SkTextBlob\20const&\2c\20SkPoint\29 3894:skstd::to_string\28float\29 3895:skpathutils::FillPathWithPaint\28SkPath\20const&\2c\20SkPaint\20const&\2c\20SkPath*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29 3896:skjpeg_err_exit\28jpeg_common_struct*\29 3897:skip_string 3898:skip_procedure 3899:skif::\28anonymous\20namespace\29::decompose_transform\28SkMatrix\20const&\2c\20SkPoint\2c\20SkMatrix*\2c\20SkMatrix*\29 3900:skif::\28anonymous\20namespace\29::are_axes_nearly_integer_aligned\28skif::LayerSpace\20const&\2c\20skif::LayerSpace*\29 3901:skif::\28anonymous\20namespace\29::GaneshBackend::maxSigma\28\29\20const 3902:skif::\28anonymous\20namespace\29::GaneshBackend::blur\28SkSize\2c\20sk_sp\2c\20SkIRect\20const&\2c\20SkTileMode\2c\20SkIRect\20const&\29\20const 3903:skif::Mapping::applyOrigin\28skif::LayerSpace\20const&\29 3904:skif::LayerSpace::relevantSubset\28skif::LayerSpace\2c\20SkTileMode\29\20const 3905:skif::FilterResult::subset\28skif::LayerSpace\20const&\2c\20skif::LayerSpace\20const&\2c\20bool\29\20const 3906:skif::FilterResult::applyCrop\28skif::Context\20const&\2c\20skif::LayerSpace\20const&\2c\20SkTileMode\29\20const 3907:skia_private::THashTable::Traits>::set\28unsigned\20long\20long\29 3908:skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::uncheckedSet\28skia_private::THashMap::Pair&&\29 3909:skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::resize\28int\29 3910:skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::removeIfExists\28unsigned\20int\20const&\29 3911:skia_private::THashTable>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::uncheckedSet\28skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair&&\29 3912:skia_private::THashTable\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair\2c\20skia::textlayout::OneLineShaper::FontKey\2c\20skia_private::THashMap\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair>::uncheckedSet\28skia_private::THashMap\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair&&\29 3913:skia_private::THashTable\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair\2c\20skia::textlayout::FontCollection::FamilyKey\2c\20skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair>::uncheckedSet\28skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair&&\29 3914:skia_private::THashTable::Pair\2c\20skgpu::UniqueKey\2c\20skia_private::THashMap::Pair>::uncheckedSet\28skia_private::THashMap::Pair&&\29 3915:skia_private::THashTable\2c\20SkGoodHash>::Pair\2c\20SkString\2c\20skia_private::THashMap\2c\20SkGoodHash>::Pair>::uncheckedSet\28skia_private::THashMap\2c\20SkGoodHash>::Pair&&\29 3916:skia_private::THashTable::Pair\2c\20SkSL::SymbolTable::SymbolKey\2c\20skia_private::THashMap::Pair>::find\28SkSL::SymbolTable::SymbolKey\20const&\29\20const 3917:skia_private::THashTable::Pair\2c\20SkPath\2c\20skia_private::THashMap::Pair>::uncheckedSet\28skia_private::THashMap::Pair&&\29 3918:skia_private::THashTable>\2c\20SkGoodHash>::Pair\2c\20SkImageFilter\20const*\2c\20skia_private::THashMap>\2c\20SkGoodHash>::Pair>::uncheckedSet\28skia_private::THashMap>\2c\20SkGoodHash>::Pair&&\29 3919:skia_private::THashTable>\2c\20SkGoodHash>::Pair\2c\20SkImageFilter\20const*\2c\20skia_private::THashMap>\2c\20SkGoodHash>::Pair>::resize\28int\29 3920:skia_private::THashTable\2c\20SkIcuBreakIteratorCache::Request::Hash>::Pair\2c\20SkIcuBreakIteratorCache::Request\2c\20skia_private::THashMap\2c\20SkIcuBreakIteratorCache::Request::Hash>::Pair>::uncheckedSet\28skia_private::THashMap\2c\20SkIcuBreakIteratorCache::Request::Hash>::Pair&&\29 3921:skia_private::THashTable\2c\20SkIcuBreakIteratorCache::Request::Hash>::Pair\2c\20SkIcuBreakIteratorCache::Request\2c\20skia_private::THashMap\2c\20SkIcuBreakIteratorCache::Request::Hash>::Pair>::Slot::emplace\28skia_private::THashMap\2c\20SkIcuBreakIteratorCache::Request::Hash>::Pair&&\2c\20unsigned\20int\29 3922:skia_private::THashTable::AdaptedTraits>::uncheckedSet\28skgpu::ganesh::SmallPathShapeData*&&\29 3923:skia_private::THashTable::AdaptedTraits>::resize\28int\29 3924:skia_private::THashTable\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::uncheckedSet\28sk_sp&&\29 3925:skia_private::THashTable\2c\20SkDescriptor\2c\20SkStrikeCache::StrikeTraits>::resize\28int\29 3926:skia_private::THashTable<\28anonymous\20namespace\29::CacheImpl::Value*\2c\20SkImageFilterCacheKey\2c\20SkTDynamicHash<\28anonymous\20namespace\29::CacheImpl::Value\2c\20SkImageFilterCacheKey\2c\20\28anonymous\20namespace\29::CacheImpl::Value>::AdaptedTraits>::uncheckedSet\28\28anonymous\20namespace\29::CacheImpl::Value*&&\29 3927:skia_private::THashTable<\28anonymous\20namespace\29::CacheImpl::Value*\2c\20SkImageFilterCacheKey\2c\20SkTDynamicHash<\28anonymous\20namespace\29::CacheImpl::Value\2c\20SkImageFilterCacheKey\2c\20\28anonymous\20namespace\29::CacheImpl::Value>::AdaptedTraits>::resize\28int\29 3928:skia_private::THashTable::ValueList*\2c\20skgpu::ScratchKey\2c\20SkTDynamicHash::ValueList\2c\20skgpu::ScratchKey\2c\20SkTMultiMap::ValueList>::AdaptedTraits>::uncheckedSet\28SkTMultiMap::ValueList*&&\29 3929:skia_private::THashTable::ValueList*\2c\20skgpu::ScratchKey\2c\20SkTDynamicHash::ValueList\2c\20skgpu::ScratchKey\2c\20SkTMultiMap::ValueList>::AdaptedTraits>::resize\28int\29 3930:skia_private::THashTable::ValueList*\2c\20skgpu::ScratchKey\2c\20SkTDynamicHash::ValueList\2c\20skgpu::ScratchKey\2c\20SkTMultiMap::ValueList>::AdaptedTraits>::uncheckedSet\28SkTMultiMap::ValueList*&&\29 3931:skia_private::THashTable::ValueList*\2c\20skgpu::ScratchKey\2c\20SkTDynamicHash::ValueList\2c\20skgpu::ScratchKey\2c\20SkTMultiMap::ValueList>::AdaptedTraits>::resize\28int\29 3932:skia_private::THashTable::uncheckedSet\28SkResourceCache::Rec*&&\29 3933:skia_private::THashTable::resize\28int\29 3934:skia_private::THashTable::Entry*\2c\20unsigned\20int\2c\20SkLRUCache::Traits>::set\28SkLRUCache::Entry*\29 3935:skia_private::THashTable::Entry*\2c\20unsigned\20int\2c\20SkLRUCache::Traits>::resize\28int\29 3936:skia_private::THashTable::Entry*\2c\20unsigned\20int\2c\20SkLRUCache::Traits>::removeIfExists\28unsigned\20int\20const&\29 3937:skia_private::THashTable>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Entry*\2c\20skia::textlayout::ParagraphCacheKey\2c\20SkLRUCache>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Traits>::resize\28int\29 3938:skia_private::THashTable>\2c\20GrGLGpu::ProgramCache::DescHash>::Entry*\2c\20GrProgramDesc\2c\20SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::Traits>::uncheckedSet\28SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::Entry*&&\29 3939:skia_private::THashTable>\2c\20GrGLGpu::ProgramCache::DescHash>::Entry*\2c\20GrProgramDesc\2c\20SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::Traits>::resize\28int\29 3940:skia_private::THashTable::AdaptedTraits>::uncheckedSet\28GrGpuResource*&&\29 3941:skia_private::THashTable::AdaptedTraits>::resize\28int\29 3942:skia_private::THashMap\20\28*\29\28SkReadBuffer&\29\2c\20SkGoodHash>::set\28unsigned\20int\2c\20sk_sp\20\28*\29\28SkReadBuffer&\29\29 3943:skia_private::THashMap>\2c\20SkGoodHash>::remove\28SkImageFilter\20const*\20const&\29 3944:skia_private::TArray::push_back_raw\28int\29 3945:skia_private::TArray::resize_back\28int\29 3946:skia_private::TArray\2c\20std::__2::allocator>\2c\20false>::checkRealloc\28int\2c\20double\29 3947:skia_private::TArray::~TArray\28\29 3948:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 3949:skia_private::TArray::operator=\28skia_private::TArray&&\29 3950:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 3951:skia_private::TArray::BufferFinishedMessage\2c\20false>::operator=\28skia_private::TArray::BufferFinishedMessage\2c\20false>&&\29 3952:skia_private::TArray::BufferFinishedMessage\2c\20false>::installDataAndUpdateCapacity\28SkSpan\29 3953:skia_private::TArray::Plane\2c\20false>::move\28void*\29 3954:skia_private::TArray::operator=\28skia_private::TArray&&\29 3955:skia_private::TArray\29::ReorderedArgument\2c\20false>::push_back\28SkSL::optimize_constructor_swizzle\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ConstructorCompound\20const&\2c\20skia_private::STArray<4\2c\20signed\20char\2c\20true>\29::ReorderedArgument&&\29 3956:skia_private::TArray::TArray\28skia_private::TArray&&\29 3957:skia_private::TArray::swap\28skia_private::TArray&\29 3958:skia_private::TArray\2c\20true>::operator=\28skia_private::TArray\2c\20true>&&\29 3959:skia_private::TArray::push_back_raw\28int\29 3960:skia_private::TArray::operator=\28skia_private::TArray\20const&\29 3961:skia_private::TArray::push_back_raw\28int\29 3962:skia_private::TArray::push_back_raw\28int\29 3963:skia_private::TArray::move_back_n\28int\2c\20GrTextureProxy**\29 3964:skia_private::TArray::operator=\28skia_private::TArray&&\29 3965:skia_private::TArray::push_back_n\28int\2c\20EllipticalRRectOp::RRect\20const*\29 3966:skia_private::STArray<4\2c\20signed\20char\2c\20true>::STArray\28skia_private::STArray<4\2c\20signed\20char\2c\20true>\20const&\29 3967:skia_png_zfree 3968:skia_png_write_zTXt 3969:skia_png_write_tIME 3970:skia_png_write_tEXt 3971:skia_png_write_iTXt 3972:skia_png_set_write_fn 3973:skia_png_set_strip_16 3974:skia_png_set_read_user_transform_fn 3975:skia_png_set_read_user_chunk_fn 3976:skia_png_set_option 3977:skia_png_set_mem_fn 3978:skia_png_set_expand_gray_1_2_4_to_8 3979:skia_png_set_error_fn 3980:skia_png_set_compression_level 3981:skia_png_set_IHDR 3982:skia_png_read_filter_row 3983:skia_png_process_IDAT_data 3984:skia_png_icc_set_sRGB 3985:skia_png_icc_check_tag_table 3986:skia_png_icc_check_header 3987:skia_png_get_uint_31 3988:skia_png_get_sBIT 3989:skia_png_get_rowbytes 3990:skia_png_get_error_ptr 3991:skia_png_get_IHDR 3992:skia_png_do_swap 3993:skia_png_do_read_transformations 3994:skia_png_do_read_interlace 3995:skia_png_do_packswap 3996:skia_png_do_invert 3997:skia_png_do_gray_to_rgb 3998:skia_png_do_expand 3999:skia_png_do_check_palette_indexes 4000:skia_png_do_bgr 4001:skia_png_destroy_png_struct 4002:skia_png_destroy_gamma_table 4003:skia_png_create_png_struct 4004:skia_png_create_info_struct 4005:skia_png_crc_read 4006:skia_png_colorspace_sync_info 4007:skia_png_check_IHDR 4008:skia::textlayout::TypefaceFontStyleSet::matchStyle\28SkFontStyle\20const&\29 4009:skia::textlayout::TextStyle::matchOneAttribute\28skia::textlayout::StyleType\2c\20skia::textlayout::TextStyle\20const&\29\20const 4010:skia::textlayout::TextStyle::equals\28skia::textlayout::TextStyle\20const&\29\20const 4011:skia::textlayout::TextShadow::operator!=\28skia::textlayout::TextShadow\20const&\29\20const 4012:skia::textlayout::TextLine::paint\28skia::textlayout::ParagraphPainter*\2c\20float\2c\20float\29 4013:skia::textlayout::TextLine::iterateThroughClustersInGlyphsOrder\28bool\2c\20bool\2c\20std::__2::function\20const&\29\20const::$_0::operator\28\29\28unsigned\20long\20const&\29\20const 4014:skia::textlayout::TextLine::getRectsForRange\28skia::textlayout::SkRange\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29::operator\28\29\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\20const::'lambda'\28SkRect\29::operator\28\29\28SkRect\29\20const 4015:skia::textlayout::TextLine::getMetrics\28\29\20const 4016:skia::textlayout::TextLine::ensureTextBlobCachePopulated\28\29 4017:skia::textlayout::TextLine::buildTextBlob\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 4018:skia::textlayout::TextLine::TextLine\28skia::textlayout::ParagraphImpl*\2c\20SkPoint\2c\20SkPoint\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20float\2c\20skia::textlayout::InternalLineMetrics\29 4019:skia::textlayout::TextLine&\20skia_private::TArray::emplace_back&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20float&\2c\20skia::textlayout::InternalLineMetrics&>\28skia::textlayout::ParagraphImpl*&&\2c\20SkPoint&\2c\20SkPoint&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20float&\2c\20skia::textlayout::InternalLineMetrics&\29 4020:skia::textlayout::Run::shift\28skia::textlayout::Cluster\20const*\2c\20float\29 4021:skia::textlayout::Run::newRunBuffer\28\29 4022:skia::textlayout::Run::findLimitingGlyphClusters\28skia::textlayout::SkRange\29\20const 4023:skia::textlayout::Run::addSpacesAtTheEnd\28float\2c\20skia::textlayout::Cluster*\29 4024:skia::textlayout::ParagraphStyle::effective_align\28\29\20const 4025:skia::textlayout::ParagraphStyle::ParagraphStyle\28\29 4026:skia::textlayout::ParagraphPainter::DecorationStyle::DecorationStyle\28unsigned\20int\2c\20float\2c\20std::__2::optional\29 4027:skia::textlayout::ParagraphImpl::~ParagraphImpl\28\29 4028:skia::textlayout::ParagraphImpl::text\28skia::textlayout::SkRange\29 4029:skia::textlayout::ParagraphImpl::resolveStrut\28\29 4030:skia::textlayout::ParagraphImpl::getGlyphInfoAtUTF16Offset\28unsigned\20long\2c\20skia::textlayout::Paragraph::GlyphInfo*\29 4031:skia::textlayout::ParagraphImpl::getGlyphClusterAt\28unsigned\20long\2c\20skia::textlayout::Paragraph::GlyphClusterInfo*\29 4032:skia::textlayout::ParagraphImpl::findPreviousGraphemeBoundary\28unsigned\20long\29\20const 4033:skia::textlayout::ParagraphImpl::computeEmptyMetrics\28\29 4034:skia::textlayout::ParagraphImpl::clusters\28skia::textlayout::SkRange\29 4035:skia::textlayout::ParagraphImpl::block\28unsigned\20long\29 4036:skia::textlayout::ParagraphCacheValue::~ParagraphCacheValue\28\29 4037:skia::textlayout::ParagraphCacheKey::ParagraphCacheKey\28skia::textlayout::ParagraphImpl\20const*\29 4038:skia::textlayout::ParagraphBuilderImpl::~ParagraphBuilderImpl\28\29 4039:skia::textlayout::ParagraphBuilderImpl::make\28skia::textlayout::ParagraphStyle\20const&\2c\20sk_sp\29 4040:skia::textlayout::ParagraphBuilderImpl::addPlaceholder\28skia::textlayout::PlaceholderStyle\20const&\2c\20bool\29 4041:skia::textlayout::ParagraphBuilderImpl::ParagraphBuilderImpl\28skia::textlayout::ParagraphStyle\20const&\2c\20sk_sp\2c\20sk_sp\29 4042:skia::textlayout::Paragraph::~Paragraph\28\29 4043:skia::textlayout::OneLineShaper::clusteredText\28skia::textlayout::SkRange&\29 4044:skia::textlayout::FontCollection::~FontCollection\28\29 4045:skia::textlayout::FontCollection::matchTypeface\28SkString\20const&\2c\20SkFontStyle\29 4046:skia::textlayout::FontCollection::defaultFallback\28int\2c\20SkFontStyle\2c\20SkString\20const&\29 4047:skia::textlayout::FontCollection::FamilyKey::Hasher::operator\28\29\28skia::textlayout::FontCollection::FamilyKey\20const&\29\20const 4048:skgpu::tess::\28anonymous\20namespace\29::write_curve_index_buffer_base_index\28skgpu::VertexWriter\2c\20unsigned\20long\2c\20unsigned\20short\29 4049:skgpu::tess::StrokeIterator::next\28\29 4050:skgpu::tess::StrokeIterator::finishOpenContour\28\29 4051:skgpu::tess::PreChopPathCurves\28float\2c\20SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\29 4052:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::~SmallPathOp\28\29 4053:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::SmallPathOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20GrStyledShape\20const&\2c\20SkMatrix\20const&\2c\20bool\2c\20GrUserStencilSettings\20const*\29 4054:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::recordDraw\28GrMeshDrawTarget*\2c\20int\2c\20unsigned\20long\2c\20void*\2c\20int\2c\20unsigned\20short*\29 4055:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::AAFlatteningConvexPathOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\2c\20float\2c\20SkStrokeRec::Style\2c\20SkPaint::Join\2c\20float\2c\20GrUserStencilSettings\20const*\29 4056:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::AAConvexPathOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\2c\20GrUserStencilSettings\20const*\29 4057:skgpu::ganesh::TextureOp::Make\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20SkAlphaType\2c\20sk_sp\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20skgpu::ganesh::TextureOp::Saturate\2c\20SkBlendMode\2c\20GrAAType\2c\20DrawQuad*\2c\20SkRect\20const*\29 4058:skgpu::ganesh::TessellationPathRenderer::IsSupported\28GrCaps\20const&\29 4059:skgpu::ganesh::SurfaceFillContext::fillRectToRectWithFP\28SkIRect\20const&\2c\20SkIRect\20const&\2c\20std::__2::unique_ptr>\29 4060:skgpu::ganesh::SurfaceFillContext::blitTexture\28GrSurfaceProxyView\2c\20SkIRect\20const&\2c\20SkIPoint\20const&\29 4061:skgpu::ganesh::SurfaceFillContext::addOp\28std::__2::unique_ptr>\29 4062:skgpu::ganesh::SurfaceFillContext::addDrawOp\28std::__2::unique_ptr>\29 4063:skgpu::ganesh::SurfaceDrawContext::~SurfaceDrawContext\28\29.1 4064:skgpu::ganesh::SurfaceDrawContext::drawVertices\28GrClip\20const*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20sk_sp\2c\20GrPrimitiveType*\2c\20bool\29 4065:skgpu::ganesh::SurfaceDrawContext::drawTexturedQuad\28GrClip\20const*\2c\20GrSurfaceProxyView\2c\20SkAlphaType\2c\20sk_sp\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkBlendMode\2c\20DrawQuad*\2c\20SkRect\20const*\29 4066:skgpu::ganesh::SurfaceDrawContext::drawTexture\28GrClip\20const*\2c\20GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkBlendMode\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20GrQuadAAFlags\2c\20SkCanvas::SrcRectConstraint\2c\20SkMatrix\20const&\2c\20sk_sp\29 4067:skgpu::ganesh::SurfaceDrawContext::drawStrokedLine\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkPoint\20const*\2c\20SkStrokeRec\20const&\29 4068:skgpu::ganesh::SurfaceDrawContext::drawRegion\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkRegion\20const&\2c\20GrStyle\20const&\2c\20GrUserStencilSettings\20const*\29 4069:skgpu::ganesh::SurfaceDrawContext::drawOval\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20GrStyle\20const&\29 4070:skgpu::ganesh::SurfaceDrawContext::SurfaceDrawContext\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20GrSurfaceProxyView\2c\20GrColorType\2c\20sk_sp\2c\20SkSurfaceProps\20const&\29 4071:skgpu::ganesh::SurfaceContext::~SurfaceContext\28\29 4072:skgpu::ganesh::SurfaceContext::writePixels\28GrDirectContext*\2c\20GrCPixmap\2c\20SkIPoint\29 4073:skgpu::ganesh::SurfaceContext::copy\28sk_sp\2c\20SkIRect\2c\20SkIPoint\29 4074:skgpu::ganesh::SurfaceContext::copyScaled\28sk_sp\2c\20SkIRect\2c\20SkIRect\2c\20SkFilterMode\29 4075:skgpu::ganesh::SurfaceContext::asyncRescaleAndReadPixels\28GrDirectContext*\2c\20SkImageInfo\20const&\2c\20SkIRect\20const&\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29 4076:skgpu::ganesh::SurfaceContext::asyncRescaleAndReadPixelsYUV420\28GrDirectContext*\2c\20SkYUVColorSpace\2c\20bool\2c\20sk_sp\2c\20SkIRect\20const&\2c\20SkISize\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29::FinishContext::~FinishContext\28\29 4077:skgpu::ganesh::SurfaceContext::asyncRescaleAndReadPixelsYUV420\28GrDirectContext*\2c\20SkYUVColorSpace\2c\20bool\2c\20sk_sp\2c\20SkIRect\20const&\2c\20SkISize\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29 4078:skgpu::ganesh::SurfaceContext::SurfaceContext\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20GrColorInfo\20const&\29 4079:skgpu::ganesh::StrokeTessellator::draw\28GrOpFlushState*\29\20const 4080:skgpu::ganesh::StrokeTessellateOp::prePrepareTessellator\28GrTessellationShader::ProgramArgs&&\2c\20GrAppliedClip&&\29 4081:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::NonAAStrokeRectOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20GrSimpleMeshDrawOpHelper::InputFlags\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20SkStrokeRec\20const&\2c\20GrAAType\29 4082:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::AAStrokeRectOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::RectInfo\20const&\2c\20bool\29 4083:skgpu::ganesh::StencilMaskHelper::drawShape\28GrShape\20const&\2c\20SkMatrix\20const&\2c\20SkRegion::Op\2c\20GrAA\29 4084:skgpu::ganesh::SoftwarePathRenderer::DrawAroundInvPath\28skgpu::ganesh::SurfaceDrawContext*\2c\20GrPaint&&\2c\20GrUserStencilSettings\20const&\2c\20GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20SkIRect\20const&\29 4085:skgpu::ganesh::SmallPathAtlasMgr::findOrCreate\28skgpu::ganesh::SmallPathShapeDataKey\20const&\29 4086:skgpu::ganesh::SmallPathAtlasMgr::deleteCacheEntry\28skgpu::ganesh::SmallPathShapeData*\29 4087:skgpu::ganesh::ShadowRRectOp::Make\28GrRecordingContext*\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkRRect\20const&\2c\20float\2c\20float\29 4088:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::RegionOpImpl\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkRegion\20const&\2c\20GrAAType\2c\20GrUserStencilSettings\20const*\29 4089:skgpu::ganesh::RasterAsView\28GrRecordingContext*\2c\20SkImage_Raster\20const*\2c\20skgpu::Mipmapped\2c\20GrImageTexGenPolicy\29 4090:skgpu::ganesh::QuadPerEdgeAA::Tessellator::append\28GrQuad*\2c\20GrQuad*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20GrQuadAAFlags\29 4091:skgpu::ganesh::QuadPerEdgeAA::Tessellator::Tessellator\28skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20char*\29 4092:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::initializeAttrs\28skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\29 4093:skgpu::ganesh::QuadPerEdgeAA::IssueDraw\28GrCaps\20const&\2c\20GrOpsRenderPass*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20int\2c\20int\2c\20int\2c\20int\29 4094:skgpu::ganesh::QuadPerEdgeAA::GetIndexBuffer\28GrMeshDrawTarget*\2c\20skgpu::ganesh::QuadPerEdgeAA::IndexBufferOption\29 4095:skgpu::ganesh::PathTessellateOp::usesMSAA\28\29\20const 4096:skgpu::ganesh::PathTessellateOp::prepareTessellator\28GrTessellationShader::ProgramArgs\20const&\2c\20GrAppliedClip&&\29 4097:skgpu::ganesh::PathTessellateOp::PathTessellateOp\28SkArenaAlloc*\2c\20GrAAType\2c\20GrUserStencilSettings\20const*\2c\20SkMatrix\20const&\2c\20SkPath\20const&\2c\20GrPaint&&\2c\20SkRect\20const&\29 4098:skgpu::ganesh::PathStencilCoverOp::prePreparePrograms\28GrTessellationShader::ProgramArgs\20const&\2c\20GrAppliedClip&&\29 4099:skgpu::ganesh::PathInnerTriangulateOp::prePreparePrograms\28GrTessellationShader::ProgramArgs\20const&\2c\20GrAppliedClip&&\29 4100:skgpu::ganesh::PathCurveTessellator::~PathCurveTessellator\28\29 4101:skgpu::ganesh::PathCurveTessellator::prepareWithTriangles\28GrMeshDrawTarget*\2c\20SkMatrix\20const&\2c\20GrTriangulator::BreadcrumbTriangleList*\2c\20skgpu::ganesh::PathTessellator::PathDrawList\20const&\2c\20int\29 4102:skgpu::ganesh::OpsTask::onMakeClosed\28GrRecordingContext*\2c\20SkIRect*\29 4103:skgpu::ganesh::OpsTask::onExecute\28GrOpFlushState*\29 4104:skgpu::ganesh::OpsTask::addOp\28GrDrawingManager*\2c\20std::__2::unique_ptr>\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29 4105:skgpu::ganesh::OpsTask::addDrawOp\28GrDrawingManager*\2c\20std::__2::unique_ptr>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29 4106:skgpu::ganesh::OpsTask::OpsTask\28GrDrawingManager*\2c\20GrSurfaceProxyView\2c\20GrAuditTrail*\2c\20sk_sp\29 4107:skgpu::ganesh::OpsTask::OpChain::tryConcat\28skgpu::ganesh::OpsTask::OpChain::List*\2c\20GrProcessorSet::Analysis\2c\20GrDstProxyView\20const&\2c\20GrAppliedClip\20const*\2c\20SkRect\20const&\2c\20GrCaps\20const&\2c\20SkArenaAlloc*\2c\20GrAuditTrail*\29 4108:skgpu::ganesh::MakeFragmentProcessorFromView\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkSamplingOptions\2c\20SkTileMode\20const*\2c\20SkMatrix\20const&\2c\20SkRect\20const*\2c\20SkRect\20const*\29 4109:skgpu::ganesh::LockTextureProxyView\28GrRecordingContext*\2c\20SkImage_Lazy\20const*\2c\20GrImageTexGenPolicy\2c\20skgpu::Mipmapped\29 4110:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::~NonAALatticeOp\28\29 4111:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::NonAALatticeOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20GrSurfaceProxyView\2c\20SkAlphaType\2c\20sk_sp\2c\20SkFilterMode\2c\20std::__2::unique_ptr>\2c\20SkRect\20const&\29 4112:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Make\28GrRecordingContext*\2c\20SkArenaAlloc*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkRRect\20const&\2c\20skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::LocalCoords\20const&\2c\20GrAA\29 4113:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::FillRRectOpImpl\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkArenaAlloc*\2c\20SkMatrix\20const&\2c\20SkRRect\20const&\2c\20skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::LocalCoords\20const&\2c\20skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::ProcessorFlags\29 4114:skgpu::ganesh::DrawAtlasPathOp::prepareProgram\28GrCaps\20const&\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 4115:skgpu::ganesh::Device::replaceBackingProxy\28SkSurface::ContentChangeMode\2c\20sk_sp\2c\20GrColorType\2c\20sk_sp\2c\20GrSurfaceOrigin\2c\20SkSurfaceProps\20const&\29 4116:skgpu::ganesh::Device::makeSpecial\28SkBitmap\20const&\29 4117:skgpu::ganesh::Device::drawPath\28SkPath\20const&\2c\20SkPaint\20const&\2c\20bool\29 4118:skgpu::ganesh::Device::drawEdgeAAImage\28SkImage\20const*\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkMatrix\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\2c\20SkMatrix\20const&\2c\20SkTileMode\29 4119:skgpu::ganesh::Device::discard\28\29 4120:skgpu::ganesh::Device::android_utils_clipAsRgn\28SkRegion*\29\20const 4121:skgpu::ganesh::DefaultPathRenderer::internalDrawPath\28skgpu::ganesh::SurfaceDrawContext*\2c\20GrPaint&&\2c\20GrAAType\2c\20GrUserStencilSettings\20const&\2c\20GrClip\20const*\2c\20SkMatrix\20const&\2c\20GrStyledShape\20const&\2c\20bool\29 4122:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingCircleEffect::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 4123:skgpu::ganesh::CopyView\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20skgpu::Mipmapped\2c\20GrImageTexGenPolicy\2c\20std::__2::basic_string_view>\29 4124:skgpu::ganesh::ClipStack::clipPath\28SkMatrix\20const&\2c\20SkPath\20const&\2c\20GrAA\2c\20SkClipOp\29 4125:skgpu::ganesh::ClipStack::SaveRecord::replaceWithElement\28skgpu::ganesh::ClipStack::RawElement&&\2c\20SkTBlockList*\29 4126:skgpu::ganesh::ClipStack::SaveRecord::addElement\28skgpu::ganesh::ClipStack::RawElement&&\2c\20SkTBlockList*\29 4127:skgpu::ganesh::ClipStack::RawElement::contains\28skgpu::ganesh::ClipStack::Draw\20const&\29\20const 4128:skgpu::ganesh::AtlasTextOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 4129:skgpu::ganesh::AtlasTextOp::AtlasTextOp\28skgpu::ganesh::AtlasTextOp::MaskType\2c\20bool\2c\20int\2c\20SkRect\2c\20skgpu::ganesh::AtlasTextOp::Geometry*\2c\20GrColorInfo\20const&\2c\20GrPaint&&\29 4130:skgpu::ganesh::AtlasRenderTask::stencilAtlasRect\28GrRecordingContext*\2c\20SkRect\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20GrUserStencilSettings\20const*\29 4131:skgpu::ganesh::AtlasRenderTask::addPath\28SkMatrix\20const&\2c\20SkPath\20const&\2c\20SkIPoint\2c\20int\2c\20int\2c\20bool\2c\20SkIPoint16*\29 4132:skgpu::ganesh::AtlasPathRenderer::preFlush\28GrOnFlushResourceProvider*\29 4133:skgpu::ganesh::AtlasPathRenderer::addPathToAtlas\28GrRecordingContext*\2c\20SkMatrix\20const&\2c\20SkPath\20const&\2c\20SkRect\20const&\2c\20SkIRect*\2c\20SkIPoint16*\2c\20bool*\2c\20std::__2::function\20const&\29 4134:skgpu::ganesh::AsFragmentProcessor\28GrRecordingContext*\2c\20SkImage\20const*\2c\20SkSamplingOptions\2c\20SkTileMode\20const*\2c\20SkMatrix\20const&\2c\20SkRect\20const*\2c\20SkRect\20const*\29 4135:skgpu::TiledTextureUtils::OptimizeSampleArea\28SkISize\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkPoint\20const*\2c\20SkRect*\2c\20SkRect*\2c\20SkMatrix*\29 4136:skgpu::TClientMappedBufferManager::process\28\29 4137:skgpu::TAsyncReadResult::~TAsyncReadResult\28\29 4138:skgpu::RectanizerSkyline::addRect\28int\2c\20int\2c\20SkIPoint16*\29 4139:skgpu::Plot::Plot\28int\2c\20int\2c\20skgpu::AtlasGenerationCounter*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20SkColorType\2c\20unsigned\20long\29 4140:skgpu::GetReducedBlendModeInfo\28SkBlendMode\29 4141:skgpu::BlendFuncName\28SkBlendMode\29 4142:skcms_private::baseline::exec_stages\28skcms_private::Op\20const*\2c\20void\20const**\2c\20char\20const*\2c\20char*\2c\20int\29 4143:skcms_private::baseline::clut\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20char\20const*\2c\20unsigned\20char\20const*\2c\20unsigned\20char\20const*\2c\20float\20vector\5b4\5d*\2c\20float\20vector\5b4\5d*\2c\20float\20vector\5b4\5d*\2c\20float\20vector\5b4\5d*\29 4144:skcms_ApproximatelyEqualProfiles 4145:sk_sp\20sk_make_sp\2c\20SkSurfaceProps\20const*&>\28SkImageInfo\20const&\2c\20sk_sp&&\2c\20SkSurfaceProps\20const*&\29 4146:sk_sp*\20emscripten::internal::MemberAccess>::getWire\28sk_sp\20SkRuntimeEffect::TracedShader::*\20const&\2c\20SkRuntimeEffect::TracedShader\20const&\29 4147:sk_fopen\28char\20const*\2c\20SkFILE_Flags\29 4148:sk_fgetsize\28_IO_FILE*\29 4149:sk_fclose\28_IO_FILE*\29 4150:sk_error_fn\28png_struct_def*\2c\20char\20const*\29 4151:setup_masks_arabic_plan\28arabic_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_script_t\29 4152:set_khr_debug_label\28GrGLGpu*\2c\20unsigned\20int\2c\20std::__2::basic_string_view>\29 4153:setThrew 4154:setCommonICUData\28UDataMemory*\2c\20signed\20char\2c\20UErrorCode*\29 4155:serialize_image\28SkImage\20const*\2c\20SkSerialProcs\29 4156:send_tree 4157:sect_with_vertical\28SkPoint\20const*\2c\20float\29 4158:sect_with_horizontal\28SkPoint\20const*\2c\20float\29 4159:scanexp 4160:scalbnl 4161:rewind_if_necessary\28GrTriangulator::Edge*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Comparator\20const&\29 4162:resolveImplicitLevels\28UBiDi*\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\29 4163:reset_and_decode_image_config\28wuffs_gif__decoder__struct*\2c\20wuffs_base__image_config__struct*\2c\20wuffs_base__io_buffer__struct*\2c\20SkStream*\29 4164:res_unload_73 4165:res_countArrayItems_73 4166:renderbuffer_storage_msaa\28GrGLGpu*\2c\20int\2c\20unsigned\20int\2c\20int\2c\20int\29 4167:recursive_edge_intersect\28GrTriangulator::Line\20const&\2c\20SkPoint\2c\20SkPoint\2c\20GrTriangulator::Line\20const&\2c\20SkPoint\2c\20SkPoint\2c\20SkPoint*\2c\20double*\2c\20double*\29 4168:reclassify_vertex\28TriangulationVertex*\2c\20SkPoint\20const*\2c\20int\2c\20ReflexHash*\2c\20SkTInternalLList*\29 4169:read_metadata\28std::__2::vector>\20const&\2c\20unsigned\20int\2c\20unsigned\20char\20const*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\29 4170:quad_intercept_v\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 4171:quad_intercept_h\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 4172:quad_in_line\28SkPoint\20const*\29 4173:psh_hint_table_init 4174:psh_hint_table_find_strong_points 4175:psh_hint_table_activate_mask 4176:psh_hint_align 4177:psh_glyph_interpolate_strong_points 4178:psh_glyph_interpolate_other_points 4179:psh_glyph_interpolate_normal_points 4180:psh_blues_set_zones 4181:ps_parser_load_field 4182:ps_dimension_end 4183:ps_dimension_done 4184:ps_builder_start_point 4185:printf_core 4186:premultiply_argb_as_rgba\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 4187:premultiply_argb_as_bgra\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 4188:position_cluster\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20bool\29 4189:portable::uniform_color_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 4190:portable::set_rgb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 4191:portable::scale_1_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 4192:portable::memset64\28unsigned\20long\20long*\2c\20unsigned\20long\20long\2c\20int\29 4193:portable::lerp_1_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 4194:portable::copy_from_indirect_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 4195:portable::copy_2_slots_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 4196:portable::check_decal_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 4197:pop_arg 4198:pntz 4199:png_inflate 4200:png_deflate_claim 4201:png_decompress_chunk 4202:png_cache_unknown_chunk 4203:optimize_layer_filter\28SkImageFilter\20const*\2c\20SkPaint*\29 4204:operator==\28SkPaint\20const&\2c\20SkPaint\20const&\29 4205:open_face 4206:openCommonData\28char\20const*\2c\20int\2c\20UErrorCode*\29 4207:offsetTOCEntryCount\28UDataMemory\20const*\29 4208:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::SDFTSubRun::vertexStride\28SkMatrix\20const&\29\20const 4209:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::~DirectMaskSubRun\28\29.1 4210:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::~DirectMaskSubRun\28\29 4211:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::testingOnly_packedGlyphIDToGlyph\28sktext::gpu::StrikeCache*\29\20const 4212:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::glyphs\28\29\20const 4213:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::glyphCount\28\29\20const 4214:non-virtual\20thunk\20to\20SkMeshPriv::CpuBuffer::~CpuBuffer\28\29.1 4215:non-virtual\20thunk\20to\20SkMeshPriv::CpuBuffer::~CpuBuffer\28\29 4216:non-virtual\20thunk\20to\20SkMeshPriv::CpuBuffer::size\28\29\20const 4217:non-virtual\20thunk\20to\20SkMeshPriv::CpuBuffer::onUpdate\28GrDirectContext*\2c\20void\20const*\2c\20unsigned\20long\2c\20unsigned\20long\29 4218:nearly_equal\28double\2c\20double\29 4219:mbsrtowcs 4220:map_quad_general\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20SkMatrix\20const&\2c\20skvx::Vec<4\2c\20float>*\2c\20skvx::Vec<4\2c\20float>*\2c\20skvx::Vec<4\2c\20float>*\29 4221:make_tiled_gradient\28GrFPArgs\20const&\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20bool\2c\20bool\29 4222:make_premul_effect\28std::__2::unique_ptr>\29 4223:make_dual_interval_colorizer\28SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20float\29 4224:make_clamped_gradient\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20SkRGBA4f<\28SkAlphaType\292>\2c\20SkRGBA4f<\28SkAlphaType\292>\2c\20bool\29 4225:make_bmp_proxy\28GrProxyProvider*\2c\20SkBitmap\20const&\2c\20GrColorType\2c\20skgpu::Mipmapped\2c\20SkBackingFit\2c\20skgpu::Budgeted\29 4226:longest_match 4227:long\20std::__2::__num_get_signed_integral\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\2c\20int\29 4228:long\20long\20std::__2::__num_get_signed_integral\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\2c\20int\29 4229:long\20double\20std::__2::__num_get_float\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\29 4230:load_post_names 4231:line_intercept_v\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 4232:line_intercept_h\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 4233:legalfunc$_embind_register_bigint 4234:jpeg_open_backing_store 4235:jpeg_destroy 4236:jpeg_alloc_huff_table 4237:jinit_upsampler 4238:isSpecialTypeCodepoints\28char\20const*\29 4239:internal_memalign 4240:int\20icu_73::\28anonymous\20namespace\29::MixedBlocks::findBlock\28unsigned\20short\20const*\2c\20unsigned\20short\20const*\2c\20int\29\20const 4241:int\20icu_73::\28anonymous\20namespace\29::MixedBlocks::findBlock\28unsigned\20short\20const*\2c\20unsigned\20int\20const*\2c\20int\29\20const 4242:insertRootBundle\28UResourceDataEntry*&\2c\20UErrorCode*\29 4243:initial_reordering_consonant_syllable\28hb_ot_shape_plan_t\20const*\2c\20hb_face_t*\2c\20hb_buffer_t*\2c\20unsigned\20int\2c\20unsigned\20int\29 4244:init_error_limit 4245:init_block 4246:image_filter_color_type\28SkImageInfo\29 4247:icu_73::set32x64Bits\28unsigned\20int*\2c\20int\2c\20int\29 4248:icu_73::getExtName\28unsigned\20int\2c\20char*\2c\20unsigned\20short\29 4249:icu_73::compareUnicodeString\28UElement\2c\20UElement\29 4250:icu_73::cloneUnicodeString\28UElement*\2c\20UElement*\29 4251:icu_73::\28anonymous\20namespace\29::mungeCharName\28char*\2c\20char\20const*\2c\20int\29 4252:icu_73::\28anonymous\20namespace\29::MutableCodePointTrie::getDataBlock\28int\29 4253:icu_73::UnicodeString::setCharAt\28int\2c\20char16_t\29 4254:icu_73::UnicodeString::indexOf\28char16_t\20const*\2c\20int\2c\20int\2c\20int\2c\20int\29\20const 4255:icu_73::UnicodeString::doReverse\28int\2c\20int\29 4256:icu_73::UnicodeSetStringSpan::span\28char16_t\20const*\2c\20int\2c\20USetSpanCondition\29\20const 4257:icu_73::UnicodeSetStringSpan::spanUTF8\28unsigned\20char\20const*\2c\20int\2c\20USetSpanCondition\29\20const 4258:icu_73::UnicodeSetStringSpan::spanBack\28char16_t\20const*\2c\20int\2c\20USetSpanCondition\29\20const 4259:icu_73::UnicodeSetStringSpan::spanBackUTF8\28unsigned\20char\20const*\2c\20int\2c\20USetSpanCondition\29\20const 4260:icu_73::UnicodeSet::set\28int\2c\20int\29 4261:icu_73::UnicodeSet::setPattern\28char16_t\20const*\2c\20int\29 4262:icu_73::UnicodeSet::remove\28int\29 4263:icu_73::UnicodeSet::removeAll\28icu_73::UnicodeSet\20const&\29 4264:icu_73::UnicodeSet::matches\28icu_73::Replaceable\20const&\2c\20int&\2c\20int\2c\20signed\20char\29 4265:icu_73::UnicodeSet::matchesIndexValue\28unsigned\20char\29\20const 4266:icu_73::UnicodeSet::clone\28\29\20const 4267:icu_73::UnicodeSet::cloneAsThawed\28\29\20const 4268:icu_73::UnicodeSet::applyPattern\28icu_73::RuleCharacterIterator&\2c\20icu_73::SymbolTable\20const*\2c\20icu_73::UnicodeString&\2c\20unsigned\20int\2c\20icu_73::UnicodeSet&\20\28icu_73::UnicodeSet::*\29\28int\29\2c\20int\2c\20UErrorCode&\29 4269:icu_73::UnicodeSet::applyPatternIgnoreSpace\28icu_73::UnicodeString\20const&\2c\20icu_73::ParsePosition&\2c\20icu_73::SymbolTable\20const*\2c\20UErrorCode&\29 4270:icu_73::UnicodeSet::add\28icu_73::UnicodeString\20const&\29 4271:icu_73::UnicodeSet::addAll\28icu_73::UnicodeSet\20const&\29 4272:icu_73::UnicodeSet::_generatePattern\28icu_73::UnicodeString&\2c\20signed\20char\29\20const 4273:icu_73::UnicodeSet::UnicodeSet\28int\2c\20int\29 4274:icu_73::UVector::sortedInsert\28void*\2c\20int\20\28*\29\28UElement\2c\20UElement\29\2c\20UErrorCode&\29 4275:icu_73::UVector::setElementAt\28void*\2c\20int\29 4276:icu_73::UVector::assign\28icu_73::UVector\20const&\2c\20void\20\28*\29\28UElement*\2c\20UElement*\29\2c\20UErrorCode&\29 4277:icu_73::UStringSet::~UStringSet\28\29.1 4278:icu_73::UStringSet::~UStringSet\28\29 4279:icu_73::UStack::UStack\28void\20\28*\29\28void*\29\2c\20signed\20char\20\28*\29\28UElement\2c\20UElement\29\2c\20UErrorCode&\29 4280:icu_73::UDataPathIterator::UDataPathIterator\28char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20signed\20char\2c\20UErrorCode*\29 4281:icu_73::UCharsTrieBuilder::build\28UStringTrieBuildOption\2c\20UErrorCode&\29 4282:icu_73::UCharsTrieBuilder::UCharsTrieBuilder\28UErrorCode&\29 4283:icu_73::UCharsTrie::nextForCodePoint\28int\29 4284:icu_73::UCharsTrie::Iterator::next\28UErrorCode&\29 4285:icu_73::UCharsTrie::Iterator::branchNext\28char16_t\20const*\2c\20int\2c\20UErrorCode&\29 4286:icu_73::UCharCharacterIterator::setText\28icu_73::ConstChar16Ptr\2c\20int\29 4287:icu_73::StringTrieBuilder::writeBranchSubNode\28int\2c\20int\2c\20int\2c\20int\29 4288:icu_73::StringTrieBuilder::LinearMatchNode::operator==\28icu_73::StringTrieBuilder::Node\20const&\29\20const 4289:icu_73::StringTrieBuilder::LinearMatchNode::markRightEdgesFirst\28int\29 4290:icu_73::RuleCharacterIterator::skipIgnored\28int\29 4291:icu_73::RuleBasedBreakIterator::~RuleBasedBreakIterator\28\29 4292:icu_73::RuleBasedBreakIterator::handleSafePrevious\28int\29 4293:icu_73::RuleBasedBreakIterator::RuleBasedBreakIterator\28UErrorCode*\29 4294:icu_73::RuleBasedBreakIterator::DictionaryCache::~DictionaryCache\28\29 4295:icu_73::RuleBasedBreakIterator::DictionaryCache::populateDictionary\28int\2c\20int\2c\20int\2c\20int\29 4296:icu_73::RuleBasedBreakIterator::BreakCache::seek\28int\29 4297:icu_73::RuleBasedBreakIterator::BreakCache::current\28\29 4298:icu_73::ResourceArray::getValue\28int\2c\20icu_73::ResourceValue&\29\20const 4299:icu_73::ReorderingBuffer::equals\28unsigned\20char\20const*\2c\20unsigned\20char\20const*\29\20const 4300:icu_73::RBBIDataWrapper::removeReference\28\29 4301:icu_73::PropNameData::getPropertyOrValueEnum\28int\2c\20char\20const*\29 4302:icu_73::Normalizer2WithImpl::normalizeSecondAndAppend\28icu_73::UnicodeString&\2c\20icu_73::UnicodeString\20const&\2c\20signed\20char\2c\20UErrorCode&\29\20const 4303:icu_73::Normalizer2WithImpl::isNormalized\28icu_73::UnicodeString\20const&\2c\20UErrorCode&\29\20const 4304:icu_73::Normalizer2Impl::recompose\28icu_73::ReorderingBuffer&\2c\20int\2c\20signed\20char\29\20const 4305:icu_73::Normalizer2Impl::init\28int\20const*\2c\20UCPTrie\20const*\2c\20unsigned\20short\20const*\2c\20unsigned\20char\20const*\29 4306:icu_73::Normalizer2Impl::findNextFCDBoundary\28char16_t\20const*\2c\20char16_t\20const*\29\20const 4307:icu_73::Normalizer2Impl::decomposeUTF8\28unsigned\20int\2c\20unsigned\20char\20const*\2c\20unsigned\20char\20const*\2c\20icu_73::ByteSink*\2c\20icu_73::Edits*\2c\20UErrorCode&\29\20const 4308:icu_73::Normalizer2Impl::composeUTF8\28unsigned\20int\2c\20signed\20char\2c\20unsigned\20char\20const*\2c\20unsigned\20char\20const*\2c\20icu_73::ByteSink*\2c\20icu_73::Edits*\2c\20UErrorCode&\29\20const 4309:icu_73::Normalizer2Impl::composeQuickCheck\28char16_t\20const*\2c\20char16_t\20const*\2c\20signed\20char\2c\20UNormalizationCheckResult*\29\20const 4310:icu_73::Normalizer2Factory::getNFKC_CFImpl\28UErrorCode&\29 4311:icu_73::Normalizer2Factory::getInstance\28UNormalizationMode\2c\20UErrorCode&\29 4312:icu_73::Normalizer2::getNFCInstance\28UErrorCode&\29 4313:icu_73::Norm2AllModes::~Norm2AllModes\28\29 4314:icu_73::Norm2AllModes::createInstance\28icu_73::Normalizer2Impl*\2c\20UErrorCode&\29 4315:icu_73::NoopNormalizer2::normalizeSecondAndAppend\28icu_73::UnicodeString&\2c\20icu_73::UnicodeString\20const&\2c\20UErrorCode&\29\20const 4316:icu_73::NoopNormalizer2::isNormalized\28icu_73::UnicodeString\20const&\2c\20UErrorCode&\29\20const 4317:icu_73::MlBreakEngine::~MlBreakEngine\28\29 4318:icu_73::LocaleUtility::canonicalLocaleString\28icu_73::UnicodeString\20const*\2c\20icu_73::UnicodeString&\29 4319:icu_73::LocaleKeyFactory::LocaleKeyFactory\28int\29 4320:icu_73::LocaleKey::LocaleKey\28icu_73::UnicodeString\20const&\2c\20icu_73::UnicodeString\20const&\2c\20icu_73::UnicodeString\20const*\2c\20int\29 4321:icu_73::LocaleBuilder::build\28UErrorCode&\29 4322:icu_73::LocaleBuilder::LocaleBuilder\28\29 4323:icu_73::LocaleBased::setLocaleIDs\28char\20const*\2c\20char\20const*\29 4324:icu_73::Locale::setKeywordValue\28char\20const*\2c\20char\20const*\2c\20UErrorCode&\29 4325:icu_73::Locale::operator=\28icu_73::Locale&&\29 4326:icu_73::Locale::operator==\28icu_73::Locale\20const&\29\20const 4327:icu_73::Locale::createKeywords\28UErrorCode&\29\20const 4328:icu_73::LoadedNormalizer2Impl::load\28char\20const*\2c\20char\20const*\2c\20UErrorCode&\29 4329:icu_73::LaoBreakEngine::divideUpDictionaryRange\28UText*\2c\20int\2c\20int\2c\20icu_73::UVector32&\2c\20signed\20char\2c\20UErrorCode&\29\20const 4330:icu_73::InitCanonIterData::doInit\28icu_73::Normalizer2Impl*\2c\20UErrorCode&\29 4331:icu_73::ICU_Utility::shouldAlwaysBeEscaped\28int\29 4332:icu_73::ICU_Utility::isUnprintable\28int\29 4333:icu_73::ICU_Utility::escape\28icu_73::UnicodeString&\2c\20int\29 4334:icu_73::ICUServiceKey::parseSuffix\28icu_73::UnicodeString&\29 4335:icu_73::ICUService::~ICUService\28\29 4336:icu_73::ICUService::getVisibleIDs\28icu_73::UVector&\2c\20UErrorCode&\29\20const 4337:icu_73::ICUService::clearServiceCache\28\29 4338:icu_73::ICUNotifier::~ICUNotifier\28\29 4339:icu_73::Hashtable::put\28icu_73::UnicodeString\20const&\2c\20void*\2c\20UErrorCode&\29 4340:icu_73::DecomposeNormalizer2::hasBoundaryBefore\28int\29\20const 4341:icu_73::DecomposeNormalizer2::hasBoundaryAfter\28int\29\20const 4342:icu_73::CjkBreakEngine::~CjkBreakEngine\28\29 4343:icu_73::CjkBreakEngine::CjkBreakEngine\28icu_73::DictionaryMatcher*\2c\20icu_73::LanguageType\2c\20UErrorCode&\29 4344:icu_73::CharString::truncate\28int\29 4345:icu_73::CharString*\20icu_73::MemoryPool::create\28char\20const*&\2c\20UErrorCode&\29 4346:icu_73::CharString*\20icu_73::MemoryPool::create<>\28\29 4347:icu_73::CanonIterData::addToStartSet\28int\2c\20int\2c\20UErrorCode&\29 4348:icu_73::BytesTrie::next\28int\29 4349:icu_73::BytesTrie::branchNext\28unsigned\20char\20const*\2c\20int\2c\20int\29 4350:icu_73::ByteSinkUtil::appendCodePoint\28int\2c\20int\2c\20icu_73::ByteSink&\2c\20icu_73::Edits*\29 4351:icu_73::BreakIterator::getLocale\28ULocDataLocaleType\2c\20UErrorCode&\29\20const 4352:icu_73::BreakIterator::createCharacterInstance\28icu_73::Locale\20const&\2c\20UErrorCode&\29 4353:hb_vector_t\2c\20false>::resize\28int\2c\20bool\2c\20bool\29 4354:hb_vector_t\2c\20false>::resize\28int\2c\20bool\2c\20bool\29 4355:hb_utf8_t::next\28unsigned\20char\20const*\2c\20unsigned\20char\20const*\2c\20unsigned\20int*\2c\20unsigned\20int\29 4356:hb_unicode_script 4357:hb_unicode_mirroring_nil\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20void*\29 4358:hb_unicode_funcs_t::is_default_ignorable\28unsigned\20int\29 4359:hb_shape_plan_key_t::init\28bool\2c\20hb_face_t*\2c\20hb_segment_properties_t\20const*\2c\20hb_feature_t\20const*\2c\20unsigned\20int\2c\20int\20const*\2c\20unsigned\20int\2c\20char\20const*\20const*\29 4360:hb_shape_plan_create2 4361:hb_serialize_context_t::fini\28\29 4362:hb_sanitize_context_t::return_t\20AAT::ChainSubtable::dispatch\28hb_sanitize_context_t*\29\20const 4363:hb_sanitize_context_t::return_t\20AAT::ChainSubtable::dispatch\28hb_sanitize_context_t*\29\20const 4364:hb_paint_extents_paint_linear_gradient\28hb_paint_funcs_t*\2c\20void*\2c\20hb_color_line_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 4365:hb_paint_extents_get_funcs\28\29 4366:hb_paint_extents_context_t::hb_paint_extents_context_t\28\29 4367:hb_ot_map_t::fini\28\29 4368:hb_ot_layout_table_select_script 4369:hb_ot_layout_table_get_lookup_count 4370:hb_ot_layout_table_find_feature_variations 4371:hb_ot_layout_table_find_feature\28hb_face_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\29 4372:hb_ot_layout_script_select_language 4373:hb_ot_layout_language_get_required_feature 4374:hb_ot_layout_language_find_feature 4375:hb_ot_layout_has_substitution 4376:hb_ot_layout_feature_with_variations_get_lookups 4377:hb_ot_layout_collect_features_map 4378:hb_ot_font_set_funcs 4379:hb_lazy_loader_t\2c\20hb_face_t\2c\2038u\2c\20OT::sbix_accelerator_t>::create\28hb_face_t*\29 4380:hb_lazy_loader_t\2c\20hb_face_t\2c\207u\2c\20OT::post_accelerator_t>::get\28\29\20const 4381:hb_lazy_loader_t\2c\20hb_face_t\2c\2019u\2c\20hb_blob_t>::get\28\29\20const 4382:hb_lazy_loader_t\2c\20hb_face_t\2c\2035u\2c\20hb_blob_t>::get\28\29\20const 4383:hb_lazy_loader_t\2c\20hb_face_t\2c\2037u\2c\20OT::CBDT_accelerator_t>::get\28\29\20const 4384:hb_lazy_loader_t\2c\20hb_face_t\2c\2032u\2c\20hb_blob_t>::get\28\29\20const 4385:hb_lazy_loader_t\2c\20hb_face_t\2c\2028u\2c\20hb_blob_t>::get\28\29\20const 4386:hb_lazy_loader_t\2c\20hb_face_t\2c\2029u\2c\20hb_blob_t>::get\28\29\20const 4387:hb_language_matches 4388:hb_indic_get_categories\28unsigned\20int\29 4389:hb_hashmap_t::fetch_item\28hb_serialize_context_t::object_t\20const*\20const&\2c\20unsigned\20int\29\20const 4390:hb_hashmap_t::alloc\28unsigned\20int\29 4391:hb_font_t::get_glyph_v_origin_with_fallback\28unsigned\20int\2c\20int*\2c\20int*\29 4392:hb_font_set_variations 4393:hb_font_set_funcs 4394:hb_font_get_variation_glyph_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 4395:hb_font_get_glyph_h_advance 4396:hb_font_get_glyph_extents 4397:hb_font_get_font_h_extents_nil\28hb_font_t*\2c\20void*\2c\20hb_font_extents_t*\2c\20void*\29 4398:hb_font_funcs_set_variation_glyph_func 4399:hb_font_funcs_set_nominal_glyphs_func 4400:hb_font_funcs_set_nominal_glyph_func 4401:hb_font_funcs_set_glyph_h_advances_func 4402:hb_font_funcs_set_glyph_extents_func 4403:hb_font_funcs_create 4404:hb_draw_move_to_nil\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20void*\29 4405:hb_draw_funcs_set_quadratic_to_func 4406:hb_draw_funcs_set_move_to_func 4407:hb_draw_funcs_set_line_to_func 4408:hb_draw_funcs_set_cubic_to_func 4409:hb_draw_funcs_destroy 4410:hb_draw_funcs_create 4411:hb_draw_extents_move_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20void*\29 4412:hb_buffer_t::sort\28unsigned\20int\2c\20unsigned\20int\2c\20int\20\28*\29\28hb_glyph_info_t\20const*\2c\20hb_glyph_info_t\20const*\29\29 4413:hb_buffer_t::safe_to_insert_tatweel\28unsigned\20int\2c\20unsigned\20int\29 4414:hb_buffer_t::output_info\28hb_glyph_info_t\20const&\29 4415:hb_buffer_t::message_impl\28hb_font_t*\2c\20char\20const*\2c\20void*\29 4416:hb_buffer_t::leave\28\29 4417:hb_buffer_t::delete_glyphs_inplace\28bool\20\28*\29\28hb_glyph_info_t\20const*\29\29 4418:hb_buffer_t::clear_positions\28\29 4419:hb_buffer_set_length 4420:hb_buffer_get_glyph_positions 4421:hb_buffer_diff 4422:hb_buffer_create 4423:hb_buffer_clear_contents 4424:hb_buffer_add_utf8 4425:hb_blob_t*\20hb_sanitize_context_t::sanitize_blob\28hb_blob_t*\29 4426:hb_blob_t*\20hb_sanitize_context_t::sanitize_blob\28hb_blob_t*\29 4427:hb_blob_t*\20hb_sanitize_context_t::sanitize_blob\28hb_blob_t*\29 4428:hb_blob_t*\20hb_sanitize_context_t::sanitize_blob\28hb_blob_t*\29 4429:hb_blob_t*\20hb_sanitize_context_t::sanitize_blob\28hb_blob_t*\29 4430:hb_blob_t*\20hb_sanitize_context_t::sanitize_blob\28hb_blob_t*\29 4431:hb_aat_layout_remove_deleted_glyphs\28hb_buffer_t*\29 4432:hair_cubic\28SkPoint\20const*\2c\20SkRegion\20const*\2c\20SkBlitter*\2c\20void\20\28*\29\28SkPoint\20const*\2c\20int\2c\20SkRegion\20const*\2c\20SkBlitter*\29\29 4433:getint 4434:get_win_string 4435:get_layer_mapping_and_bounds\28SkSpan>\2c\20SkMatrix\20const&\2c\20skif::DeviceSpace\20const&\2c\20std::__2::optional>\2c\20bool\2c\20float\29 4436:get_dst_swizzle_and_store\28GrColorType\2c\20SkRasterPipelineOp*\2c\20LumMode*\2c\20bool*\2c\20bool*\29 4437:get_driver_and_version\28GrGLStandard\2c\20GrGLVendor\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\29 4438:get_cicp_trfn\28skcms_TransferFunction\20const&\29 4439:get_cicp_primaries\28skcms_Matrix3x3\20const&\29 4440:getFallbackData\28UResourceBundle\20const*\2c\20char\20const**\2c\20unsigned\20int*\2c\20UErrorCode*\29 4441:gen_key\28skgpu::KeyBuilder*\2c\20GrProgramInfo\20const&\2c\20GrCaps\20const&\29 4442:gen_fp_key\28GrFragmentProcessor\20const&\2c\20GrCaps\20const&\2c\20skgpu::KeyBuilder*\29 4443:gather_uniforms_and_check_for_main\28SkSL::Program\20const&\2c\20std::__2::vector>*\2c\20std::__2::vector>*\2c\20SkRuntimeEffect::Uniform::Flags\2c\20unsigned\20long*\29 4444:fwrite 4445:ft_var_to_normalized 4446:ft_var_load_item_variation_store 4447:ft_var_load_hvvar 4448:ft_var_load_avar 4449:ft_var_get_value_pointer 4450:ft_var_apply_tuple 4451:ft_validator_init 4452:ft_mem_strcpyn 4453:ft_hash_num_lookup 4454:ft_glyphslot_set_bitmap 4455:ft_glyphslot_preset_bitmap 4456:ft_corner_orientation 4457:ft_corner_is_flat 4458:frexp 4459:free_entry\28UResourceDataEntry*\29 4460:fread 4461:fp_force_eval 4462:fp_barrier.1 4463:fopen 4464:fold_opacity_layer_color_to_paint\28SkPaint\20const*\2c\20bool\2c\20SkPaint*\29 4465:fmodl 4466:float\20std::__2::__num_get_float\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\29 4467:fill_shadow_rec\28SkPath\20const&\2c\20SkPoint3\20const&\2c\20SkPoint3\20const&\2c\20float\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkDrawShadowRec*\29 4468:fill_inverse_cmap 4469:fileno 4470:examine_app0 4471:emscripten::internal::MethodInvoker::invoke\28void\20\28SkCanvas::*\20const&\29\28SkPath\20const&\2c\20SkClipOp\2c\20bool\29\2c\20SkCanvas*\2c\20SkPath*\2c\20SkClipOp\2c\20bool\29 4472:emscripten::internal::Invoker\2c\20sk_sp\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28sk_sp\2c\20sk_sp\29\2c\20sk_sp*\2c\20sk_sp*\29 4473:emscripten::internal::Invoker\2c\20SkBlendMode\2c\20sk_sp\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28SkBlendMode\2c\20sk_sp\2c\20sk_sp\29\2c\20SkBlendMode\2c\20sk_sp*\2c\20sk_sp*\29 4474:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20unsigned\20long\2c\20int\29\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\29 4475:emscripten::internal::Invoker\2c\20SkBlendMode>::invoke\28sk_sp\20\28*\29\28SkBlendMode\29\2c\20SkBlendMode\29 4476:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\29\2c\20SkPath*\2c\20float\2c\20float\2c\20float\2c\20float\29 4477:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkPath&\2c\20float\2c\20float\29\2c\20SkPath*\2c\20float\2c\20float\29 4478:emscripten::internal::FunctionInvoker\29\2c\20void\2c\20SkPaint&\2c\20unsigned\20long\2c\20sk_sp>::invoke\28void\20\28**\29\28SkPaint&\2c\20unsigned\20long\2c\20sk_sp\29\2c\20SkPaint*\2c\20unsigned\20long\2c\20sk_sp*\29 4479:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkCanvas&\2c\20skia::textlayout::Paragraph*\2c\20float\2c\20float\29\2c\20SkCanvas*\2c\20skia::textlayout::Paragraph*\2c\20float\2c\20float\29 4480:emscripten::internal::FunctionInvoker\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20SkBlendMode\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29\2c\20void\2c\20SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20SkBlendMode\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*>::invoke\28void\20\28**\29\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20SkBlendMode\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29\2c\20SkCanvas*\2c\20sk_sp*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20SkBlendMode\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29 4481:emscripten::internal::FunctionInvoker\20const&\2c\20float\2c\20float\2c\20SkPaint\20const*\29\2c\20void\2c\20SkCanvas&\2c\20sk_sp\20const&\2c\20float\2c\20float\2c\20SkPaint\20const*>::invoke\28void\20\28**\29\28SkCanvas&\2c\20sk_sp\20const&\2c\20float\2c\20float\2c\20SkPaint\20const*\29\2c\20SkCanvas*\2c\20sk_sp*\2c\20float\2c\20float\2c\20SkPaint\20const*\29 4482:emscripten::internal::FunctionInvoker\20\28*\29\28SkCanvas&\2c\20SimpleImageInfo\29\2c\20sk_sp\2c\20SkCanvas&\2c\20SimpleImageInfo>::invoke\28sk_sp\20\28**\29\28SkCanvas&\2c\20SimpleImageInfo\29\2c\20SkCanvas*\2c\20SimpleImageInfo*\29 4483:emscripten::internal::FunctionInvoker\20\28*\29\28sk_sp\29\2c\20sk_sp\2c\20sk_sp>::invoke\28sk_sp\20\28**\29\28sk_sp\29\2c\20sk_sp*\29 4484:emscripten::internal::FunctionInvoker::invoke\28bool\20\28**\29\28SkPath&\2c\20SkPath\20const&\2c\20SkPathOp\29\2c\20SkPath*\2c\20SkPath*\2c\20SkPathOp\29 4485:embind_init_builtin\28\29 4486:embind_init_Skia\28\29 4487:embind_init_Paragraph\28\29::$_0::__invoke\28SimpleParagraphStyle\2c\20sk_sp\29 4488:embind_init_Paragraph\28\29 4489:embind_init_ParagraphGen\28\29 4490:edge_line_needs_recursion\28SkPoint\20const&\2c\20SkPoint\20const&\29 4491:draw_nine\28SkMask\20const&\2c\20SkIRect\20const&\2c\20SkIPoint\20const&\2c\20bool\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 4492:dquad_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 4493:dquad_intersect_ray\28SkDCurve\20const&\2c\20SkDLine\20const&\2c\20SkIntersections*\29 4494:double\20std::__2::__num_get_float\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\29 4495:doOpenChoice\28char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20signed\20char\20\28*\29\28void*\2c\20char\20const*\2c\20char\20const*\2c\20UDataInfo\20const*\29\2c\20void*\2c\20UErrorCode*\29 4496:dline_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 4497:dline_intersect_ray\28SkDCurve\20const&\2c\20SkDLine\20const&\2c\20SkIntersections*\29 4498:deserialize_image\28sk_sp\2c\20SkDeserialProcs\2c\20std::__2::optional\29 4499:deflate_stored 4500:decompose_current_character\28hb_ot_shape_normalize_context_t\20const*\2c\20bool\29 4501:decltype\28std::__2::__unwrap_iter_impl\2c\20true>::__unwrap\28std::declval>\28\29\29\29\20std::__2::__unwrap_iter\5babi:v160004\5d\2c\20std::__2::__unwrap_iter_impl\2c\20true>\2c\200>\28std::__2::__wrap_iter\29 4502:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::Make\28SkArenaAlloc*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 4503:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28bool&\2c\20skgpu::tess::PatchAttribs&\29::'lambda'\28void*\29>\28skgpu::ganesh::PathCurveTessellator&&\29::'lambda'\28char*\29::__invoke\28char*\29 4504:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\2c\20SkFilterMode\2c\20bool\29::'lambda'\28void*\29>\28skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::Make\28SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20sk_sp\2c\20SkFilterMode\2c\20bool\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 4505:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::MeshGP::Make\28SkArenaAlloc*\2c\20sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::MeshGP::Make\28SkArenaAlloc*\2c\20sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 4506:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::GaussPass::MakeMaker\28double\2c\20SkArenaAlloc*\29::Maker*\20SkArenaAlloc::make<\28anonymous\20namespace\29::GaussPass::MakeMaker\28double\2c\20SkArenaAlloc*\29::Maker\2c\20int&>\28int&\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::GaussPass::MakeMaker\28double\2c\20SkArenaAlloc*\29::Maker&&\29::'lambda'\28char*\29::__invoke\28char*\29 4507:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkShaderBase\20const&\2c\20bool\20const&\29::'lambda'\28void*\29>\28SkTransformShader&&\29::'lambda'\28char*\29::__invoke\28char*\29 4508:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkPixmap\20const&\2c\20SkPaint\20const&\29::'lambda'\28void*\29>\28SkA8_Blitter&&\29::'lambda'\28char*\29::__invoke\28char*\29 4509:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28skgpu::UniqueKey\20const&\2c\20GrSurfaceProxyView\20const&\29::'lambda'\28void*\29>\28GrThreadSafeCache::Entry&&\29::'lambda'\28char*\29::__invoke\28char*\29 4510:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28GrSurfaceProxy*&\2c\20skgpu::ScratchKey&&\2c\20GrResourceProvider*&\29::'lambda'\28void*\29>\28GrResourceAllocator::Register&&\29 4511:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\20const&\2c\20SkMatrix\20const&\2c\20GrCaps\20const&\2c\20SkMatrix\20const&\2c\20bool\2c\20unsigned\20char\29::'lambda'\28void*\29>\28GrQuadEffect::Make\28SkArenaAlloc*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20GrCaps\20const&\2c\20SkMatrix\20const&\2c\20bool\2c\20unsigned\20char\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 4512:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28GrPipeline::InitArgs&\2c\20GrProcessorSet&&\2c\20GrAppliedClip&&\29::'lambda'\28void*\29>\28GrPipeline&&\29::'lambda'\28char*\29::__invoke\28char*\29 4513:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28GrDistanceFieldA8TextGeoProc::Make\28SkArenaAlloc*\2c\20GrShaderCaps\20const&\2c\20GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\2c\20float\2c\20unsigned\20int\2c\20SkMatrix\20const&\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 4514:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\20const&\2c\20bool\2c\20sk_sp\2c\20GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\2c\20skgpu::MaskFormat\2c\20SkMatrix\20const&\2c\20bool\29::'lambda'\28void*\29>\28GrBitmapTextGeoProc::Make\28SkArenaAlloc*\2c\20GrShaderCaps\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20bool\2c\20sk_sp\2c\20GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\2c\20skgpu::MaskFormat\2c\20SkMatrix\20const&\2c\20bool\29::'lambda'\28void*\29&&\29 4515:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\20const&\2c\20SkMatrix\20const&\2c\20SkMatrix\20const&\2c\20bool\2c\20unsigned\20char\29::'lambda'\28void*\29>\28DefaultGeoProc::Make\28SkArenaAlloc*\2c\20unsigned\20int\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkMatrix\20const&\2c\20bool\2c\20unsigned\20char\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 4516:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\20const&\2c\20SkMatrix\20const&\2c\20SkMatrix\20const&\2c\20bool\2c\20unsigned\20char\29::'lambda'\28void*\29>\28DefaultGeoProc::Make\28SkArenaAlloc*\2c\20unsigned\20int\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkMatrix\20const&\2c\20bool\2c\20unsigned\20char\29::'lambda'\28void*\29&&\29 4517:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28CircleGeometryProcessor::Make\28SkArenaAlloc*\2c\20bool\2c\20bool\2c\20bool\2c\20bool\2c\20bool\2c\20bool\2c\20SkMatrix\20const&\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 4518:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul\2c\201ul>::__dispatch\5babi:v160004\5d>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__visitation::__variant::__value_visitor>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 4519:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul\2c\200ul>::__dispatch\5babi:v160004\5d\2c\20std::__2::unique_ptr>>>::__generic_construct\5babi:v160004\5d\2c\20std::__2::unique_ptr>>\2c\20\28std::__2::__variant_detail::_Trait\291>>\28std::__2::__variant_detail::__ctor\2c\20std::__2::unique_ptr>>>&\2c\20std::__2::__variant_detail::__move_constructor\2c\20std::__2::unique_ptr>>\2c\20\28std::__2::__variant_detail::_Trait\291>&&\29::'lambda'\28std::__2::__variant_detail::__move_constructor\2c\20std::__2::unique_ptr>>\2c\20\28std::__2::__variant_detail::_Trait\291>&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&&>\28std::__2::__variant_detail::__move_constructor\2c\20std::__2::unique_ptr>>\2c\20\28std::__2::__variant_detail::_Trait\291>\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&&\29 4520:dcubic_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 4521:dcubic_intersect_ray\28SkDCurve\20const&\2c\20SkDLine\20const&\2c\20SkIntersections*\29 4522:dconic_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 4523:dconic_intersect_ray\28SkDCurve\20const&\2c\20SkDLine\20const&\2c\20SkIntersections*\29 4524:data_destroy_arabic\28void*\29 4525:data_create_arabic\28hb_ot_shape_plan_t\20const*\29 4526:cycle 4527:cubic_intercept_v\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 4528:cubic_intercept_h\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 4529:create_colorindex 4530:copysignl 4531:copy_bitmap_subset\28SkBitmap\20const&\2c\20SkIRect\20const&\29 4532:conic_intercept_v\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 4533:conic_intercept_h\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 4534:compute_pos_tan\28SkPoint\20const*\2c\20unsigned\20int\2c\20float\2c\20SkPoint*\2c\20SkPoint*\29 4535:compute_intersection\28OffsetSegment\20const&\2c\20OffsetSegment\20const&\2c\20SkPoint*\2c\20float*\2c\20float*\29 4536:compress_block 4537:compose_khmer\28hb_ot_shape_normalize_context_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\29 4538:clipHandlesSprite\28SkRasterClip\20const&\2c\20int\2c\20int\2c\20SkPixmap\20const&\29 4539:clamp\28SkPoint\2c\20SkPoint\2c\20SkPoint\2c\20GrTriangulator::Comparator\20const&\29 4540:checkint 4541:check_inverse_on_empty_return\28SkRegion*\2c\20SkPath\20const&\2c\20SkRegion\20const&\29 4542:charIterTextAccess\28UText*\2c\20long\20long\2c\20signed\20char\29 4543:char*\20std::__2::copy\5babi:v160004\5d\2c\20char*>\28std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\2c\20char*\29 4544:char*\20std::__2::copy\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20char*\29 4545:cff_vstore_done 4546:cff_subfont_load 4547:cff_subfont_done 4548:cff_size_select 4549:cff_parser_run 4550:cff_make_private_dict 4551:cff_load_private_dict 4552:cff_index_get_name 4553:cff_get_kerning 4554:cff_blend_build_vector 4555:cf2_getSeacComponent 4556:cf2_computeDarkening 4557:cf2_arrstack_push 4558:cbrt 4559:byn$mgfn-shared$void\20extend_pts<\28SkPaint::Cap\292>\28SkPath::Verb\2c\20SkPath::Verb\2c\20SkPoint*\2c\20int\29 4560:byn$mgfn-shared$void\20SkSwizzler::SkipLeadingGrayAlphaZerosThen<&fast_swizzle_grayalpha_to_n32_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 4561:byn$mgfn-shared$virtual\20thunk\20to\20GrRenderTarget::onRelease\28\29 4562:byn$mgfn-shared$uloc_getName_73 4563:byn$mgfn-shared$uhash_put_73 4564:byn$mgfn-shared$ubidi_getClass_73 4565:byn$mgfn-shared$t1_hints_open 4566:byn$mgfn-shared$std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\29\20const 4567:byn$mgfn-shared$std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\20long\29\20const 4568:byn$mgfn-shared$std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20long\29\20const 4569:byn$mgfn-shared$std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20long\20long\29\20const 4570:byn$mgfn-shared$std::__2::ctype::do_toupper\28wchar_t*\2c\20wchar_t\20const*\29\20const 4571:byn$mgfn-shared$std::__2::ctype::do_toupper\28char*\2c\20char\20const*\29\20const 4572:byn$mgfn-shared$std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::__clone\28std::__2::__function::__base*\29\20const 4573:byn$mgfn-shared$std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::__clone\28\29\20const 4574:byn$mgfn-shared$std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::__clone\28std::__2::__function::__base&\29>*\29\20const 4575:byn$mgfn-shared$std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::__clone\28\29\20const 4576:byn$mgfn-shared$skia_private::TArray::push_back_raw\28int\29 4577:byn$mgfn-shared$skia_private::TArray::push_back_raw\28int\29 4578:byn$mgfn-shared$skia_private::TArray::push_back_raw\28int\29 4579:byn$mgfn-shared$skgpu::ganesh::\28anonymous\20namespace\29::HullShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::~Impl\28\29 4580:byn$mgfn-shared$skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::makeProgramImpl\28GrShaderCaps\20const&\29\20const 4581:byn$mgfn-shared$skgpu::ScratchKey::GenerateResourceType\28\29 4582:byn$mgfn-shared$skcms_TransferFunction_isPQish 4583:byn$mgfn-shared$setup_masks_khmer\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 4584:byn$mgfn-shared$portable::store_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 4585:byn$mgfn-shared$portable::load_8888_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 4586:byn$mgfn-shared$portable::load_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 4587:byn$mgfn-shared$portable::gather_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 4588:byn$mgfn-shared$non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::~DirectMaskSubRun\28\29.1 4589:byn$mgfn-shared$non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::~DirectMaskSubRun\28\29 4590:byn$mgfn-shared$make_unpremul_effect\28std::__2::unique_ptr>\29 4591:byn$mgfn-shared$icu_73::isAcceptable\28void*\2c\20char\20const*\2c\20char\20const*\2c\20UDataInfo\20const*\29 4592:byn$mgfn-shared$icu_73::ResourceDataValue::getIntVector\28int&\2c\20UErrorCode&\29\20const 4593:byn$mgfn-shared$hb_outline_recording_pen_move_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20void*\29 4594:byn$mgfn-shared$hb_lazy_loader_t\2c\20hb_face_t\2c\204u\2c\20hb_blob_t>::get\28\29\20const 4595:byn$mgfn-shared$embind_init_Skia\28\29::$_75::__invoke\28float\2c\20float\2c\20float\2c\20float\2c\20unsigned\20long\2c\20sk_sp\29 4596:byn$mgfn-shared$embind_init_Skia\28\29::$_72::__invoke\28float\2c\20float\2c\20sk_sp\29 4597:byn$mgfn-shared$embind_init_Skia\28\29::$_11::__invoke\28SkCanvas&\2c\20unsigned\20long\29 4598:byn$mgfn-shared$decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make::Node*\20SkArenaAlloc::make::Node\2c\20std::__2::function&\29>\2c\20skgpu::AtlasToken>\28std::__2::function&\29>&&\2c\20skgpu::AtlasToken&&\29::'lambda'\28void*\29>\28SkArenaAllocList::Node&&\29::'lambda'\28char*\29::__invoke\28char*\29 4599:byn$mgfn-shared$decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul\2c\201ul>::__dispatch\5babi:v160004\5d>::__generic_assign\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&>\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\29::'lambda'\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 4600:byn$mgfn-shared$cf2_stack_pushInt 4601:byn$mgfn-shared$__cxx_global_array_dtor.1 4602:byn$mgfn-shared$\28anonymous\20namespace\29::SDFTSubRun::regenerateAtlas\28int\2c\20int\2c\20std::__2::function\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>\29\20const 4603:byn$mgfn-shared$\28anonymous\20namespace\29::DrawAtlasPathShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 4604:byn$mgfn-shared$\28anonymous\20namespace\29::DirectMaskSubRun::~DirectMaskSubRun\28\29.1 4605:byn$mgfn-shared$\28anonymous\20namespace\29::DirectMaskSubRun::~DirectMaskSubRun\28\29 4606:byn$mgfn-shared$\28anonymous\20namespace\29::DirectMaskSubRun::glyphCount\28\29\20const 4607:byn$mgfn-shared$\28anonymous\20namespace\29::DirectMaskSubRun::draw\28SkCanvas*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20std::__2::function\2c\20sktext::gpu::RendererData\29>\20const&\29\20const 4608:byn$mgfn-shared$SkSL::optimize_intrinsic_call\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::IntrinsicKind\2c\20SkSL::ExpressionArray\20const&\2c\20SkSL::Type\20const&\29::$_0::operator\28\29\28int\29\20const 4609:byn$mgfn-shared$SkSL::RP::UnownedLValueSlice::~UnownedLValueSlice\28\29 4610:byn$mgfn-shared$SkSL::RP::LValue::~LValue\28\29.1 4611:byn$mgfn-shared$SkSL::ProgramUsage::add\28SkSL::ProgramElement\20const&\29 4612:byn$mgfn-shared$SkSL::ProgramUsage::add\28SkSL::Expression\20const*\29 4613:byn$mgfn-shared$SkSL::FunctionReference::clone\28SkSL::Position\29\20const 4614:byn$mgfn-shared$SkSL::EmptyExpression::clone\28SkSL::Position\29\20const 4615:byn$mgfn-shared$SkSL::ChildCall::description\28SkSL::OperatorPrecedence\29\20const 4616:byn$mgfn-shared$SkSL::ChildCall::clone\28SkSL::Position\29\20const 4617:byn$mgfn-shared$SkRuntimeBlender::~SkRuntimeBlender\28\29.1 4618:byn$mgfn-shared$SkRuntimeBlender::~SkRuntimeBlender\28\29 4619:byn$mgfn-shared$SkRecorder::onDrawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 4620:byn$mgfn-shared$SkRecorder::onDrawPaint\28SkPaint\20const&\29 4621:byn$mgfn-shared$SkRecorder::didScale\28float\2c\20float\29 4622:byn$mgfn-shared$SkRecorder::didConcat44\28SkM44\20const&\29 4623:byn$mgfn-shared$SkRasterPipelineBlitter::blitAntiH2\28int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 4624:byn$mgfn-shared$SkPictureRecord::onDrawPaint\28SkPaint\20const&\29 4625:byn$mgfn-shared$SkPictureRecord::onDrawOval\28SkRect\20const&\2c\20SkPaint\20const&\29 4626:byn$mgfn-shared$SkPictureRecord::didConcat44\28SkM44\20const&\29 4627:byn$mgfn-shared$SkPairPathEffect::~SkPairPathEffect\28\29.1 4628:byn$mgfn-shared$SkKnownRuntimeEffects::\28anonymous\20namespace\29::make_blur_1D_effect\28int\2c\20SkRuntimeEffect::Options\20const&\29 4629:byn$mgfn-shared$SkJSONWriter::endArray\28\29 4630:byn$mgfn-shared$SkComposePathEffect::~SkComposePathEffect\28\29 4631:byn$mgfn-shared$SkColorSpace::MakeSRGB\28\29 4632:byn$mgfn-shared$SkChopMonoCubicAtY\28SkPoint\20const*\2c\20float\2c\20SkPoint*\29 4633:byn$mgfn-shared$OT::PaintLinearGradient::sanitize\28hb_sanitize_context_t*\29\20const 4634:byn$mgfn-shared$GrRRectShadowGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 4635:byn$mgfn-shared$GrPathTessellationShader::Impl::~Impl\28\29 4636:byn$mgfn-shared$GrMakeUniqueKeyInvalidationListener\28skgpu::UniqueKey*\2c\20unsigned\20int\29::Listener::~Listener\28\29.1 4637:byn$mgfn-shared$GrMakeUniqueKeyInvalidationListener\28skgpu::UniqueKey*\2c\20unsigned\20int\29::Listener::~Listener\28\29 4638:byn$mgfn-shared$GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29::ComposeProcessor::clone\28\29\20const 4639:byn$mgfn-shared$GrDistanceFieldA8TextGeoProc::~GrDistanceFieldA8TextGeoProc\28\29.1 4640:byn$mgfn-shared$GrDistanceFieldA8TextGeoProc::~GrDistanceFieldA8TextGeoProc\28\29 4641:byn$mgfn-shared$GrColorSpaceXformEffect::~GrColorSpaceXformEffect\28\29.1 4642:byn$mgfn-shared$GrColorSpaceXformEffect::~GrColorSpaceXformEffect\28\29 4643:byn$mgfn-shared$GrBicubicEffect::onMakeProgramImpl\28\29\20const 4644:byn$mgfn-shared$Cr_z_inflate_table 4645:byn$mgfn-shared$BlendFragmentProcessor::onMakeProgramImpl\28\29\20const 4646:byn$mgfn-shared$AAT::Lookup>::get_value\28unsigned\20int\2c\20unsigned\20int\29\20const 4647:build_ycc_rgb_table 4648:bracketProcessChar\28BracketData*\2c\20int\29 4649:bracketInit\28UBiDi*\2c\20BracketData*\29 4650:bool\20std::__2::operator==\5babi:v160004\5d\28std::__2::unique_ptr\20const&\2c\20std::nullptr_t\29 4651:bool\20std::__2::operator!=\5babi:v160004\5d\28std::__2::variant\20const&\2c\20std::__2::variant\20const&\29 4652:bool\20std::__2::__insertion_sort_incomplete\28skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::finish\28skia::textlayout::Block\20const&\2c\20float\2c\20float&\29::$_0&\29 4653:bool\20std::__2::__insertion_sort_incomplete<\28anonymous\20namespace\29::EntryComparator&\2c\20\28anonymous\20namespace\29::Entry*>\28\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::EntryComparator&\29 4654:bool\20std::__2::__insertion_sort_incomplete\28SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::Transform::\28anonymous\20namespace\29::BuiltinVariableScanner::sortNewElements\28\29::'lambda'\28SkSL::ProgramElement\20const*\2c\20SkSL::ProgramElement\20const*\29&\29 4655:bool\20std::__2::__insertion_sort_incomplete\28SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::Transform::FindAndDeclareBuiltinFunctions\28SkSL::Program&\29::$_0&\29 4656:bool\20is_parallel\28SkDLine\20const&\2c\20SkTCurve\20const&\29 4657:bool\20hb_hashmap_t::set_with_hash\28hb_serialize_context_t::object_t*&\2c\20unsigned\20int\2c\20unsigned\20int&\2c\20bool\29 4658:bool\20apply_string\28OT::hb_ot_apply_context_t*\2c\20GSUBProxy::Lookup\20const&\2c\20OT::hb_ot_layout_lookup_accelerator_t\20const&\29 4659:bool\20OT::hb_accelerate_subtables_context_t::cache_func_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\2c\20bool\29 4660:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4661:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4662:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4663:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4664:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4665:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4666:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4667:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4668:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4669:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4670:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4671:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4672:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4673:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4674:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4675:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4676:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4677:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4678:bool\20OT::OffsetTo\2c\20true>::serialize_serialize\2c\20hb_array_t>\2c\20$_7\20const&\2c\20\28hb_function_sortedness_t\291\2c\20\28void*\290>&>\28hb_serialize_context_t*\2c\20hb_map_iter_t\2c\20hb_array_t>\2c\20$_7\20const&\2c\20\28hb_function_sortedness_t\291\2c\20\28void*\290>&\29 4679:bool\20GrTTopoSort_Visit\28GrRenderTask*\2c\20unsigned\20int*\29 4680:blur_column\28void\20\28*\29\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29\2c\20skvx::Vec<8\2c\20unsigned\20short>\20\28*\29\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29\2c\20int\2c\20int\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20unsigned\20char\20const*\2c\20unsigned\20long\2c\20int\2c\20unsigned\20char*\2c\20unsigned\20long\29 4681:blit_saved_trapezoid\28SkAnalyticEdge*\2c\20int\2c\20int\2c\20int\2c\20AdditiveBlitter*\2c\20unsigned\20char*\2c\20bool\2c\20bool\2c\20int\2c\20int\29 4682:blend_line\28SkColorType\2c\20void*\2c\20SkColorType\2c\20void\20const*\2c\20SkAlphaType\2c\20bool\2c\20int\29 4683:bits_to_runs\28SkBlitter*\2c\20int\2c\20int\2c\20unsigned\20char\20const*\2c\20unsigned\20char\2c\20long\2c\20unsigned\20char\29 4684:barycentric_coords\28float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>*\2c\20skvx::Vec<4\2c\20float>*\2c\20skvx::Vec<4\2c\20float>*\29 4685:auto\20std::__2::__unwrap_range\5babi:v160004\5d\2c\20std::__2::__wrap_iter>\28std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\29 4686:atanf 4687:apply_forward\28OT::hb_ot_apply_context_t*\2c\20OT::hb_ot_layout_lookup_accelerator_t\20const&\2c\20unsigned\20int\29 4688:append_color_output\28PorterDuffXferProcessor\20const&\2c\20GrGLSLXPFragmentBuilder*\2c\20skgpu::BlendFormula::OutputType\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\29 4689:af_loader_compute_darkening 4690:af_latin_metrics_scale_dim 4691:af_latin_hints_detect_features 4692:af_latin_hint_edges 4693:af_hint_normal_stem 4694:af_cjk_metrics_scale_dim 4695:af_cjk_metrics_scale 4696:af_cjk_metrics_init_widths 4697:af_cjk_metrics_check_digits 4698:af_cjk_hints_init 4699:af_cjk_hints_detect_features 4700:af_cjk_hints_compute_blue_edges 4701:af_cjk_hints_apply 4702:af_cjk_hint_edges 4703:af_cjk_get_standard_widths 4704:af_axis_hints_new_edge 4705:adler32 4706:a_ctz_32 4707:_uhash_remove\28UHashtable*\2c\20UElement\29 4708:_uhash_rehash\28UHashtable*\2c\20UErrorCode*\29 4709:_uhash_put\28UHashtable*\2c\20UElement\2c\20UElement\2c\20signed\20char\2c\20UErrorCode*\29 4710:_uhash_create\28int\20\28*\29\28UElement\29\2c\20signed\20char\20\28*\29\28UElement\2c\20UElement\29\2c\20signed\20char\20\28*\29\28UElement\2c\20UElement\29\2c\20int\2c\20UErrorCode*\29 4711:_iup_worker_interpolate 4712:_isUnicodeExtensionSubtag\28int&\2c\20char\20const*\2c\20int\29 4713:_isTransformedExtensionSubtag\28int&\2c\20char\20const*\2c\20int\29 4714:_hb_preprocess_text_vowel_constraints\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 4715:_hb_ot_shape 4716:_hb_options_init\28\29 4717:_hb_grapheme_group_func\28hb_glyph_info_t\20const&\2c\20hb_glyph_info_t\20const&\29 4718:_hb_font_create\28hb_face_t*\29 4719:_hb_fallback_shape 4720:_glyf_get_advance_with_var_unscaled\28hb_font_t*\2c\20unsigned\20int\2c\20bool\29 4721:__vfprintf_internal 4722:__trunctfsf2 4723:__tan 4724:__rem_pio2_large 4725:__overflow 4726:__newlocale 4727:__munmap 4728:__mmap 4729:__math_xflowf 4730:__math_invalidf 4731:__loc_is_allocated 4732:__isxdigit_l 4733:__getf2 4734:__get_locale 4735:__ftello_unlocked 4736:__fstatat 4737:__fseeko_unlocked 4738:__floatscan 4739:__expo2 4740:__divtf3 4741:__cxxabiv1::__base_class_type_info::has_unambiguous_public_base\28__cxxabiv1::__dynamic_cast_info*\2c\20void*\2c\20int\29\20const 4742:\28anonymous\20namespace\29::set_uv_quad\28SkPoint\20const*\2c\20\28anonymous\20namespace\29::BezierVertex*\29 4743:\28anonymous\20namespace\29::safe_to_ignore_subset_rect\28GrAAType\2c\20SkFilterMode\2c\20DrawQuad\20const&\2c\20SkRect\20const&\29 4744:\28anonymous\20namespace\29::prepare_for_direct_mask_drawing\28SkStrike*\2c\20SkMatrix\20const&\2c\20SkZip\2c\20SkZip\2c\20SkZip\29 4745:\28anonymous\20namespace\29::morphology_pass\28skif::Context\20const&\2c\20skif::FilterResult\20const&\2c\20\28anonymous\20namespace\29::MorphType\2c\20\28anonymous\20namespace\29::MorphDirection\2c\20int\29 4746:\28anonymous\20namespace\29::make_non_convex_fill_op\28GrRecordingContext*\2c\20SkArenaAlloc*\2c\20skgpu::ganesh::FillPathFlags\2c\20GrAAType\2c\20SkRect\20const&\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\2c\20GrPaint&&\29 4747:\28anonymous\20namespace\29::is_newer_better\28SkData*\2c\20SkData*\29 4748:\28anonymous\20namespace\29::get_glyph_run_intercepts\28sktext::GlyphRun\20const&\2c\20SkPaint\20const&\2c\20float\20const*\2c\20float*\2c\20int*\29 4749:\28anonymous\20namespace\29::getStringArray\28ResourceData\20const*\2c\20icu_73::ResourceArray\20const&\2c\20icu_73::UnicodeString*\2c\20int\2c\20UErrorCode&\29 4750:\28anonymous\20namespace\29::getInclusionsForSource\28UPropertySource\2c\20UErrorCode&\29 4751:\28anonymous\20namespace\29::draw_to_sw_mask\28GrSWMaskHelper*\2c\20skgpu::ganesh::ClipStack::Element\20const&\2c\20bool\29 4752:\28anonymous\20namespace\29::determine_clipped_src_rect\28SkIRect\2c\20SkMatrix\20const&\2c\20SkMatrix\20const&\2c\20SkISize\20const&\2c\20SkRect\20const*\29 4753:\28anonymous\20namespace\29::create_hb_face\28SkTypeface\20const&\29::$_0::__invoke\28void*\29 4754:\28anonymous\20namespace\29::cpu_blur\28skif::Context\20const&\2c\20skif::LayerSpace\2c\20sk_sp\20const&\2c\20skif::LayerSpace\2c\20skif::LayerSpace\29::$_0::operator\28\29\28double\29\20const 4755:\28anonymous\20namespace\29::copyFTBitmap\28FT_Bitmap_\20const&\2c\20SkMaskBuilder*\29 4756:\28anonymous\20namespace\29::colrv1_start_glyph\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20unsigned\20short\2c\20FT_Color_Root_Transform_\2c\20skia_private::THashSet*\29 4757:\28anonymous\20namespace\29::colrv1_draw_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_COLR_Paint_\20const&\29 4758:\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29 4759:\28anonymous\20namespace\29::YUVPlanesRec::~YUVPlanesRec\28\29 4760:\28anonymous\20namespace\29::TriangulatingPathOp::~TriangulatingPathOp\28\29 4761:\28anonymous\20namespace\29::TriangulatingPathOp::TriangulatingPathOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20GrStyledShape\20const&\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20GrAAType\2c\20GrUserStencilSettings\20const*\29 4762:\28anonymous\20namespace\29::TriangulatingPathOp::Triangulate\28GrEagerVertexAllocator*\2c\20SkMatrix\20const&\2c\20GrStyledShape\20const&\2c\20SkIRect\20const&\2c\20float\2c\20bool*\29 4763:\28anonymous\20namespace\29::TriangulatingPathOp::CreateKey\28skgpu::UniqueKey*\2c\20GrStyledShape\20const&\2c\20SkIRect\20const&\29 4764:\28anonymous\20namespace\29::TransformedMaskSubRun::makeAtlasTextOp\28GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20skgpu::ganesh::SurfaceDrawContext*\29\20const 4765:\28anonymous\20namespace\29::TextureOpImpl::propagateCoverageAAThroughoutChain\28\29 4766:\28anonymous\20namespace\29::TextureOpImpl::characterize\28\28anonymous\20namespace\29::TextureOpImpl::Desc*\29\20const 4767:\28anonymous\20namespace\29::TextureOpImpl::appendQuad\28DrawQuad*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\29 4768:\28anonymous\20namespace\29::TextureOpImpl::Make\28GrRecordingContext*\2c\20GrTextureSetEntry*\2c\20int\2c\20int\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20skgpu::ganesh::TextureOp::Saturate\2c\20GrAAType\2c\20SkCanvas::SrcRectConstraint\2c\20SkMatrix\20const&\2c\20sk_sp\29 4769:\28anonymous\20namespace\29::TextureOpImpl::FillInVertices\28GrCaps\20const&\2c\20\28anonymous\20namespace\29::TextureOpImpl*\2c\20\28anonymous\20namespace\29::TextureOpImpl::Desc*\2c\20char*\29 4770:\28anonymous\20namespace\29::SpotVerticesFactory::makeVertices\28SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkPoint*\29\20const 4771:\28anonymous\20namespace\29::SkImageImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 4772:\28anonymous\20namespace\29::SDFTSubRun::makeAtlasTextOp\28GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20skgpu::ganesh::SurfaceDrawContext*\29\20const 4773:\28anonymous\20namespace\29::RunIteratorQueue::advanceRuns\28\29 4774:\28anonymous\20namespace\29::Pass::blur\28int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int*\2c\20int\29 4775:\28anonymous\20namespace\29::MipLevelHelper::allocAndInit\28SkArenaAlloc*\2c\20SkSamplingOptions\20const&\2c\20SkTileMode\2c\20SkTileMode\29 4776:\28anonymous\20namespace\29::MeshOp::~MeshOp\28\29 4777:\28anonymous\20namespace\29::MeshOp::MeshOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20sk_sp\2c\20GrPrimitiveType\20const*\2c\20GrAAType\2c\20sk_sp\2c\20SkMatrix\20const&\29 4778:\28anonymous\20namespace\29::MeshOp::MeshOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMesh\20const&\2c\20skia_private::TArray>\2c\20true>\2c\20GrAAType\2c\20sk_sp\2c\20SkMatrix\20const&\29 4779:\28anonymous\20namespace\29::MeshOp::Mesh::Mesh\28SkMesh\20const&\29 4780:\28anonymous\20namespace\29::MeshGP::~MeshGP\28\29 4781:\28anonymous\20namespace\29::MeshGP::Impl::~Impl\28\29 4782:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::defineStruct\28char\20const*\29 4783:\28anonymous\20namespace\29::FillRectOpImpl::tessellate\28skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20char*\29\20const 4784:\28anonymous\20namespace\29::FillRectOpImpl::Make\28GrRecordingContext*\2c\20GrPaint&&\2c\20GrAAType\2c\20DrawQuad*\2c\20GrUserStencilSettings\20const*\2c\20GrSimpleMeshDrawOpHelper::InputFlags\29 4785:\28anonymous\20namespace\29::FillRectOpImpl::FillRectOpImpl\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\2c\20GrAAType\2c\20DrawQuad*\2c\20GrUserStencilSettings\20const*\2c\20GrSimpleMeshDrawOpHelper::InputFlags\29 4786:\28anonymous\20namespace\29::EllipticalRRectEffect::Make\28std::__2::unique_ptr>\2c\20GrClipEdgeType\2c\20SkRRect\20const&\29 4787:\28anonymous\20namespace\29::DrawAtlasOpImpl::DrawAtlasOpImpl\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20GrAAType\2c\20int\2c\20SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\29 4788:\28anonymous\20namespace\29::DirectMaskSubRun::~DirectMaskSubRun\28\29.1 4789:\28anonymous\20namespace\29::DirectMaskSubRun::~DirectMaskSubRun\28\29 4790:\28anonymous\20namespace\29::DirectMaskSubRun::makeAtlasTextOp\28GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20skgpu::ganesh::SurfaceDrawContext*\29\20const 4791:\28anonymous\20namespace\29::DirectMaskSubRun::glyphCount\28\29\20const 4792:\28anonymous\20namespace\29::DefaultPathOp::programInfo\28\29 4793:\28anonymous\20namespace\29::DefaultPathOp::Make\28GrRecordingContext*\2c\20GrPaint&&\2c\20SkPath\20const&\2c\20float\2c\20unsigned\20char\2c\20SkMatrix\20const&\2c\20bool\2c\20GrAAType\2c\20SkRect\20const&\2c\20GrUserStencilSettings\20const*\29 4794:\28anonymous\20namespace\29::DefaultPathOp::DefaultPathOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkPath\20const&\2c\20float\2c\20unsigned\20char\2c\20SkMatrix\20const&\2c\20bool\2c\20GrAAType\2c\20SkRect\20const&\2c\20GrUserStencilSettings\20const*\29 4795:\28anonymous\20namespace\29::ClipGeometry\20\28anonymous\20namespace\29::get_clip_geometry\28skgpu::ganesh::ClipStack::SaveRecord\20const&\2c\20skgpu::ganesh::ClipStack::Draw\20const&\29 4796:\28anonymous\20namespace\29::CircularRRectEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 4797:\28anonymous\20namespace\29::CachedTessellations::~CachedTessellations\28\29 4798:\28anonymous\20namespace\29::CachedTessellations::CachedTessellations\28\29 4799:\28anonymous\20namespace\29::CacheImpl::~CacheImpl\28\29 4800:\28anonymous\20namespace\29::AAHairlineOp::AAHairlineOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20unsigned\20char\2c\20SkMatrix\20const&\2c\20SkPath\20const&\2c\20SkIRect\2c\20float\2c\20GrUserStencilSettings\20const*\29 4801:WebPResetDecParams 4802:WebPRescalerGetScaledDimensions 4803:WebPMultRows 4804:WebPMultARGBRows 4805:WebPIoInitFromOptions 4806:WebPInitUpsamplers 4807:WebPFlipBuffer 4808:WebPDemuxGetChunk 4809:WebPCopyDecBufferPixels 4810:WebPAllocateDecBuffer 4811:VP8RemapBitReader 4812:VP8LHuffmanTablesAllocate 4813:VP8LDspInit 4814:VP8LConvertFromBGRA 4815:VP8LColorCacheInit 4816:VP8LColorCacheCopy 4817:VP8LBuildHuffmanTable 4818:VP8LBitReaderSetBuffer 4819:VP8InitScanline 4820:VP8GetInfo 4821:VP8BitReaderSetBuffer 4822:Update_Max 4823:TransformOne_C 4824:TT_Set_Named_Instance 4825:TT_Hint_Glyph 4826:StoreFrame 4827:SortContourList\28SkOpContourHead**\2c\20bool\2c\20bool\29 4828:SkYUVAPixmapInfo::isSupported\28SkYUVAPixmapInfo::SupportedDataTypes\20const&\29\20const 4829:SkWuffsCodec::seekFrame\28int\29 4830:SkWuffsCodec::onStartIncrementalDecode\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\29 4831:SkWuffsCodec::onIncrementalDecodeTwoPass\28\29 4832:SkWuffsCodec::decodeFrameConfig\28\29 4833:SkWriter32::writeString\28char\20const*\2c\20unsigned\20long\29 4834:SkWriteICCProfile\28skcms_ICCProfile\20const*\2c\20char\20const*\29 4835:SkWebpDecoder::IsWebp\28void\20const*\2c\20unsigned\20long\29 4836:SkWebpCodec::MakeFromStream\28std::__2::unique_ptr>\2c\20SkCodec::Result*\29 4837:SkWbmpDecoder::IsWbmp\28void\20const*\2c\20unsigned\20long\29 4838:SkWbmpCodec::MakeFromStream\28std::__2::unique_ptr>\2c\20SkCodec::Result*\29 4839:SkWStream::SizeOfPackedUInt\28unsigned\20long\29 4840:SkWBuffer::padToAlign4\28\29 4841:SkVertices::Builder::indices\28\29 4842:SkUnicodes::ICU::Make\28\29 4843:SkUnicode_icu::extractWords\28unsigned\20short*\2c\20int\2c\20char\20const*\2c\20std::__2::vector>*\29 4844:SkUnicode::convertUtf16ToUtf8\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 4845:SkUTF::NextUTF16\28unsigned\20short\20const**\2c\20unsigned\20short\20const*\29 4846:SkTypeface_FreeType::FaceRec::Make\28SkTypeface_FreeType\20const*\29 4847:SkTypeface_Custom::onGetFamilyName\28SkString*\29\20const 4848:SkTypeface::textToGlyphs\28void\20const*\2c\20unsigned\20long\2c\20SkTextEncoding\2c\20unsigned\20short*\2c\20int\29\20const 4849:SkTypeface::serialize\28SkWStream*\2c\20SkTypeface::SerializeBehavior\29\20const 4850:SkTypeface::openStream\28int*\29\20const 4851:SkTypeface::getFamilyName\28SkString*\29\20const 4852:SkTransformShader::update\28SkMatrix\20const&\29 4853:SkTransformShader::SkTransformShader\28SkShaderBase\20const&\2c\20bool\29 4854:SkTiffImageFileDirectory::getEntryTag\28unsigned\20short\29\20const 4855:SkTiffImageFileDirectory::getEntryRawData\28unsigned\20short\2c\20unsigned\20short*\2c\20unsigned\20short*\2c\20unsigned\20int*\2c\20unsigned\20char\20const**\2c\20unsigned\20long*\29\20const 4856:SkTiffImageFileDirectory::MakeFromOffset\28sk_sp\2c\20bool\2c\20unsigned\20int\29 4857:SkTextBlobBuilder::allocRunPos\28SkFont\20const&\2c\20int\2c\20SkRect\20const*\29 4858:SkTextBlob::getIntercepts\28float\20const*\2c\20float*\2c\20SkPaint\20const*\29\20const 4859:SkTextBlob::RunRecord::StorageSize\28unsigned\20int\2c\20unsigned\20int\2c\20SkTextBlob::GlyphPositioning\2c\20SkSafeMath*\29 4860:SkTextBlob::MakeFromText\28void\20const*\2c\20unsigned\20long\2c\20SkFont\20const&\2c\20SkTextEncoding\29 4861:SkTextBlob::MakeFromRSXform\28void\20const*\2c\20unsigned\20long\2c\20SkRSXform\20const*\2c\20SkFont\20const&\2c\20SkTextEncoding\29 4862:SkTextBlob::Iter::experimentalNext\28SkTextBlob::Iter::ExperimentalRun*\29 4863:SkTextBlob::Iter::Iter\28SkTextBlob\20const&\29 4864:SkTaskGroup::wait\28\29 4865:SkTaskGroup::add\28std::__2::function\29 4866:SkTSpan::onlyEndPointsInCommon\28SkTSpan\20const*\2c\20bool*\2c\20bool*\2c\20bool*\29 4867:SkTSpan::linearIntersects\28SkTCurve\20const&\29\20const 4868:SkTSect::removeAllBut\28SkTSpan\20const*\2c\20SkTSpan*\2c\20SkTSect*\29 4869:SkTSect::intersects\28SkTSpan*\2c\20SkTSect*\2c\20SkTSpan*\2c\20int*\29 4870:SkTSect::deleteEmptySpans\28\29 4871:SkTSect::addSplitAt\28SkTSpan*\2c\20double\29 4872:SkTSect::addForPerp\28SkTSpan*\2c\20double\29 4873:SkTSect::EndsEqual\28SkTSect\20const*\2c\20SkTSect\20const*\2c\20SkIntersections*\29 4874:SkTMultiMap::~SkTMultiMap\28\29 4875:SkTDynamicHash<\28anonymous\20namespace\29::CacheImpl::Value\2c\20SkImageFilterCacheKey\2c\20\28anonymous\20namespace\29::CacheImpl::Value>::find\28SkImageFilterCacheKey\20const&\29\20const 4876:SkTDStorage::calculateSizeOrDie\28int\29::$_1::operator\28\29\28\29\20const 4877:SkTDStorage::SkTDStorage\28SkTDStorage&&\29 4878:SkTCubic::hullIntersects\28SkDQuad\20const&\2c\20bool*\29\20const 4879:SkTConic::otherPts\28int\2c\20SkDPoint\20const**\29\20const 4880:SkTConic::hullIntersects\28SkDCubic\20const&\2c\20bool*\29\20const 4881:SkTConic::controlsInside\28\29\20const 4882:SkTConic::collapsed\28\29\20const 4883:SkTBlockList::reset\28\29 4884:SkTBlockList::reset\28\29 4885:SkTBlockList::push_back\28GrGLProgramDataManager::GLUniformInfo\20const&\29 4886:SkSwizzler::MakeSimple\28int\2c\20SkImageInfo\20const&\2c\20SkCodec::Options\20const&\29 4887:SkSurfaces::WrapPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkSurfaceProps\20const*\29 4888:SkSurface_Base::outstandingImageSnapshot\28\29\20const 4889:SkSurface_Base::onDraw\28SkCanvas*\2c\20float\2c\20float\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\29 4890:SkSurface_Base::onCapabilities\28\29 4891:SkStrokeRec::setHairlineStyle\28\29 4892:SkStrokeRec::SkStrokeRec\28SkPaint\20const&\2c\20SkPaint::Style\2c\20float\29 4893:SkStrokeRec::GetInflationRadius\28SkPaint::Join\2c\20float\2c\20SkPaint::Cap\2c\20float\29 4894:SkString::insertHex\28unsigned\20long\2c\20unsigned\20int\2c\20int\29 4895:SkString::appendVAList\28char\20const*\2c\20void*\29 4896:SkString::SkString\28std::__2::basic_string_view>\29 4897:SkStrikeSpec::SkStrikeSpec\28SkStrikeSpec\20const&\29 4898:SkStrikeSpec::ShouldDrawAsPath\28SkPaint\20const&\2c\20SkFont\20const&\2c\20SkMatrix\20const&\29 4899:SkStrSplit\28char\20const*\2c\20char\20const*\2c\20SkStrSplitMode\2c\20skia_private::TArray*\29 4900:SkStrAppendS32\28char*\2c\20int\29 4901:SkSpriteBlitter_Memcpy::~SkSpriteBlitter_Memcpy\28\29 4902:SkSpecialImages::MakeFromRaster\28SkIRect\20const&\2c\20sk_sp\2c\20SkSurfaceProps\20const&\29 4903:SkSpecialImages::AsBitmap\28SkSpecialImage\20const*\2c\20SkBitmap*\29 4904:SkSharedMutex::releaseShared\28\29 4905:SkShapers::unicode::BidiRunIterator\28sk_sp\2c\20char\20const*\2c\20unsigned\20long\2c\20unsigned\20char\29 4906:SkShapers::HB::ScriptRunIterator\28char\20const*\2c\20unsigned\20long\29 4907:SkShaper::MakeStdLanguageRunIterator\28char\20const*\2c\20unsigned\20long\29 4908:SkShaders::MatrixRec::concat\28SkMatrix\20const&\29\20const 4909:SkShaders::Blend\28sk_sp\2c\20sk_sp\2c\20sk_sp\29 4910:SkShaderUtils::VisitLineByLine\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::function\20const&\29 4911:SkShaderUtils::PrettyPrint\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 4912:SkShaderUtils::GLSLPrettyPrint::parseUntil\28char\20const*\29 4913:SkShaderBase::getFlattenableType\28\29\20const 4914:SkShader::makeWithLocalMatrix\28SkMatrix\20const&\29\20const 4915:SkShader::makeWithColorFilter\28sk_sp\29\20const 4916:SkScan::PathRequiresTiling\28SkIRect\20const&\29 4917:SkScan::HairLine\28SkPoint\20const*\2c\20int\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 4918:SkScan::AntiFrameRect\28SkRect\20const&\2c\20SkPoint\20const&\2c\20SkRegion\20const*\2c\20SkBlitter*\29 4919:SkScan::AntiFillXRect\28SkIRect\20const&\2c\20SkRegion\20const*\2c\20SkBlitter*\29 4920:SkScan::AntiFillRect\28SkRect\20const&\2c\20SkRegion\20const*\2c\20SkBlitter*\29 4921:SkScan::AAAFillPath\28SkPath\20const&\2c\20SkBlitter*\2c\20SkIRect\20const&\2c\20SkIRect\20const&\2c\20bool\29 4922:SkScalerContext_FreeType::updateGlyphBoundsIfSubpixel\28SkGlyph\20const&\2c\20SkRect*\2c\20bool\29 4923:SkScalerContext_FreeType::shouldSubpixelBitmap\28SkGlyph\20const&\2c\20SkMatrix\20const&\29 4924:SkScalerContextRec::getSingleMatrix\28SkMatrix*\29\20const 4925:SkScalerContextFTUtils::drawCOLRv1Glyph\28FT_FaceRec_*\2c\20SkGlyph\20const&\2c\20unsigned\20int\2c\20SkSpan\2c\20SkCanvas*\29\20const 4926:SkScalerContextFTUtils::drawCOLRv0Glyph\28FT_FaceRec_*\2c\20SkGlyph\20const&\2c\20unsigned\20int\2c\20SkSpan\2c\20SkCanvas*\29\20const 4927:SkScalerContext::internalMakeGlyph\28SkPackedGlyphID\2c\20SkMask::Format\2c\20SkArenaAlloc*\29 4928:SkScalerContext::internalGetPath\28SkGlyph&\2c\20SkArenaAlloc*\29 4929:SkScalerContext::getFontMetrics\28SkFontMetrics*\29 4930:SkScalerContext::SkScalerContext\28sk_sp\2c\20SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29 4931:SkScalerContext::PreprocessRec\28SkTypeface\20const&\2c\20SkScalerContextEffects\20const&\2c\20SkDescriptor\20const&\29 4932:SkScalerContext::MakeRecAndEffects\28SkFont\20const&\2c\20SkPaint\20const&\2c\20SkSurfaceProps\20const&\2c\20SkScalerContextFlags\2c\20SkMatrix\20const&\2c\20SkScalerContextRec*\2c\20SkScalerContextEffects*\29 4933:SkScalerContext::MakeEmpty\28sk_sp\2c\20SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29 4934:SkScalerContext::GetMaskPreBlend\28SkScalerContextRec\20const&\29 4935:SkScalerContext::AutoDescriptorGivenRecAndEffects\28SkScalerContextRec\20const&\2c\20SkScalerContextEffects\20const&\2c\20SkAutoDescriptor*\29 4936:SkSampledCodec::sampledDecode\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkAndroidCodec::AndroidOptions\20const&\29 4937:SkSampledCodec::accountForNativeScaling\28int*\2c\20int*\29\20const 4938:SkSampledCodec::SkSampledCodec\28SkCodec*\29 4939:SkSL::zero_expression\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\29 4940:SkSL::type_to_sksltype\28SkSL::Context\20const&\2c\20SkSL::Type\20const&\2c\20SkSLType*\29 4941:SkSL::stoi\28std::__2::basic_string_view>\2c\20long\20long*\29 4942:SkSL::splat_scalar\28SkSL::Context\20const&\2c\20SkSL::Expression\20const&\2c\20SkSL::Type\20const&\29 4943:SkSL::optimize_intrinsic_call\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::IntrinsicKind\2c\20SkSL::ExpressionArray\20const&\2c\20SkSL::Type\20const&\29::$_2::operator\28\29\28int\29\20const 4944:SkSL::optimize_intrinsic_call\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::IntrinsicKind\2c\20SkSL::ExpressionArray\20const&\2c\20SkSL::Type\20const&\29::$_1::operator\28\29\28int\29\20const 4945:SkSL::optimize_intrinsic_call\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::IntrinsicKind\2c\20SkSL::ExpressionArray\20const&\2c\20SkSL::Type\20const&\29::$_0::operator\28\29\28int\29\20const 4946:SkSL::negate_expression\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Type\20const&\29 4947:SkSL::make_reciprocal_expression\28SkSL::Context\20const&\2c\20SkSL::Expression\20const&\29 4948:SkSL::index_out_of_range\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20long\20long\2c\20SkSL::Expression\20const&\29 4949:SkSL::get_struct_definitions_from_module\28SkSL::Program&\2c\20SkSL::Module\20const&\2c\20std::__2::vector>*\29 4950:SkSL::find_existing_declaration\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ModifierFlags\2c\20SkSL::IntrinsicKind\2c\20std::__2::basic_string_view>\2c\20skia_private::TArray>\2c\20true>&\2c\20SkSL::Position\2c\20SkSL::Type\20const*\2c\20SkSL::FunctionDeclaration**\29::$_0::operator\28\29\28\29\20const 4951:SkSL::extract_matrix\28SkSL::Expression\20const*\2c\20float*\29 4952:SkSL::eliminate_unreachable_code\28SkSpan>>\2c\20SkSL::ProgramUsage*\29::UnreachableCodeEliminator::visitStatementPtr\28std::__2::unique_ptr>&\29 4953:SkSL::check_main_signature\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20skia_private::TArray>\2c\20true>&\29::$_4::operator\28\29\28int\29\20const 4954:SkSL::\28anonymous\20namespace\29::check_valid_uniform_type\28SkSL::Position\2c\20SkSL::Type\20const*\2c\20SkSL::Context\20const&\2c\20bool\29::$_0::operator\28\29\28\29\20const 4955:SkSL::\28anonymous\20namespace\29::ProgramUsageVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 4956:SkSL::\28anonymous\20namespace\29::ProgramUsageVisitor::visitExpression\28SkSL::Expression\20const&\29 4957:SkSL::\28anonymous\20namespace\29::FinalizationVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 4958:SkSL::VariableReference::setRefKind\28SkSL::VariableRefKind\29 4959:SkSL::Variable::setVarDeclaration\28SkSL::VarDeclaration*\29 4960:SkSL::Variable::setGlobalVarDeclaration\28SkSL::GlobalVarDeclaration*\29 4961:SkSL::Variable::globalVarDeclaration\28\29\20const 4962:SkSL::Variable::Make\28SkSL::Position\2c\20SkSL::Position\2c\20SkSL::Layout\20const&\2c\20SkSL::ModifierFlags\2c\20SkSL::Type\20const*\2c\20std::__2::basic_string_view>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20bool\2c\20SkSL::VariableStorage\29 4963:SkSL::Variable::MakeScratchVariable\28SkSL::Context\20const&\2c\20SkSL::Mangler&\2c\20std::__2::basic_string_view>\2c\20SkSL::Type\20const*\2c\20SkSL::SymbolTable*\2c\20std::__2::unique_ptr>\29 4964:SkSL::VarDeclaration::Make\28SkSL::Context\20const&\2c\20SkSL::Variable*\2c\20SkSL::Type\20const*\2c\20int\2c\20std::__2::unique_ptr>\29 4965:SkSL::VarDeclaration::ErrorCheck\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Position\2c\20SkSL::Layout\20const&\2c\20SkSL::ModifierFlags\2c\20SkSL::Type\20const*\2c\20SkSL::Type\20const*\2c\20SkSL::VariableStorage\29 4966:SkSL::TypeReference::description\28SkSL::OperatorPrecedence\29\20const 4967:SkSL::TypeReference::VerifyType\28SkSL::Context\20const&\2c\20SkSL::Type\20const*\2c\20SkSL::Position\29 4968:SkSL::TypeReference::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const*\29 4969:SkSL::Type::MakeStructType\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::basic_string_view>\2c\20skia_private::TArray\2c\20bool\29 4970:SkSL::Type::MakeLiteralType\28char\20const*\2c\20SkSL::Type\20const&\2c\20signed\20char\29 4971:SkSL::Transform::\28anonymous\20namespace\29::BuiltinVariableScanner::addDeclaringElement\28SkSL::ProgramElement\20const*\29 4972:SkSL::ToGLSL\28SkSL::Program&\2c\20SkSL::ShaderCaps\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>*\29 4973:SkSL::TernaryExpression::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 4974:SkSL::SymbolTable::insertNewParent\28\29 4975:SkSL::SymbolTable::addWithoutOwnership\28SkSL::Symbol*\29 4976:SkSL::Swizzle::MaskString\28skia_private::STArray<4\2c\20signed\20char\2c\20true>\20const&\29 4977:SkSL::SwitchStatement::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 4978:SkSL::SwitchCase::Make\28SkSL::Position\2c\20long\20long\2c\20std::__2::unique_ptr>\29 4979:SkSL::SwitchCase::MakeDefault\28SkSL::Position\2c\20std::__2::unique_ptr>\29 4980:SkSL::StructType::StructType\28SkSL::Position\2c\20std::__2::basic_string_view>\2c\20skia_private::TArray\2c\20int\2c\20bool\2c\20bool\29 4981:SkSL::String::vappendf\28std::__2::basic_string\2c\20std::__2::allocator>*\2c\20char\20const*\2c\20void*\29 4982:SkSL::SingleArgumentConstructor::argumentSpan\28\29 4983:SkSL::RP::stack_usage\28SkSL::RP::Instruction\20const&\29 4984:SkSL::RP::UnownedLValueSlice::isWritable\28\29\20const 4985:SkSL::RP::UnownedLValueSlice::dynamicSlotRange\28\29 4986:SkSL::RP::ScratchLValue::~ScratchLValue\28\29 4987:SkSL::RP::Program::~Program\28\29 4988:SkSL::RP::LValue::swizzle\28\29 4989:SkSL::RP::Generator::writeVarDeclaration\28SkSL::VarDeclaration\20const&\29 4990:SkSL::RP::Generator::writeFunction\28SkSL::IRNode\20const&\2c\20SkSL::FunctionDefinition\20const&\2c\20SkSpan>\20const>\29 4991:SkSL::RP::Generator::storeImmutableValueToSlots\28skia_private::TArray\20const&\2c\20SkSL::RP::SlotRange\29 4992:SkSL::RP::Generator::pushVariableReferencePartial\28SkSL::VariableReference\20const&\2c\20SkSL::RP::SlotRange\29 4993:SkSL::RP::Generator::pushPrefixExpression\28SkSL::Operator\2c\20SkSL::Expression\20const&\29 4994:SkSL::RP::Generator::pushIntrinsic\28SkSL::IntrinsicKind\2c\20SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\29 4995:SkSL::RP::Generator::pushImmutableData\28SkSL::Expression\20const&\29 4996:SkSL::RP::Generator::pushAbsFloatIntrinsic\28int\29 4997:SkSL::RP::Generator::getImmutableValueForExpression\28SkSL::Expression\20const&\2c\20skia_private::TArray*\29 4998:SkSL::RP::Generator::foldWithMultiOp\28SkSL::RP::BuilderOp\2c\20int\29 4999:SkSL::RP::Generator::findPreexistingImmutableData\28skia_private::TArray\20const&\29 5000:SkSL::RP::Builder::push_slots_or_immutable_indirect\28SkSL::RP::SlotRange\2c\20int\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::BuilderOp\29 5001:SkSL::RP::Builder::push_condition_mask\28\29 5002:SkSL::RP::Builder::copy_stack_to_slots\28SkSL::RP::SlotRange\2c\20int\29 5003:SkSL::RP::Builder::branch_if_any_lanes_active\28int\29 5004:SkSL::ProgramVisitor::visit\28SkSL::Program\20const&\29 5005:SkSL::ProgramUsage::remove\28SkSL::Expression\20const*\29 5006:SkSL::ProgramUsage::add\28SkSL::Statement\20const*\29 5007:SkSL::ProgramUsage::add\28SkSL::Expression\20const*\29 5008:SkSL::Pool::attachToThread\28\29 5009:SkSL::PipelineStage::PipelineStageCodeGenerator::functionName\28SkSL::FunctionDeclaration\20const&\29 5010:SkSL::PipelineStage::PipelineStageCodeGenerator::functionDeclaration\28SkSL::FunctionDeclaration\20const&\29 5011:SkSL::Parser::~Parser\28\29 5012:SkSL::Parser::varDeclarations\28\29 5013:SkSL::Parser::varDeclarationsOrExpressionStatement\28\29 5014:SkSL::Parser::switchCaseBody\28SkSL::ExpressionArray*\2c\20skia_private::STArray<2\2c\20std::__2::unique_ptr>\2c\20true>*\2c\20std::__2::unique_ptr>\29 5015:SkSL::Parser::statementOrNop\28SkSL::Position\2c\20std::__2::unique_ptr>\29 5016:SkSL::Parser::shiftExpression\28\29 5017:SkSL::Parser::relationalExpression\28\29 5018:SkSL::Parser::parameter\28std::__2::unique_ptr>*\29 5019:SkSL::Parser::multiplicativeExpression\28\29 5020:SkSL::Parser::logicalXorExpression\28\29 5021:SkSL::Parser::logicalAndExpression\28\29 5022:SkSL::Parser::localVarDeclarationEnd\28SkSL::Position\2c\20SkSL::Modifiers\20const&\2c\20SkSL::Type\20const*\2c\20SkSL::Token\29 5023:SkSL::Parser::intLiteral\28long\20long*\29 5024:SkSL::Parser::globalVarDeclarationEnd\28SkSL::Position\2c\20SkSL::Modifiers\20const&\2c\20SkSL::Type\20const*\2c\20SkSL::Token\29 5025:SkSL::Parser::equalityExpression\28\29 5026:SkSL::Parser::directive\28bool\29 5027:SkSL::Parser::declarations\28\29 5028:SkSL::Parser::checkNext\28SkSL::Token::Kind\2c\20SkSL::Token*\29 5029:SkSL::Parser::bitwiseXorExpression\28\29 5030:SkSL::Parser::bitwiseOrExpression\28\29 5031:SkSL::Parser::bitwiseAndExpression\28\29 5032:SkSL::Parser::additiveExpression\28\29 5033:SkSL::Parser::Parser\28SkSL::Compiler*\2c\20SkSL::ProgramSettings\20const&\2c\20SkSL::ProgramKind\2c\20std::__2::unique_ptr\2c\20std::__2::allocator>\2c\20std::__2::default_delete\2c\20std::__2::allocator>>>\29 5034:SkSL::MultiArgumentConstructor::argumentSpan\28\29 5035:SkSL::ModuleLoader::~ModuleLoader\28\29 5036:SkSL::ModuleLoader::loadVertexModule\28SkSL::Compiler*\29 5037:SkSL::ModuleLoader::loadSharedModule\28SkSL::Compiler*\29 5038:SkSL::ModuleLoader::loadPublicModule\28SkSL::Compiler*\29 5039:SkSL::ModuleLoader::loadGraphiteVertexModule\28SkSL::Compiler*\29 5040:SkSL::ModuleLoader::loadGraphiteFragmentModule\28SkSL::Compiler*\29 5041:SkSL::ModuleLoader::loadFragmentModule\28SkSL::Compiler*\29 5042:SkSL::ModuleLoader::Get\28\29 5043:SkSL::MethodReference::~MethodReference\28\29.1 5044:SkSL::MethodReference::~MethodReference\28\29 5045:SkSL::MatrixType::bitWidth\28\29\20const 5046:SkSL::MakeRasterPipelineProgram\28SkSL::Program\20const&\2c\20SkSL::FunctionDefinition\20const&\2c\20SkSL::DebugTracePriv*\2c\20bool\29 5047:SkSL::Layout::description\28\29\20const 5048:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_matrixCompMult\28double\2c\20double\2c\20double\29 5049:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_length\28std::__2::array\20const&\29 5050:SkSL::InterfaceBlock::~InterfaceBlock\28\29 5051:SkSL::Inliner::candidateCanBeInlined\28SkSL::InlineCandidate\20const&\2c\20SkSL::ProgramUsage\20const&\2c\20skia_private::THashMap*\29 5052:SkSL::IfStatement::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 5053:SkSL::GLSLCodeGenerator::writeVarDeclaration\28SkSL::VarDeclaration\20const&\2c\20bool\29 5054:SkSL::GLSLCodeGenerator::writeProgramElement\28SkSL::ProgramElement\20const&\29 5055:SkSL::GLSLCodeGenerator::writeMinAbsHack\28SkSL::Expression&\2c\20SkSL::Expression&\29 5056:SkSL::GLSLCodeGenerator::generateCode\28\29 5057:SkSL::FunctionDefinition::~FunctionDefinition\28\29.1 5058:SkSL::FunctionDefinition::~FunctionDefinition\28\29 5059:SkSL::FunctionDefinition::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::FunctionDeclaration\20const&\2c\20std::__2::unique_ptr>\2c\20bool\29::Finalizer::visitStatementPtr\28std::__2::unique_ptr>&\29 5060:SkSL::FunctionDefinition::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::FunctionDeclaration\20const&\2c\20std::__2::unique_ptr>\2c\20bool\29::Finalizer::addLocalVariable\28SkSL::Variable\20const*\2c\20SkSL::Position\29 5061:SkSL::FunctionDeclaration::~FunctionDeclaration\28\29.1 5062:SkSL::FunctionDeclaration::~FunctionDeclaration\28\29 5063:SkSL::FunctionDeclaration::mangledName\28\29\20const 5064:SkSL::FunctionDeclaration::determineFinalTypes\28SkSL::ExpressionArray\20const&\2c\20skia_private::STArray<8\2c\20SkSL::Type\20const*\2c\20true>*\2c\20SkSL::Type\20const**\29\20const 5065:SkSL::FunctionDeclaration::FunctionDeclaration\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ModifierFlags\2c\20std::__2::basic_string_view>\2c\20skia_private::TArray\2c\20SkSL::Type\20const*\2c\20SkSL::IntrinsicKind\29 5066:SkSL::FunctionCall::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const*\2c\20SkSL::FunctionDeclaration\20const&\2c\20SkSL::ExpressionArray\29 5067:SkSL::FunctionCall::FindBestFunctionForCall\28SkSL::Context\20const&\2c\20SkSL::FunctionDeclaration\20const*\2c\20SkSL::ExpressionArray\20const&\29 5068:SkSL::FunctionCall::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::FunctionDeclaration\20const&\2c\20SkSL::ExpressionArray\29 5069:SkSL::ForStatement::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ForLoopPositions\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 5070:SkSL::FindIntrinsicKind\28std::__2::basic_string_view>\29 5071:SkSL::FieldAccess::~FieldAccess\28\29.1 5072:SkSL::FieldAccess::~FieldAccess\28\29 5073:SkSL::ExpressionStatement::Convert\28SkSL::Context\20const&\2c\20std::__2::unique_ptr>\29 5074:SkSL::DoStatement::~DoStatement\28\29.1 5075:SkSL::DoStatement::~DoStatement\28\29 5076:SkSL::DebugTracePriv::setSource\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 5077:SkSL::ConstructorScalarCast::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray\29 5078:SkSL::ConstructorMatrixResize::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>\29 5079:SkSL::Constructor::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray\29 5080:SkSL::ConstantFolder::Simplify\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\2c\20SkSL::Type\20const&\29 5081:SkSL::Compiler::writeErrorCount\28\29 5082:SkSL::Compiler::initializeContext\28SkSL::Module\20const*\2c\20SkSL::ProgramKind\2c\20SkSL::ProgramSettings\2c\20std::__2::basic_string_view>\2c\20bool\29 5083:SkSL::Compiler::cleanupContext\28\29 5084:SkSL::ChildCall::~ChildCall\28\29.1 5085:SkSL::ChildCall::~ChildCall\28\29 5086:SkSL::ChildCall::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const*\2c\20SkSL::Variable\20const&\2c\20SkSL::ExpressionArray\29 5087:SkSL::BinaryExpression::isAssignmentIntoVariable\28\29 5088:SkSL::BinaryExpression::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20SkSL::Operator\2c\20std::__2::unique_ptr>\2c\20SkSL::Type\20const*\29 5089:SkSL::Analysis::\28anonymous\20namespace\29::LoopControlFlowVisitor::visitStatement\28SkSL::Statement\20const&\29 5090:SkSL::Analysis::IsDynamicallyUniformExpression\28SkSL::Expression\20const&\29 5091:SkSL::Analysis::IsConstantExpression\28SkSL::Expression\20const&\29 5092:SkSL::Analysis::IsAssignable\28SkSL::Expression&\2c\20SkSL::Analysis::AssignmentInfo*\2c\20SkSL::ErrorReporter*\29 5093:SkSL::Analysis::GetLoopUnrollInfo\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ForLoopPositions\20const&\2c\20SkSL::Statement\20const*\2c\20std::__2::unique_ptr>*\2c\20SkSL::Expression\20const*\2c\20SkSL::Statement\20const*\2c\20SkSL::ErrorReporter*\29 5094:SkSL::Analysis::GetLoopControlFlowInfo\28SkSL::Statement\20const&\29 5095:SkSL::AliasType::numberKind\28\29\20const 5096:SkSL::AliasType::isAllowedInES2\28\29\20const 5097:SkRuntimeShader::~SkRuntimeShader\28\29 5098:SkRuntimeEffectPriv::WriteChildEffects\28SkWriteBuffer&\2c\20SkSpan\29 5099:SkRuntimeEffectPriv::TransformUniforms\28SkSpan\2c\20sk_sp\2c\20SkColorSpaceXformSteps\20const&\29 5100:SkRuntimeEffect::~SkRuntimeEffect\28\29 5101:SkRuntimeEffect::makeShader\28sk_sp\2c\20sk_sp*\2c\20unsigned\20long\2c\20SkMatrix\20const*\29\20const 5102:SkRuntimeEffect::makeColorFilter\28sk_sp\2c\20SkSpan\29\20const 5103:SkRuntimeEffect::TracedShader*\20emscripten::internal::raw_constructor\28\29 5104:SkRuntimeEffect::MakeInternal\28std::__2::unique_ptr>\2c\20SkRuntimeEffect::Options\20const&\2c\20SkSL::ProgramKind\29 5105:SkRuntimeEffect::ChildPtr&\20skia_private::TArray::emplace_back&>\28sk_sp&\29 5106:SkRuntimeBlender::flatten\28SkWriteBuffer&\29\20const 5107:SkRgnBuilder::~SkRgnBuilder\28\29 5108:SkResourceCache::PostPurgeSharedID\28unsigned\20long\20long\29 5109:SkResourceCache::GetDiscardableFactory\28\29 5110:SkRescaleAndReadPixels\28SkBitmap\2c\20SkImageInfo\20const&\2c\20SkIRect\20const&\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29::Result::rowBytes\28int\29\20const 5111:SkRescaleAndReadPixels\28SkBitmap\2c\20SkImageInfo\20const&\2c\20SkIRect\20const&\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29 5112:SkRegion::Spanerator::Spanerator\28SkRegion\20const&\2c\20int\2c\20int\2c\20int\29 5113:SkRegion::Oper\28SkRegion\20const&\2c\20SkRegion\20const&\2c\20SkRegion::Op\2c\20SkRegion*\29 5114:SkRefCntSet::~SkRefCntSet\28\29 5115:SkRefCntBase::internal_dispose\28\29\20const 5116:SkReduceOrder::reduce\28SkDQuad\20const&\29 5117:SkReduceOrder::Conic\28SkConic\20const&\2c\20SkPoint*\29 5118:SkRectClipBlitter::requestRowsPreserved\28\29\20const 5119:SkRectClipBlitter::allocBlitMemory\28unsigned\20long\29 5120:SkRect::intersect\28SkRect\20const&\2c\20SkRect\20const&\29 5121:SkRecords::TypedMatrix::TypedMatrix\28SkMatrix\20const&\29 5122:SkRecords::FillBounds::popSaveBlock\28\29 5123:SkRecordOptimize\28SkRecord*\29 5124:SkRecordFillBounds\28SkRect\20const&\2c\20SkRecord\20const&\2c\20SkRect*\2c\20SkBBoxHierarchy::Metadata*\29 5125:SkRecord::bytesUsed\28\29\20const 5126:SkReadPixelsRec::trim\28int\2c\20int\29 5127:SkReadBuffer::readString\28unsigned\20long*\29 5128:SkReadBuffer::readRegion\28SkRegion*\29 5129:SkReadBuffer::readRect\28\29 5130:SkReadBuffer::readPoint3\28SkPoint3*\29 5131:SkReadBuffer::readPad32\28void*\2c\20unsigned\20long\29 5132:SkRasterPipeline_<256ul>::SkRasterPipeline_\28\29 5133:SkRasterPipeline::appendSetRGB\28SkArenaAlloc*\2c\20float\20const*\29 5134:SkRasterClipStack::SkRasterClipStack\28int\2c\20int\29 5135:SkRTreeFactory::operator\28\29\28\29\20const 5136:SkRTree::search\28SkRTree::Node*\2c\20SkRect\20const&\2c\20std::__2::vector>*\29\20const 5137:SkRTree::bulkLoad\28std::__2::vector>*\2c\20int\29 5138:SkRTree::allocateNodeAtLevel\28unsigned\20short\29 5139:SkRSXform::toQuad\28float\2c\20float\2c\20SkPoint*\29\20const 5140:SkRRect::isValid\28\29\20const 5141:SkRRect::computeType\28\29 5142:SkRGBA4f<\28SkAlphaType\292>\20skgpu::Swizzle::applyTo<\28SkAlphaType\292>\28SkRGBA4f<\28SkAlphaType\292>\29\20const 5143:SkRBuffer::skipToAlign4\28\29 5144:SkQuads::EvalAt\28double\2c\20double\2c\20double\2c\20double\29 5145:SkQuadraticEdge::setQuadraticWithoutUpdate\28SkPoint\20const*\2c\20int\29 5146:SkPtrSet::reset\28\29 5147:SkPtrSet::copyToArray\28void**\29\20const 5148:SkPtrSet::add\28void*\29 5149:SkPoint::Normalize\28SkPoint*\29 5150:SkPngEncoder::Make\28SkWStream*\2c\20SkPixmap\20const&\2c\20SkPngEncoder::Options\20const&\29 5151:SkPngEncoder::Encode\28GrDirectContext*\2c\20SkImage\20const*\2c\20SkPngEncoder::Options\20const&\29 5152:SkPngCodec::initializeXforms\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\29 5153:SkPngCodec::initializeSwizzler\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\2c\20bool\29 5154:SkPngCodec::allocateStorage\28SkImageInfo\20const&\29 5155:SkPixmapUtils::Orient\28SkPixmap\20const&\2c\20SkPixmap\20const&\2c\20SkEncodedOrigin\29 5156:SkPixmap::erase\28unsigned\20int\2c\20SkIRect\20const&\29\20const 5157:SkPixmap::erase\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkIRect\20const*\29\20const 5158:SkPixelRef::getGenerationID\28\29\20const 5159:SkPixelRef::addGenIDChangeListener\28sk_sp\29 5160:SkPixelRef::SkPixelRef\28int\2c\20int\2c\20void*\2c\20unsigned\20long\29 5161:SkPictureShader::CachedImageInfo::makeImage\28sk_sp\2c\20SkPicture\20const*\29\20const 5162:SkPictureShader::CachedImageInfo::Make\28SkRect\20const&\2c\20SkMatrix\20const&\2c\20SkColorType\2c\20SkColorSpace*\2c\20int\2c\20SkSurfaceProps\20const&\29 5163:SkPictureRecord::endRecording\28\29 5164:SkPictureRecord::beginRecording\28\29 5165:SkPicturePriv::Flatten\28sk_sp\2c\20SkWriteBuffer&\29 5166:SkPicturePlayback::draw\28SkCanvas*\2c\20SkPicture::AbortCallback*\2c\20SkReadBuffer*\29 5167:SkPictureData::parseBufferTag\28SkReadBuffer&\2c\20unsigned\20int\2c\20unsigned\20int\29 5168:SkPictureData::getPicture\28SkReadBuffer*\29\20const 5169:SkPictureData::getDrawable\28SkReadBuffer*\29\20const 5170:SkPictureData::flatten\28SkWriteBuffer&\29\20const 5171:SkPictureData::flattenToBuffer\28SkWriteBuffer&\2c\20bool\29\20const 5172:SkPictureData::SkPictureData\28SkPictureRecord\20const&\2c\20SkPictInfo\20const&\29 5173:SkPicture::backport\28\29\20const 5174:SkPicture::SkPicture\28\29 5175:SkPicture::MakeFromStreamPriv\28SkStream*\2c\20SkDeserialProcs\20const*\2c\20SkTypefacePlayback*\2c\20int\29 5176:SkPerlinNoiseShader::getPaintingData\28\29\20const 5177:SkPathWriter::assemble\28\29 5178:SkPathWriter::SkPathWriter\28SkPath&\29 5179:SkPathRef::resetToSize\28int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\29 5180:SkPathPriv::IsNestedFillRects\28SkPath\20const&\2c\20SkRect*\2c\20SkPathDirection*\29 5181:SkPathPriv::CreateDrawArcPath\28SkPath*\2c\20SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20bool\29 5182:SkPathEffectBase::PointData::~PointData\28\29 5183:SkPathEffect::filterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29\20const 5184:SkPathBuilder::addOval\28SkRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\29 5185:SkPath::writeToMemoryAsRRect\28void*\29\20const 5186:SkPath::setLastPt\28float\2c\20float\29 5187:SkPath::reverseAddPath\28SkPath\20const&\29 5188:SkPath::readFromMemory\28void\20const*\2c\20unsigned\20long\29 5189:SkPath::offset\28float\2c\20float\2c\20SkPath*\29\20const 5190:SkPath::isZeroLengthSincePoint\28int\29\20const 5191:SkPath::isRRect\28SkRRect*\29\20const 5192:SkPath::isOval\28SkRect*\29\20const 5193:SkPath::conservativelyContainsRect\28SkRect\20const&\29\20const 5194:SkPath::computeConvexity\28\29\20const 5195:SkPath::addPath\28SkPath\20const&\2c\20float\2c\20float\2c\20SkPath::AddPathMode\29 5196:SkPath::Polygon\28SkPoint\20const*\2c\20int\2c\20bool\2c\20SkPathFillType\2c\20bool\29 5197:SkPath2DPathEffect::Make\28SkMatrix\20const&\2c\20SkPath\20const&\29 5198:SkPath1DPathEffect::Make\28SkPath\20const&\2c\20float\2c\20float\2c\20SkPath1DPathEffect::Style\29 5199:SkParseEncodedOrigin\28void\20const*\2c\20unsigned\20long\2c\20SkEncodedOrigin*\29 5200:SkPaintPriv::ShouldDither\28SkPaint\20const&\2c\20SkColorType\29 5201:SkPaintPriv::Overwrites\28SkPaint\20const*\2c\20SkPaintPriv::ShaderOverrideOpacity\29 5202:SkPaint::setStroke\28bool\29 5203:SkPaint::reset\28\29 5204:SkPaint::refColorFilter\28\29\20const 5205:SkOpSpanBase::merge\28SkOpSpan*\29 5206:SkOpSpanBase::globalState\28\29\20const 5207:SkOpSpan::sortableTop\28SkOpContour*\29 5208:SkOpSpan::release\28SkOpPtT\20const*\29 5209:SkOpSpan::insertCoincidence\28SkOpSegment\20const*\2c\20bool\2c\20bool\29 5210:SkOpSpan::init\28SkOpSegment*\2c\20SkOpSpan*\2c\20double\2c\20SkPoint\20const&\29 5211:SkOpSegment::updateWindingReverse\28SkOpAngle\20const*\29 5212:SkOpSegment::oppXor\28\29\20const 5213:SkOpSegment::moveMultiples\28\29 5214:SkOpSegment::isXor\28\29\20const 5215:SkOpSegment::findNextWinding\28SkTDArray*\2c\20SkOpSpanBase**\2c\20SkOpSpanBase**\2c\20bool*\29 5216:SkOpSegment::findNextOp\28SkTDArray*\2c\20SkOpSpanBase**\2c\20SkOpSpanBase**\2c\20bool*\2c\20bool*\2c\20SkPathOp\2c\20int\2c\20int\29 5217:SkOpSegment::computeSum\28SkOpSpanBase*\2c\20SkOpSpanBase*\2c\20SkOpAngle::IncludeType\29 5218:SkOpSegment::collapsed\28double\2c\20double\29\20const 5219:SkOpSegment::addExpanded\28double\2c\20SkOpSpanBase\20const*\2c\20bool*\29 5220:SkOpSegment::activeAngle\28SkOpSpanBase*\2c\20SkOpSpanBase**\2c\20SkOpSpanBase**\2c\20bool*\29 5221:SkOpSegment::UseInnerWinding\28int\2c\20int\29 5222:SkOpPtT::ptAlreadySeen\28SkOpPtT\20const*\29\20const 5223:SkOpPtT::contains\28SkOpSegment\20const*\2c\20double\29\20const 5224:SkOpGlobalState::SkOpGlobalState\28SkOpContourHead*\2c\20SkArenaAlloc*\29 5225:SkOpEdgeBuilder::preFetch\28\29 5226:SkOpEdgeBuilder::init\28\29 5227:SkOpEdgeBuilder::finish\28\29 5228:SkOpContourBuilder::addConic\28SkPoint*\2c\20float\29 5229:SkOpContour::addQuad\28SkPoint*\29 5230:SkOpContour::addCubic\28SkPoint*\29 5231:SkOpContour::addConic\28SkPoint*\2c\20float\29 5232:SkOpCoincidence::release\28SkOpSegment\20const*\29 5233:SkOpCoincidence::mark\28\29 5234:SkOpCoincidence::markCollapsed\28SkCoincidentSpans*\2c\20SkOpPtT*\29 5235:SkOpCoincidence::fixUp\28SkCoincidentSpans*\2c\20SkOpPtT*\2c\20SkOpPtT\20const*\29 5236:SkOpCoincidence::contains\28SkCoincidentSpans\20const*\2c\20SkOpSegment\20const*\2c\20SkOpSegment\20const*\2c\20double\29\20const 5237:SkOpCoincidence::checkOverlap\28SkCoincidentSpans*\2c\20SkOpSegment\20const*\2c\20SkOpSegment\20const*\2c\20double\2c\20double\2c\20double\2c\20double\2c\20SkTDArray*\29\20const 5238:SkOpCoincidence::addOrOverlap\28SkOpSegment*\2c\20SkOpSegment*\2c\20double\2c\20double\2c\20double\2c\20double\2c\20bool*\29 5239:SkOpAngle::tangentsDiverge\28SkOpAngle\20const*\2c\20double\29 5240:SkOpAngle::setSpans\28\29 5241:SkOpAngle::setSector\28\29 5242:SkOpAngle::previous\28\29\20const 5243:SkOpAngle::midToSide\28SkOpAngle\20const*\2c\20bool*\29\20const 5244:SkOpAngle::loopCount\28\29\20const 5245:SkOpAngle::loopContains\28SkOpAngle\20const*\29\20const 5246:SkOpAngle::lastMarked\28\29\20const 5247:SkOpAngle::endToSide\28SkOpAngle\20const*\2c\20bool*\29\20const 5248:SkOpAngle::alignmentSameSide\28SkOpAngle\20const*\2c\20int*\29\20const 5249:SkOpAngle::after\28SkOpAngle*\29 5250:SkOffsetSimplePolygon\28SkPoint\20const*\2c\20int\2c\20SkRect\20const&\2c\20float\2c\20SkTDArray*\2c\20SkTDArray*\29 5251:SkNoDrawCanvas::onDrawEdgeAAImageSet2\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 5252:SkNoDrawCanvas::onDrawArc\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 5253:SkMipmapBuilder::countLevels\28\29\20const 5254:SkMeshPriv::CpuBuffer::~CpuBuffer\28\29.1 5255:SkMeshPriv::CpuBuffer::~CpuBuffer\28\29 5256:SkMeshPriv::CpuBuffer::size\28\29\20const 5257:SkMeshPriv::CpuBuffer::peek\28\29\20const 5258:SkMeshPriv::CpuBuffer::onUpdate\28GrDirectContext*\2c\20void\20const*\2c\20unsigned\20long\2c\20unsigned\20long\29 5259:SkMatrix::setRotate\28float\2c\20float\2c\20float\29 5260:SkMatrix::mapRectScaleTranslate\28SkRect*\2c\20SkRect\20const&\29\20const 5261:SkMatrix::isFinite\28\29\20const 5262:SkMatrix::Translate\28float\2c\20float\29 5263:SkMatrix::Translate\28SkIPoint\29 5264:SkMatrix::RotTrans_xy\28SkMatrix\20const&\2c\20float\2c\20float\2c\20SkPoint*\29 5265:SkMaskSwizzler::swizzle\28void*\2c\20unsigned\20char\20const*\29 5266:SkMaskFilterBase::NinePatch::~NinePatch\28\29 5267:SkMask::computeTotalImageSize\28\29\20const 5268:SkMakeResourceCacheSharedIDForBitmap\28unsigned\20int\29 5269:SkMD5::finish\28\29 5270:SkMD5::SkMD5\28\29 5271:SkMD5::Digest::toHexString\28\29\20const 5272:SkM44::preTranslate\28float\2c\20float\2c\20float\29 5273:SkM44::postTranslate\28float\2c\20float\2c\20float\29 5274:SkLocalMatrixShader::type\28\29\20const 5275:SkLinearColorSpaceLuminance::toLuma\28float\2c\20float\29\20const 5276:SkLineParameters::cubicEndPoints\28SkDCubic\20const&\29 5277:SkLatticeIter::SkLatticeIter\28SkCanvas::Lattice\20const&\2c\20SkRect\20const&\29 5278:SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::~SkLRUCache\28\29 5279:SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::reset\28\29 5280:SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::insert\28GrProgramDesc\20const&\2c\20std::__2::unique_ptr>\29 5281:SkJpegDecoder::IsJpeg\28void\20const*\2c\20unsigned\20long\29 5282:SkJpegCodec::readRows\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20int\2c\20SkCodec::Options\20const&\29 5283:SkJpegCodec::initializeSwizzler\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\2c\20bool\29 5284:SkIsSimplePolygon\28SkPoint\20const*\2c\20int\29 5285:SkIsConvexPolygon\28SkPoint\20const*\2c\20int\29 5286:SkInvert4x4Matrix\28float\20const*\2c\20float*\29 5287:SkInvert3x3Matrix\28float\20const*\2c\20float*\29 5288:SkInvert2x2Matrix\28float\20const*\2c\20float*\29 5289:SkIntersections::vertical\28SkDQuad\20const&\2c\20double\2c\20double\2c\20double\2c\20bool\29 5290:SkIntersections::vertical\28SkDLine\20const&\2c\20double\2c\20double\2c\20double\2c\20bool\29 5291:SkIntersections::vertical\28SkDCubic\20const&\2c\20double\2c\20double\2c\20double\2c\20bool\29 5292:SkIntersections::vertical\28SkDConic\20const&\2c\20double\2c\20double\2c\20double\2c\20bool\29 5293:SkIntersections::mostOutside\28double\2c\20double\2c\20SkDPoint\20const&\29\20const 5294:SkIntersections::intersect\28SkDQuad\20const&\2c\20SkDLine\20const&\29 5295:SkIntersections::intersect\28SkDCubic\20const&\2c\20SkDQuad\20const&\29 5296:SkIntersections::intersect\28SkDCubic\20const&\2c\20SkDLine\20const&\29 5297:SkIntersections::intersect\28SkDCubic\20const&\2c\20SkDConic\20const&\29 5298:SkIntersections::intersect\28SkDConic\20const&\2c\20SkDQuad\20const&\29 5299:SkIntersections::intersect\28SkDConic\20const&\2c\20SkDLine\20const&\29 5300:SkIntersections::insertCoincident\28double\2c\20double\2c\20SkDPoint\20const&\29 5301:SkIntersections::horizontal\28SkDQuad\20const&\2c\20double\2c\20double\2c\20double\2c\20bool\29 5302:SkIntersections::horizontal\28SkDLine\20const&\2c\20double\2c\20double\2c\20double\2c\20bool\29 5303:SkIntersections::horizontal\28SkDCubic\20const&\2c\20double\2c\20double\2c\20double\2c\20bool\29 5304:SkIntersections::horizontal\28SkDConic\20const&\2c\20double\2c\20double\2c\20double\2c\20bool\29 5305:SkImages::RasterFromPixmap\28SkPixmap\20const&\2c\20void\20\28*\29\28void\20const*\2c\20void*\29\2c\20void*\29 5306:SkImages::RasterFromData\28SkImageInfo\20const&\2c\20sk_sp\2c\20unsigned\20long\29 5307:SkImages::DeferredFromGenerator\28std::__2::unique_ptr>\29 5308:SkImage_Raster::onPeekMips\28\29\20const 5309:SkImage_Raster::onPeekBitmap\28\29\20const 5310:SkImage_Lazy::~SkImage_Lazy\28\29.1 5311:SkImage_GaneshBase::onMakeSubset\28GrDirectContext*\2c\20SkIRect\20const&\29\20const 5312:SkImage_Base::onAsyncRescaleAndReadPixelsYUV420\28SkYUVColorSpace\2c\20bool\2c\20sk_sp\2c\20SkIRect\2c\20SkISize\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29\20const 5313:SkImage_Base::onAsLegacyBitmap\28GrDirectContext*\2c\20SkBitmap*\29\20const 5314:SkImageShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const::$_1::operator\28\29\28\28anonymous\20namespace\29::MipLevelHelper\20const*\29\20const 5315:SkImageInfo::validRowBytes\28unsigned\20long\29\20const 5316:SkImageInfo::MakeN32Premul\28int\2c\20int\29 5317:SkImageGenerator::~SkImageGenerator\28\29.1 5318:SkImageFilters::ColorFilter\28sk_sp\2c\20sk_sp\2c\20SkImageFilters::CropRect\20const&\29 5319:SkImageFilter_Base::getCTMCapability\28\29\20const 5320:SkImageFilter_Base::filterImage\28skif::Context\20const&\29\20const 5321:SkImageFilterCache::Get\28\29 5322:SkImageFilter::computeFastBounds\28SkRect\20const&\29\20const 5323:SkImage::withMipmaps\28sk_sp\29\20const 5324:SkImage::peekPixels\28SkPixmap*\29\20const 5325:SkImage::height\28\29\20const 5326:SkIcuBreakIteratorCache::purgeIfNeeded\28\29 5327:SkIcoDecoder::IsIco\28void\20const*\2c\20unsigned\20long\29 5328:SkIcoCodec::MakeFromStream\28std::__2::unique_ptr>\2c\20SkCodec::Result*\29 5329:SkGradientBaseShader::~SkGradientBaseShader\28\29 5330:SkGradientBaseShader::AppendGradientFillStages\28SkRasterPipeline*\2c\20SkArenaAlloc*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const*\2c\20float\20const*\2c\20int\29 5331:SkGlyphRunListPainterCPU::SkGlyphRunListPainterCPU\28SkSurfaceProps\20const&\2c\20SkColorType\2c\20SkColorSpace*\29 5332:SkGlyph::setImage\28SkArenaAlloc*\2c\20SkScalerContext*\29 5333:SkGlyph::setDrawable\28SkArenaAlloc*\2c\20SkScalerContext*\29 5334:SkGlyph::pathIsHairline\28\29\20const 5335:SkGlyph::mask\28SkPoint\29\20const 5336:SkGlyph::SkGlyph\28SkGlyph&&\29 5337:SkGifDecoder::MakeFromStream\28std::__2::unique_ptr>\2c\20SkCodec::SelectionPolicy\2c\20SkCodec::Result*\29 5338:SkGifDecoder::IsGif\28void\20const*\2c\20unsigned\20long\29 5339:SkGenerateDistanceFieldFromA8Image\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20unsigned\20long\29 5340:SkGaussFilter::SkGaussFilter\28double\29 5341:SkFrameHolder::setAlphaAndRequiredFrame\28SkFrame*\29 5342:SkFrame::fillIn\28SkCodec::FrameInfo*\2c\20bool\29\20const 5343:SkFontStyleSet_Custom::appendTypeface\28sk_sp\29 5344:SkFontStyleSet_Custom::SkFontStyleSet_Custom\28SkString\29 5345:SkFontScanner_FreeType::scanInstance\28SkStreamAsset*\2c\20int\2c\20int\2c\20SkString*\2c\20SkFontStyle*\2c\20bool*\2c\20skia_private::STArray<4\2c\20SkFontScanner::AxisDefinition\2c\20true>*\29\20const 5346:SkFontScanner_FreeType::SkFontScanner_FreeType\28\29 5347:SkFontPriv::GetFontBounds\28SkFont\20const&\29 5348:SkFontMgr::makeFromStream\28std::__2::unique_ptr>\2c\20int\29\20const 5349:SkFontMgr::makeFromStream\28std::__2::unique_ptr>\2c\20SkFontArguments\20const&\29\20const 5350:SkFontMgr::legacyMakeTypeface\28char\20const*\2c\20SkFontStyle\29\20const 5351:SkFontDescriptor::SkFontDescriptor\28\29 5352:SkFont::setupForAsPaths\28SkPaint*\29 5353:SkFont::setSkewX\28float\29 5354:SkFont::setLinearMetrics\28bool\29 5355:SkFont::setEmbolden\28bool\29 5356:SkFont::operator==\28SkFont\20const&\29\20const 5357:SkFont::getPaths\28unsigned\20short\20const*\2c\20int\2c\20void\20\28*\29\28SkPath\20const*\2c\20SkMatrix\20const&\2c\20void*\29\2c\20void*\29\20const 5358:SkFlattenable::RegisterFlattenablesIfNeeded\28\29 5359:SkFlattenable::PrivateInitializer::InitEffects\28\29 5360:SkFlattenable::NameToFactory\28char\20const*\29 5361:SkFlattenable::FactoryToName\28sk_sp\20\28*\29\28SkReadBuffer&\29\29 5362:SkFindQuadExtrema\28float\2c\20float\2c\20float\2c\20float*\29 5363:SkFindCubicExtrema\28float\2c\20float\2c\20float\2c\20float\2c\20float*\29 5364:SkFactorySet::~SkFactorySet\28\29 5365:SkExifMetadata::parseIfd\28unsigned\20int\2c\20bool\2c\20bool\29 5366:SkEncoder::encodeRows\28int\29 5367:SkEmptyPicture::approximateBytesUsed\28\29\20const 5368:SkEdgeClipper::clipQuad\28SkPoint\20const*\2c\20SkRect\20const&\29 5369:SkEdgeClipper::ClipPath\28SkPath\20const&\2c\20SkRect\20const&\2c\20bool\2c\20void\20\28*\29\28SkEdgeClipper*\2c\20bool\2c\20void*\29\2c\20void*\29 5370:SkEdgeBuilder::buildEdges\28SkPath\20const&\2c\20SkIRect\20const*\29 5371:SkDynamicMemoryWStream::bytesWritten\28\29\20const 5372:SkDrawableList::newDrawableSnapshot\28\29 5373:SkDrawTreatAAStrokeAsHairline\28float\2c\20SkMatrix\20const&\2c\20float*\29 5374:SkDrawShadowMetrics::GetSpotShadowTransform\28SkPoint3\20const&\2c\20float\2c\20SkMatrix\20const&\2c\20SkPoint3\20const&\2c\20SkRect\20const&\2c\20bool\2c\20SkMatrix*\2c\20float*\29 5375:SkDrawShadowMetrics::GetLocalBounds\28SkPath\20const&\2c\20SkDrawShadowRec\20const&\2c\20SkMatrix\20const&\2c\20SkRect*\29 5376:SkDrawBase::drawPaint\28SkPaint\20const&\29\20const 5377:SkDrawBase::DrawToMask\28SkPath\20const&\2c\20SkIRect\20const&\2c\20SkMaskFilter\20const*\2c\20SkMatrix\20const*\2c\20SkMaskBuilder*\2c\20SkMaskBuilder::CreateMode\2c\20SkStrokeRec::InitStyle\29 5378:SkDraw::drawSprite\28SkBitmap\20const&\2c\20int\2c\20int\2c\20SkPaint\20const&\29\20const 5379:SkDiscretePathEffectImpl::flatten\28SkWriteBuffer&\29\20const 5380:SkDiscretePathEffect::Make\28float\2c\20float\2c\20unsigned\20int\29 5381:SkDevice::getRelativeTransform\28SkDevice\20const&\29\20const 5382:SkDevice::drawShadow\28SkPath\20const&\2c\20SkDrawShadowRec\20const&\29 5383:SkDevice::drawDrawable\28SkCanvas*\2c\20SkDrawable*\2c\20SkMatrix\20const*\29 5384:SkDevice::drawDevice\28SkDevice*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\29 5385:SkDevice::drawArc\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 5386:SkDescriptor::addEntry\28unsigned\20int\2c\20unsigned\20long\2c\20void\20const*\29 5387:SkDeque::Iter::next\28\29 5388:SkDeque::Iter::Iter\28SkDeque\20const&\2c\20SkDeque::Iter::IterStart\29 5389:SkData::MakeSubset\28SkData\20const*\2c\20unsigned\20long\2c\20unsigned\20long\29 5390:SkDashPath::InternalFilter\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20float\20const*\2c\20int\2c\20float\2c\20int\2c\20float\2c\20float\2c\20SkDashPath::StrokeRecApplication\29 5391:SkDashPath::CalcDashParameters\28float\2c\20float\20const*\2c\20int\2c\20float*\2c\20int*\2c\20float*\2c\20float*\29 5392:SkDRect::setBounds\28SkDQuad\20const&\2c\20SkDQuad\20const&\2c\20double\2c\20double\29 5393:SkDRect::setBounds\28SkDCubic\20const&\2c\20SkDCubic\20const&\2c\20double\2c\20double\29 5394:SkDRect::setBounds\28SkDConic\20const&\2c\20SkDConic\20const&\2c\20double\2c\20double\29 5395:SkDQuad::subDivide\28double\2c\20double\29\20const 5396:SkDQuad::monotonicInY\28\29\20const 5397:SkDQuad::isLinear\28int\2c\20int\29\20const 5398:SkDQuad::hullIntersects\28SkDQuad\20const&\2c\20bool*\29\20const 5399:SkDPoint::approximatelyDEqual\28SkDPoint\20const&\29\20const 5400:SkDCurveSweep::setCurveHullSweep\28SkPath::Verb\29 5401:SkDCurve::nearPoint\28SkPath::Verb\2c\20SkDPoint\20const&\2c\20SkDPoint\20const&\29\20const 5402:SkDCubic::monotonicInX\28\29\20const 5403:SkDCubic::hullIntersects\28SkDQuad\20const&\2c\20bool*\29\20const 5404:SkDCubic::hullIntersects\28SkDPoint\20const*\2c\20int\2c\20bool*\29\20const 5405:SkDConic::subDivide\28double\2c\20double\29\20const 5406:SkCubics::RootsReal\28double\2c\20double\2c\20double\2c\20double\2c\20double*\29 5407:SkCubicEdge::setCubicWithoutUpdate\28SkPoint\20const*\2c\20int\2c\20bool\29 5408:SkCubicClipper::ChopMonoAtY\28SkPoint\20const*\2c\20float\2c\20float*\29 5409:SkCreateRasterPipelineBlitter\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkRasterPipeline\20const&\2c\20bool\2c\20SkArenaAlloc*\2c\20sk_sp\29 5410:SkCreateRasterPipelineBlitter\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\2c\20SkArenaAlloc*\2c\20sk_sp\2c\20SkSurfaceProps\20const&\29 5411:SkContourMeasureIter::~SkContourMeasureIter\28\29 5412:SkContourMeasureIter::SkContourMeasureIter\28SkPath\20const&\2c\20bool\2c\20float\29 5413:SkContourMeasure::length\28\29\20const 5414:SkContourMeasure::getSegment\28float\2c\20float\2c\20SkPath*\2c\20bool\29\20const 5415:SkConic::BuildUnitArc\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkRotationDirection\2c\20SkMatrix\20const*\2c\20SkConic*\29 5416:SkComputeRadialSteps\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20float*\2c\20float*\2c\20int*\29 5417:SkCompressedDataSize\28SkTextureCompressionType\2c\20SkISize\2c\20skia_private::TArray*\2c\20bool\29 5418:SkColorTypeValidateAlphaType\28SkColorType\2c\20SkAlphaType\2c\20SkAlphaType*\29 5419:SkColorSpaceSingletonFactory::Make\28skcms_TransferFunction\20const&\2c\20skcms_Matrix3x3\20const&\29 5420:SkColorSpace::toProfile\28skcms_ICCProfile*\29\20const 5421:SkColorSpace::makeLinearGamma\28\29\20const 5422:SkColorSpace::isSRGB\28\29\20const 5423:SkColorMatrix_RGB2YUV\28SkYUVColorSpace\2c\20float*\29 5424:SkColorFilterShader::SkColorFilterShader\28sk_sp\2c\20float\2c\20sk_sp\29 5425:SkColor4fXformer::SkColor4fXformer\28SkGradientBaseShader\20const*\2c\20SkColorSpace*\2c\20bool\29 5426:SkCoincidentSpans::extend\28SkOpPtT\20const*\2c\20SkOpPtT\20const*\2c\20SkOpPtT\20const*\2c\20SkOpPtT\20const*\29 5427:SkCodecs::get_decoders_for_editing\28\29 5428:SkCodec::outputScanline\28int\29\20const 5429:SkCodec::onGetYUVAPlanes\28SkYUVAPixmaps\20const&\29 5430:SkCodec::initializeColorXform\28SkImageInfo\20const&\2c\20SkEncodedInfo::Alpha\2c\20bool\29 5431:SkChopQuadAtMaxCurvature\28SkPoint\20const*\2c\20SkPoint*\29 5432:SkChopQuadAtHalf\28SkPoint\20const*\2c\20SkPoint*\29 5433:SkChopMonoCubicAtX\28SkPoint\20const*\2c\20float\2c\20SkPoint*\29 5434:SkChopCubicAtInflections\28SkPoint\20const*\2c\20SkPoint*\29 5435:SkCharToGlyphCache::findGlyphIndex\28int\29\20const 5436:SkCanvasPriv::WriteLattice\28void*\2c\20SkCanvas::Lattice\20const&\29 5437:SkCanvasPriv::ReadLattice\28SkReadBuffer&\2c\20SkCanvas::Lattice*\29 5438:SkCanvasPriv::ImageToColorFilter\28SkPaint*\29 5439:SkCanvasPriv::GetDstClipAndMatrixCounts\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20int*\2c\20int*\29 5440:SkCanvas::~SkCanvas\28\29 5441:SkCanvas::skew\28float\2c\20float\29 5442:SkCanvas::only_axis_aligned_saveBehind\28SkRect\20const*\29 5443:SkCanvas::internalDrawDeviceWithFilter\28SkDevice*\2c\20SkDevice*\2c\20SkSpan>\2c\20SkPaint\20const&\2c\20SkCanvas::DeviceCompatibleWithFilter\2c\20float\2c\20bool\29 5444:SkCanvas::getDeviceClipBounds\28\29\20const 5445:SkCanvas::experimental_DrawEdgeAAQuad\28SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkBlendMode\29 5446:SkCanvas::drawVertices\28sk_sp\20const&\2c\20SkBlendMode\2c\20SkPaint\20const&\29 5447:SkCanvas::drawSlug\28sktext::gpu::Slug\20const*\2c\20SkPaint\20const&\29 5448:SkCanvas::drawRegion\28SkRegion\20const&\2c\20SkPaint\20const&\29 5449:SkCanvas::drawLine\28float\2c\20float\2c\20float\2c\20float\2c\20SkPaint\20const&\29 5450:SkCanvas::drawImageNine\28SkImage\20const*\2c\20SkIRect\20const&\2c\20SkRect\20const&\2c\20SkFilterMode\2c\20SkPaint\20const*\29 5451:SkCanvas::drawClippedToSaveBehind\28SkPaint\20const&\29 5452:SkCanvas::drawAnnotation\28SkRect\20const&\2c\20char\20const*\2c\20SkData*\29 5453:SkCanvas::didTranslate\28float\2c\20float\29 5454:SkCanvas::clipShader\28sk_sp\2c\20SkClipOp\29 5455:SkCanvas::clipRegion\28SkRegion\20const&\2c\20SkClipOp\29 5456:SkCanvas::SkCanvas\28sk_sp\29 5457:SkCanvas::ImageSetEntry::ImageSetEntry\28\29 5458:SkCachedData::SkCachedData\28void*\2c\20unsigned\20long\29 5459:SkCachedData::SkCachedData\28unsigned\20long\2c\20SkDiscardableMemory*\29 5460:SkCTMShader::isOpaque\28\29\20const 5461:SkBulkGlyphMetricsAndPaths::glyphs\28SkSpan\29 5462:SkBmpStandardCodec::decodeIcoMask\28SkStream*\2c\20SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\29 5463:SkBmpMaskCodec::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int*\29 5464:SkBmpDecoder::IsBmp\28void\20const*\2c\20unsigned\20long\29 5465:SkBmpCodec::SkBmpCodec\28SkEncodedInfo&&\2c\20std::__2::unique_ptr>\2c\20unsigned\20short\2c\20SkCodec::SkScanlineOrder\29 5466:SkBmpBaseCodec::SkBmpBaseCodec\28SkEncodedInfo&&\2c\20std::__2::unique_ptr>\2c\20unsigned\20short\2c\20SkCodec::SkScanlineOrder\29 5467:SkBlurMask::ConvertRadiusToSigma\28float\29 5468:SkBlurMask::ComputeBlurredScanline\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20unsigned\20int\2c\20float\29 5469:SkBlurMask::BlurRect\28float\2c\20SkMaskBuilder*\2c\20SkRect\20const&\2c\20SkBlurStyle\2c\20SkIPoint*\2c\20SkMaskBuilder::CreateMode\29 5470:SkBlockMemoryStream::getPosition\28\29\20const 5471:SkBlitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 5472:SkBlitter::Choose\28SkPixmap\20const&\2c\20SkMatrix\20const&\2c\20SkPaint\20const&\2c\20SkArenaAlloc*\2c\20bool\2c\20sk_sp\2c\20SkSurfaceProps\20const&\29 5473:SkBlitter::ChooseSprite\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkPixmap\20const&\2c\20int\2c\20int\2c\20SkArenaAlloc*\2c\20sk_sp\29 5474:SkBlendShader::~SkBlendShader\28\29.1 5475:SkBlendShader::~SkBlendShader\28\29 5476:SkBitmapImageGetPixelRef\28SkImage\20const*\29 5477:SkBitmapDevice::SkBitmapDevice\28SkBitmap\20const&\2c\20SkSurfaceProps\20const&\2c\20void*\29 5478:SkBitmapDevice::Create\28SkImageInfo\20const&\2c\20SkSurfaceProps\20const&\2c\20SkRasterHandleAllocator*\29 5479:SkBitmapCache::Rec::install\28SkBitmap*\29 5480:SkBitmapCache::Rec::diagnostic_only_getDiscardable\28\29\20const 5481:SkBitmapCache::Find\28SkBitmapCacheDesc\20const&\2c\20SkBitmap*\29 5482:SkBitmapCache::Alloc\28SkBitmapCacheDesc\20const&\2c\20SkImageInfo\20const&\2c\20SkPixmap*\29 5483:SkBitmapCache::Add\28std::__2::unique_ptr\2c\20SkBitmap*\29 5484:SkBitmap::setPixelRef\28sk_sp\2c\20int\2c\20int\29 5485:SkBitmap::setAlphaType\28SkAlphaType\29 5486:SkBitmap::reset\28\29 5487:SkBitmap::makeShader\28SkTileMode\2c\20SkTileMode\2c\20SkSamplingOptions\20const&\2c\20SkMatrix\20const&\29\20const 5488:SkBitmap::getAddr\28int\2c\20int\29\20const 5489:SkBitmap::allocPixels\28SkImageInfo\20const&\2c\20unsigned\20long\29::$_0::operator\28\29\28\29\20const 5490:SkBitmap::HeapAllocator::allocPixelRef\28SkBitmap*\29 5491:SkBinaryWriteBuffer::writeFlattenable\28SkFlattenable\20const*\29 5492:SkBinaryWriteBuffer::writeColor4f\28SkRGBA4f<\28SkAlphaType\293>\20const&\29 5493:SkBigPicture::SkBigPicture\28SkRect\20const&\2c\20sk_sp\2c\20std::__2::unique_ptr>\2c\20sk_sp\2c\20unsigned\20long\29 5494:SkBezierQuad::IntersectWithHorizontalLine\28SkSpan\2c\20float\2c\20float*\29 5495:SkBezierCubic::IntersectWithHorizontalLine\28SkSpan\2c\20float\2c\20float*\29 5496:SkBasicEdgeBuilder::~SkBasicEdgeBuilder\28\29 5497:SkBaseShadowTessellator::finishPathPolygon\28\29 5498:SkBaseShadowTessellator::computeConvexShadow\28float\2c\20float\2c\20bool\29 5499:SkBaseShadowTessellator::computeConcaveShadow\28float\2c\20float\29 5500:SkBaseShadowTessellator::clipUmbraPoint\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint*\29 5501:SkBaseShadowTessellator::addInnerPoint\28SkPoint\20const&\2c\20unsigned\20int\2c\20SkTDArray\20const&\2c\20int*\29 5502:SkBaseShadowTessellator::addEdge\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20unsigned\20int\2c\20SkTDArray\20const&\2c\20bool\2c\20bool\29 5503:SkBaseShadowTessellator::addArc\28SkPoint\20const&\2c\20float\2c\20bool\29 5504:SkAutoCanvasMatrixPaint::~SkAutoCanvasMatrixPaint\28\29 5505:SkAutoCanvasMatrixPaint::SkAutoCanvasMatrixPaint\28SkCanvas*\2c\20SkMatrix\20const*\2c\20SkPaint\20const*\2c\20SkRect\20const&\29 5506:SkAndroidCodecAdapter::~SkAndroidCodecAdapter\28\29 5507:SkAndroidCodecAdapter::SkAndroidCodecAdapter\28SkCodec*\29 5508:SkAndroidCodec::~SkAndroidCodec\28\29 5509:SkAndroidCodec::getAndroidPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkAndroidCodec::AndroidOptions\20const*\29 5510:SkAndroidCodec::SkAndroidCodec\28SkCodec*\29 5511:SkAnalyticEdge::update\28int\2c\20bool\29 5512:SkAnalyticEdge::updateLine\28int\2c\20int\2c\20int\2c\20int\2c\20int\29 5513:SkAnalyticEdge::setLine\28SkPoint\20const&\2c\20SkPoint\20const&\29 5514:SkAAClip::operator=\28SkAAClip\20const&\29 5515:SkAAClip::op\28SkIRect\20const&\2c\20SkClipOp\29 5516:SkAAClip::Builder::flushRow\28bool\29 5517:SkAAClip::Builder::finish\28SkAAClip*\29 5518:SkAAClip::Builder::Blitter::~Blitter\28\29 5519:SkAAClip::Builder::Blitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 5520:Sk2DPathEffect::onFilterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29\20const 5521:SimpleImageInfo*\20emscripten::internal::raw_constructor\28\29 5522:SimpleFontStyle*\20emscripten::internal::MemberAccess::getWire\28SimpleFontStyle\20SimpleStrutStyle::*\20const&\2c\20SimpleStrutStyle\20const&\29 5523:SharedGenerator::isTextureGenerator\28\29 5524:RunBasedAdditiveBlitter::~RunBasedAdditiveBlitter\28\29.1 5525:RgnOper::addSpan\28int\2c\20int\20const*\2c\20int\20const*\29 5526:PorterDuffXferProcessor::onIsEqual\28GrXferProcessor\20const&\29\20const 5527:PathSegment::init\28\29 5528:PathAddVerbsPointsWeights\28SkPath&\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long\2c\20int\29 5529:ParseSingleImage 5530:ParseHeadersInternal 5531:PS_Conv_ASCIIHexDecode 5532:Op\28SkPath\20const&\2c\20SkPath\20const&\2c\20SkPathOp\2c\20SkPath*\29 5533:OpAsWinding::markReverse\28Contour*\2c\20Contour*\29 5534:OpAsWinding::getDirection\28Contour&\29 5535:OpAsWinding::checkContainerChildren\28Contour*\2c\20Contour*\29 5536:OffsetEdge::computeCrossingDistance\28OffsetEdge\20const*\29 5537:OT::sbix::accelerator_t::get_png_extents\28hb_font_t*\2c\20unsigned\20int\2c\20hb_glyph_extents_t*\2c\20bool\29\20const 5538:OT::sbix::accelerator_t::choose_strike\28hb_font_t*\29\20const 5539:OT::hmtxvmtx::accelerator_t::accelerator_t\28hb_face_t*\29 5540:OT::hmtxvmtx::accelerator_t::get_advance_with_var_unscaled\28unsigned\20int\2c\20hb_font_t*\2c\20float*\29\20const 5541:OT::hmtxvmtx::accelerator_t::accelerator_t\28hb_face_t*\29 5542:OT::hb_ot_layout_lookup_accelerator_t*\20OT::hb_ot_layout_lookup_accelerator_t::create\28OT::Layout::GPOS_impl::PosLookup\20const&\29 5543:OT::hb_kern_machine_t::kern\28hb_font_t*\2c\20hb_buffer_t*\2c\20unsigned\20int\2c\20bool\29\20const 5544:OT::hb_accelerate_subtables_context_t::return_t\20OT::Context::dispatch\28OT::hb_accelerate_subtables_context_t*\29\20const 5545:OT::hb_accelerate_subtables_context_t::return_t\20OT::ChainContext::dispatch\28OT::hb_accelerate_subtables_context_t*\29\20const 5546:OT::glyf_accelerator_t::get_extents\28hb_font_t*\2c\20unsigned\20int\2c\20hb_glyph_extents_t*\29\20const 5547:OT::glyf_accelerator_t::get_advance_with_var_unscaled\28hb_font_t*\2c\20unsigned\20int\2c\20bool\29\20const 5548:OT::cmap::accelerator_t::get_variation_glyph\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20hb_cache_t<21u\2c\2016u\2c\208u\2c\20true>*\29\20const 5549:OT::cff2::accelerator_templ_t>::accelerator_templ_t\28hb_face_t*\29 5550:OT::cff2::accelerator_templ_t>::_fini\28\29 5551:OT::cff1::lookup_expert_subset_charset_for_sid\28unsigned\20int\29 5552:OT::cff1::lookup_expert_charset_for_sid\28unsigned\20int\29 5553:OT::cff1::accelerator_templ_t>::~accelerator_templ_t\28\29 5554:OT::cff1::accelerator_templ_t>::_fini\28\29 5555:OT::TupleVariationData::unpack_points\28OT::IntType\20const*&\2c\20hb_vector_t&\2c\20OT::IntType\20const*\29 5556:OT::SBIXStrike::get_glyph_blob\28unsigned\20int\2c\20hb_blob_t*\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20unsigned\20int\2c\20unsigned\20int*\29\20const 5557:OT::RuleSet::sanitize\28hb_sanitize_context_t*\29\20const 5558:OT::RuleSet::apply\28OT::hb_ot_apply_context_t*\2c\20OT::ContextApplyLookupContext\20const&\29\20const 5559:OT::RecordListOf::sanitize\28hb_sanitize_context_t*\29\20const 5560:OT::RecordListOf::sanitize\28hb_sanitize_context_t*\29\20const 5561:OT::PaintTranslate::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 5562:OT::PaintSolid::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 5563:OT::PaintSkewAroundCenter::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 5564:OT::PaintSkew::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 5565:OT::PaintScaleUniformAroundCenter::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 5566:OT::PaintScaleUniform::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 5567:OT::PaintScaleAroundCenter::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 5568:OT::PaintScale::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 5569:OT::PaintRotateAroundCenter::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 5570:OT::PaintLinearGradient::sanitize\28hb_sanitize_context_t*\29\20const 5571:OT::PaintLinearGradient::sanitize\28hb_sanitize_context_t*\29\20const 5572:OT::Lookup::serialize\28hb_serialize_context_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 5573:OT::Layout::propagate_attachment_offsets\28hb_glyph_position_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20hb_direction_t\2c\20unsigned\20int\29 5574:OT::Layout::GSUB_impl::MultipleSubstFormat1_2::sanitize\28hb_sanitize_context_t*\29\20const 5575:OT::Layout::GSUB_impl::Ligature::apply\28OT::hb_ot_apply_context_t*\29\20const 5576:OT::Layout::GPOS_impl::reverse_cursive_minor_offset\28hb_glyph_position_t*\2c\20unsigned\20int\2c\20hb_direction_t\2c\20unsigned\20int\29 5577:OT::Layout::GPOS_impl::MarkRecord::sanitize\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 5578:OT::Layout::GPOS_impl::MarkBasePosFormat1_2::sanitize\28hb_sanitize_context_t*\29\20const 5579:OT::Layout::GPOS_impl::AnchorMatrix::sanitize\28hb_sanitize_context_t*\2c\20unsigned\20int\29\20const 5580:OT::IndexSubtableRecord::get_image_data\28unsigned\20int\2c\20void\20const*\2c\20unsigned\20int*\2c\20unsigned\20int*\2c\20unsigned\20int*\29\20const 5581:OT::FeatureVariationRecord::sanitize\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 5582:OT::FeatureParams::sanitize\28hb_sanitize_context_t*\2c\20unsigned\20int\29\20const 5583:OT::ContextFormat3::sanitize\28hb_sanitize_context_t*\29\20const 5584:OT::ContextFormat2_5::sanitize\28hb_sanitize_context_t*\29\20const 5585:OT::ContextFormat2_5::_apply\28OT::hb_ot_apply_context_t*\2c\20bool\29\20const 5586:OT::ContextFormat1_4::sanitize\28hb_sanitize_context_t*\29\20const 5587:OT::ColorStop::get_color_stop\28OT::hb_paint_context_t*\2c\20hb_color_stop_t*\2c\20unsigned\20int\2c\20OT::VarStoreInstancer\20const&\29\20const 5588:OT::ColorLine::static_get_extend\28hb_color_line_t*\2c\20void*\2c\20void*\29 5589:OT::ChainRuleSet::would_apply\28OT::hb_would_apply_context_t*\2c\20OT::ChainContextApplyLookupContext\20const&\29\20const 5590:OT::ChainRuleSet::sanitize\28hb_sanitize_context_t*\29\20const 5591:OT::ChainRuleSet::apply\28OT::hb_ot_apply_context_t*\2c\20OT::ChainContextApplyLookupContext\20const&\29\20const 5592:OT::ChainContextFormat3::sanitize\28hb_sanitize_context_t*\29\20const 5593:OT::ChainContextFormat2_5::sanitize\28hb_sanitize_context_t*\29\20const 5594:OT::ChainContextFormat2_5::_apply\28OT::hb_ot_apply_context_t*\2c\20bool\29\20const 5595:OT::ChainContextFormat1_4::sanitize\28hb_sanitize_context_t*\29\20const 5596:OT::CBDT::accelerator_t::get_extents\28hb_font_t*\2c\20unsigned\20int\2c\20hb_glyph_extents_t*\2c\20bool\29\20const 5597:OT::Affine2x3::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 5598:MakeOnScreenGLSurface\28sk_sp\2c\20int\2c\20int\2c\20sk_sp\2c\20int\2c\20int\29 5599:Load_SBit_Png 5600:LineCubicIntersections::intersectRay\28double*\29 5601:LineCubicIntersections::VerticalIntersect\28SkDCubic\20const&\2c\20double\2c\20double*\29 5602:LineCubicIntersections::HorizontalIntersect\28SkDCubic\20const&\2c\20double\2c\20double*\29 5603:Launch 5604:JpegDecoderMgr::returnFalse\28char\20const*\29 5605:JpegDecoderMgr::getEncodedColor\28SkEncodedInfo::Color*\29 5606:JSObjectFromLineMetrics\28skia::textlayout::LineMetrics&\29 5607:JSObjectFromGlyphInfo\28skia::textlayout::Paragraph::GlyphInfo&\29 5608:Ins_DELTAP 5609:HandleCoincidence\28SkOpContourHead*\2c\20SkOpCoincidence*\29 5610:GrWritePixelsTask::~GrWritePixelsTask\28\29 5611:GrWaitRenderTask::~GrWaitRenderTask\28\29 5612:GrVertexBufferAllocPool::makeSpace\28unsigned\20long\2c\20int\2c\20sk_sp*\2c\20int*\29 5613:GrVertexBufferAllocPool::makeSpaceAtLeast\28unsigned\20long\2c\20int\2c\20int\2c\20sk_sp*\2c\20int*\2c\20int*\29 5614:GrTriangulator::polysToTriangles\28GrTriangulator::Poly*\2c\20SkPathFillType\2c\20skgpu::VertexWriter\29\20const 5615:GrTriangulator::polysToTriangles\28GrTriangulator::Poly*\2c\20GrEagerVertexAllocator*\29\20const 5616:GrTriangulator::mergeEdgesBelow\28GrTriangulator::Edge*\2c\20GrTriangulator::Edge*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Comparator\20const&\29\20const 5617:GrTriangulator::mergeEdgesAbove\28GrTriangulator::Edge*\2c\20GrTriangulator::Edge*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Comparator\20const&\29\20const 5618:GrTriangulator::makeSortedVertex\28SkPoint\20const&\2c\20unsigned\20char\2c\20GrTriangulator::VertexList*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::Comparator\20const&\29\20const 5619:GrTriangulator::makeEdge\28GrTriangulator::Vertex*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::EdgeType\2c\20GrTriangulator::Comparator\20const&\29 5620:GrTriangulator::computeBisector\28GrTriangulator::Edge*\2c\20GrTriangulator::Edge*\2c\20GrTriangulator::Vertex*\29\20const 5621:GrTriangulator::appendQuadraticToContour\28SkPoint\20const*\2c\20float\2c\20GrTriangulator::VertexList*\29\20const 5622:GrTriangulator::SortMesh\28GrTriangulator::VertexList*\2c\20GrTriangulator::Comparator\20const&\29 5623:GrTriangulator::FindEnclosingEdges\28GrTriangulator::Vertex\20const&\2c\20GrTriangulator::EdgeList\20const&\2c\20GrTriangulator::Edge**\2c\20GrTriangulator::Edge**\29 5624:GrTriangulator::Edge::intersect\28GrTriangulator::Edge\20const&\2c\20SkPoint*\2c\20unsigned\20char*\29\20const 5625:GrTransferFromRenderTask::~GrTransferFromRenderTask\28\29 5626:GrThreadSafeCache::~GrThreadSafeCache\28\29 5627:GrThreadSafeCache::findVertsWithData\28skgpu::UniqueKey\20const&\29 5628:GrThreadSafeCache::addVertsWithData\28skgpu::UniqueKey\20const&\2c\20sk_sp\2c\20bool\20\28*\29\28SkData*\2c\20SkData*\29\29 5629:GrThreadSafeCache::Entry::set\28skgpu::UniqueKey\20const&\2c\20sk_sp\29 5630:GrThreadSafeCache::CreateLazyView\28GrDirectContext*\2c\20GrColorType\2c\20SkISize\2c\20GrSurfaceOrigin\2c\20SkBackingFit\29 5631:GrTextureResolveRenderTask::~GrTextureResolveRenderTask\28\29 5632:GrTextureRenderTargetProxy::GrTextureRenderTargetProxy\28sk_sp\2c\20GrSurfaceProxy::UseAllocator\2c\20GrDDLProvider\29 5633:GrTextureRenderTargetProxy::GrTextureRenderTargetProxy\28GrCaps\20const&\2c\20std::__2::function&&\2c\20GrBackendFormat\20const&\2c\20SkISize\2c\20int\2c\20skgpu::Mipmapped\2c\20GrMipmapStatus\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20GrInternalSurfaceFlags\2c\20GrSurfaceProxy::UseAllocator\2c\20GrDDLProvider\2c\20std::__2::basic_string_view>\29 5634:GrTextureProxyPriv::setDeferredUploader\28std::__2::unique_ptr>\29 5635:GrTextureProxy::setUniqueKey\28GrProxyProvider*\2c\20skgpu::UniqueKey\20const&\29 5636:GrTextureProxy::clearUniqueKey\28\29 5637:GrTextureProxy::ProxiesAreCompatibleAsDynamicState\28GrSurfaceProxy\20const*\2c\20GrSurfaceProxy\20const*\29 5638:GrTextureProxy::GrTextureProxy\28sk_sp\2c\20GrSurfaceProxy::UseAllocator\2c\20GrDDLProvider\29.1 5639:GrTextureEffect::Sampling::Sampling\28GrSurfaceProxy\20const&\2c\20GrSamplerState\2c\20SkRect\20const&\2c\20SkRect\20const*\2c\20float\20const*\2c\20bool\2c\20GrCaps\20const&\2c\20SkPoint\29::$_1::operator\28\29\28int\2c\20GrSamplerState::WrapMode\2c\20GrTextureEffect::Sampling::Sampling\28GrSurfaceProxy\20const&\2c\20GrSamplerState\2c\20SkRect\20const&\2c\20SkRect\20const*\2c\20float\20const*\2c\20bool\2c\20GrCaps\20const&\2c\20SkPoint\29::Span\2c\20GrTextureEffect::Sampling::Sampling\28GrSurfaceProxy\20const&\2c\20GrSamplerState\2c\20SkRect\20const&\2c\20SkRect\20const*\2c\20float\20const*\2c\20bool\2c\20GrCaps\20const&\2c\20SkPoint\29::Span\2c\20float\29\20const 5640:GrTextureEffect::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::$_2::operator\28\29\28GrTextureEffect::ShaderMode\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\29\20const 5641:GrTexture::markMipmapsDirty\28\29 5642:GrTexture::computeScratchKey\28skgpu::ScratchKey*\29\20const 5643:GrTDeferredProxyUploader>::~GrTDeferredProxyUploader\28\29 5644:GrSurfaceProxyPriv::exactify\28\29 5645:GrSurfaceProxy::GrSurfaceProxy\28GrBackendFormat\20const&\2c\20SkISize\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20GrInternalSurfaceFlags\2c\20GrSurfaceProxy::UseAllocator\2c\20std::__2::basic_string_view>\29 5646:GrStyledShape::~GrStyledShape\28\29 5647:GrStyledShape::setInheritedKey\28GrStyledShape\20const&\2c\20GrStyle::Apply\2c\20float\29 5648:GrStyledShape::asRRect\28SkRRect*\2c\20SkPathDirection*\2c\20unsigned\20int*\2c\20bool*\29\20const 5649:GrStyledShape::GrStyledShape\28SkPath\20const&\2c\20SkPaint\20const&\2c\20GrStyledShape::DoSimplify\29 5650:GrStyle::~GrStyle\28\29 5651:GrStyle::applyToPath\28SkPath*\2c\20SkStrokeRec::InitStyle*\2c\20SkPath\20const&\2c\20float\29\20const 5652:GrStyle::applyPathEffect\28SkPath*\2c\20SkStrokeRec*\2c\20SkPath\20const&\29\20const 5653:GrStencilSettings::SetClipBitSettings\28bool\29 5654:GrStagingBufferManager::detachBuffers\28\29 5655:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::defineStruct\28char\20const*\29 5656:GrShape::simplify\28unsigned\20int\29 5657:GrShape::segmentMask\28\29\20const 5658:GrShape::conservativeContains\28SkRect\20const&\29\20const 5659:GrShape::closed\28\29\20const 5660:GrSWMaskHelper::toTextureView\28GrRecordingContext*\2c\20SkBackingFit\29 5661:GrSWMaskHelper::drawShape\28GrStyledShape\20const&\2c\20SkMatrix\20const&\2c\20GrAA\2c\20unsigned\20char\29 5662:GrSWMaskHelper::drawShape\28GrShape\20const&\2c\20SkMatrix\20const&\2c\20GrAA\2c\20unsigned\20char\29 5663:GrResourceProvider::writePixels\28sk_sp\2c\20GrColorType\2c\20SkISize\2c\20GrMipLevel\20const*\2c\20int\29\20const 5664:GrResourceProvider::wrapBackendSemaphore\28GrBackendSemaphore\20const&\2c\20GrSemaphoreWrapType\2c\20GrWrapOwnership\29 5665:GrResourceProvider::prepareLevels\28GrBackendFormat\20const&\2c\20GrColorType\2c\20SkISize\2c\20GrMipLevel\20const*\2c\20int\2c\20skia_private::AutoSTArray<14\2c\20GrMipLevel>*\2c\20skia_private::AutoSTArray<14\2c\20std::__2::unique_ptr>>*\29\20const 5666:GrResourceProvider::getExactScratch\28SkISize\2c\20GrBackendFormat\20const&\2c\20GrTextureType\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Budgeted\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 5667:GrResourceProvider::createTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20GrTextureType\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 5668:GrResourceProvider::createTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20GrTextureType\2c\20GrColorType\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Budgeted\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrMipLevel\20const*\2c\20std::__2::basic_string_view>\29 5669:GrResourceProvider::createApproxTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20GrTextureType\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 5670:GrResourceCache::~GrResourceCache\28\29 5671:GrResourceCache::removeResource\28GrGpuResource*\29 5672:GrResourceCache::processFreedGpuResources\28\29 5673:GrResourceCache::insertResource\28GrGpuResource*\29 5674:GrResourceCache::didChangeBudgetStatus\28GrGpuResource*\29 5675:GrResourceAllocator::~GrResourceAllocator\28\29 5676:GrResourceAllocator::planAssignment\28\29 5677:GrResourceAllocator::expire\28unsigned\20int\29 5678:GrRenderTask::makeSkippable\28\29 5679:GrRenderTask::isInstantiated\28\29\20const 5680:GrRenderTarget::GrRenderTarget\28GrGpu*\2c\20SkISize\20const&\2c\20int\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\2c\20sk_sp\29 5681:GrRecordingContextPriv::createDevice\28skgpu::Budgeted\2c\20SkImageInfo\20const&\2c\20SkBackingFit\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrSurfaceOrigin\2c\20SkSurfaceProps\20const&\2c\20skgpu::ganesh::Device::InitContents\29 5682:GrRecordingContext::init\28\29 5683:GrRRectEffect::Make\28std::__2::unique_ptr>\2c\20GrClipEdgeType\2c\20SkRRect\20const&\2c\20GrShaderCaps\20const&\29 5684:GrQuadUtils::TessellationHelper::reset\28GrQuad\20const&\2c\20GrQuad\20const*\29 5685:GrQuadUtils::TessellationHelper::outset\28skvx::Vec<4\2c\20float>\20const&\2c\20GrQuad*\2c\20GrQuad*\29 5686:GrQuadUtils::TessellationHelper::adjustDegenerateVertices\28skvx::Vec<4\2c\20float>\20const&\2c\20GrQuadUtils::TessellationHelper::Vertices*\29 5687:GrQuadUtils::TessellationHelper::OutsetRequest::reset\28GrQuadUtils::TessellationHelper::EdgeVectors\20const&\2c\20GrQuad::Type\2c\20skvx::Vec<4\2c\20float>\20const&\29 5688:GrQuadUtils::TessellationHelper::EdgeVectors::reset\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20GrQuad::Type\29 5689:GrQuadUtils::ClipToW0\28DrawQuad*\2c\20DrawQuad*\29 5690:GrQuad::bounds\28\29\20const 5691:GrProxyProvider::~GrProxyProvider\28\29 5692:GrProxyProvider::wrapBackendTexture\28GrBackendTexture\20const&\2c\20GrWrapOwnership\2c\20GrWrapCacheable\2c\20GrIOType\2c\20sk_sp\29 5693:GrProxyProvider::removeUniqueKeyFromProxy\28GrTextureProxy*\29 5694:GrProxyProvider::processInvalidUniqueKeyImpl\28skgpu::UniqueKey\20const&\2c\20GrTextureProxy*\2c\20GrProxyProvider::InvalidateGPUResource\2c\20GrProxyProvider::RemoveTableEntry\29 5695:GrProxyProvider::createLazyProxy\28std::__2::function&&\2c\20GrBackendFormat\20const&\2c\20SkISize\2c\20skgpu::Mipmapped\2c\20GrMipmapStatus\2c\20GrInternalSurfaceFlags\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20GrSurfaceProxy::UseAllocator\2c\20std::__2::basic_string_view>\29 5696:GrProxyProvider::contextID\28\29\20const 5697:GrProxyProvider::adoptUniqueKeyFromSurface\28GrTextureProxy*\2c\20GrSurface\20const*\29 5698:GrPixmapBase::clip\28SkISize\2c\20SkIPoint*\29 5699:GrPixmap::GrPixmap\28GrImageInfo\2c\20sk_sp\2c\20unsigned\20long\29 5700:GrPipeline::GrPipeline\28GrPipeline::InitArgs\20const&\2c\20sk_sp\2c\20GrAppliedHardClip\20const&\29 5701:GrPersistentCacheUtils::GetType\28SkReadBuffer*\29 5702:GrPathUtils::QuadUVMatrix::set\28SkPoint\20const*\29 5703:GrPathTessellationShader::MakeStencilOnlyPipeline\28GrTessellationShader::ProgramArgs\20const&\2c\20GrAAType\2c\20GrAppliedHardClip\20const&\2c\20GrPipeline::InputFlags\29 5704:GrPaint::setCoverageSetOpXPFactory\28SkRegion::Op\2c\20bool\29 5705:GrOvalOpFactory::MakeOvalOp\28GrRecordingContext*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20GrStyle\20const&\2c\20GrShaderCaps\20const*\29 5706:GrOpsRenderPass::drawIndexed\28int\2c\20int\2c\20unsigned\20short\2c\20unsigned\20short\2c\20int\29 5707:GrOpsRenderPass::drawIndexedInstanced\28int\2c\20int\2c\20int\2c\20int\2c\20int\29 5708:GrOpsRenderPass::drawIndexPattern\28int\2c\20int\2c\20int\2c\20int\2c\20int\29 5709:GrOpFlushState::reset\28\29 5710:GrOpFlushState::executeDrawsAndUploadsForMeshDrawOp\28GrOp\20const*\2c\20SkRect\20const&\2c\20GrPipeline\20const*\2c\20GrUserStencilSettings\20const*\29 5711:GrOpFlushState::addASAPUpload\28std::__2::function&\29>&&\29 5712:GrOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 5713:GrOp::combineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 5714:GrOnFlushResourceProvider::instantiateProxy\28GrSurfaceProxy*\29 5715:GrMeshDrawTarget::allocMesh\28\29 5716:GrMeshDrawOp::PatternHelper::init\28GrMeshDrawTarget*\2c\20GrPrimitiveType\2c\20unsigned\20long\2c\20sk_sp\2c\20int\2c\20int\2c\20int\2c\20int\29 5717:GrMeshDrawOp::CombinedQuadCountWillOverflow\28GrAAType\2c\20bool\2c\20int\29 5718:GrMemoryPool::allocate\28unsigned\20long\29 5719:GrMakeUniqueKeyInvalidationListener\28skgpu::UniqueKey*\2c\20unsigned\20int\29::Listener::changed\28\29 5720:GrIndexBufferAllocPool::makeSpace\28int\2c\20sk_sp*\2c\20int*\29 5721:GrIndexBufferAllocPool::makeSpaceAtLeast\28int\2c\20int\2c\20sk_sp*\2c\20int*\2c\20int*\29 5722:GrImageInfo::refColorSpace\28\29\20const 5723:GrImageInfo::minRowBytes\28\29\20const 5724:GrImageInfo::makeDimensions\28SkISize\29\20const 5725:GrImageInfo::bpp\28\29\20const 5726:GrImageInfo::GrImageInfo\28GrColorType\2c\20SkAlphaType\2c\20sk_sp\2c\20int\2c\20int\29 5727:GrImageContext::abandonContext\28\29 5728:GrGpuResource::makeBudgeted\28\29 5729:GrGpuResource::getResourceName\28\29\20const 5730:GrGpuResource::abandon\28\29 5731:GrGpuResource::CreateUniqueID\28\29 5732:GrGpu::~GrGpu\28\29 5733:GrGpu::regenerateMipMapLevels\28GrTexture*\29 5734:GrGpu::createTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20GrTextureType\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 5735:GrGpu::createTextureCommon\28SkISize\2c\20GrBackendFormat\20const&\2c\20GrTextureType\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20int\2c\20unsigned\20int\2c\20std::__2::basic_string_view>\29 5736:GrGeometryProcessor::AttributeSet::addToKey\28skgpu::KeyBuilder*\29\20const 5737:GrGLVertexArray::invalidateCachedState\28\29 5738:GrGLTextureParameters::invalidate\28\29 5739:GrGLTexture::MakeWrapped\28GrGLGpu*\2c\20GrMipmapStatus\2c\20GrGLTexture::Desc\20const&\2c\20sk_sp\2c\20GrWrapCacheable\2c\20GrIOType\2c\20std::__2::basic_string_view>\29 5740:GrGLTexture::GrGLTexture\28GrGLGpu*\2c\20skgpu::Budgeted\2c\20GrGLTexture::Desc\20const&\2c\20GrMipmapStatus\2c\20std::__2::basic_string_view>\29 5741:GrGLTexture::GrGLTexture\28GrGLGpu*\2c\20GrGLTexture::Desc\20const&\2c\20sk_sp\2c\20GrMipmapStatus\2c\20std::__2::basic_string_view>\29 5742:GrGLSLVaryingHandler::getFragDecls\28SkString*\2c\20SkString*\29\20const 5743:GrGLSLVaryingHandler::addAttribute\28GrShaderVar\20const&\29 5744:GrGLSLUniformHandler::liftUniformToVertexShader\28GrProcessor\20const&\2c\20SkString\29 5745:GrGLSLShaderBuilder::finalize\28unsigned\20int\29 5746:GrGLSLShaderBuilder::emitFunction\28char\20const*\2c\20char\20const*\29 5747:GrGLSLShaderBuilder::emitFunctionPrototype\28char\20const*\29 5748:GrGLSLShaderBuilder::appendTextureLookupAndBlend\28char\20const*\2c\20SkBlendMode\2c\20GrResourceHandle\2c\20char\20const*\2c\20GrGLSLColorSpaceXformHelper*\29 5749:GrGLSLShaderBuilder::appendColorGamutXform\28SkString*\2c\20char\20const*\2c\20GrGLSLColorSpaceXformHelper*\29::$_0::operator\28\29\28char\20const*\2c\20GrResourceHandle\2c\20skcms_TFType\29\20const 5750:GrGLSLShaderBuilder::addLayoutQualifier\28char\20const*\2c\20GrGLSLShaderBuilder::InterfaceQualifier\29 5751:GrGLSLShaderBuilder::GrGLSLShaderBuilder\28GrGLSLProgramBuilder*\29 5752:GrGLSLProgramDataManager::setRuntimeEffectUniforms\28SkSpan\2c\20SkSpan\20const>\2c\20SkSpan\2c\20void\20const*\29\20const 5753:GrGLSLProgramBuilder::~GrGLSLProgramBuilder\28\29 5754:GrGLSLBlend::SetBlendModeUniformData\28GrGLSLProgramDataManager\20const&\2c\20GrResourceHandle\2c\20SkBlendMode\29 5755:GrGLSLBlend::BlendExpression\28GrProcessor\20const*\2c\20GrGLSLUniformHandler*\2c\20GrResourceHandle*\2c\20char\20const*\2c\20char\20const*\2c\20SkBlendMode\29 5756:GrGLRenderTarget::GrGLRenderTarget\28GrGLGpu*\2c\20SkISize\20const&\2c\20GrGLFormat\2c\20int\2c\20GrGLRenderTarget::IDs\20const&\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 5757:GrGLProgramDataManager::set4fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 5758:GrGLProgramDataManager::set2fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 5759:GrGLProgramBuilder::uniformHandler\28\29 5760:GrGLProgramBuilder::PrecompileProgram\28GrDirectContext*\2c\20GrGLPrecompiledProgram*\2c\20SkData\20const&\29::$_0::operator\28\29\28SkSL::ProgramKind\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int\29\20const 5761:GrGLProgramBuilder::CreateProgram\28GrDirectContext*\2c\20GrProgramDesc\20const&\2c\20GrProgramInfo\20const&\2c\20GrGLPrecompiledProgram\20const*\29 5762:GrGLProgram::~GrGLProgram\28\29 5763:GrGLMakeAssembledWebGLInterface\28void*\2c\20void\20\28*\20\28*\29\28void*\2c\20char\20const*\29\29\28\29\29 5764:GrGLGpu::~GrGLGpu\28\29 5765:GrGLGpu::uploadTexData\28SkISize\2c\20unsigned\20int\2c\20SkIRect\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20long\2c\20GrMipLevel\20const*\2c\20int\29 5766:GrGLGpu::uploadCompressedTexData\28SkTextureCompressionType\2c\20GrGLFormat\2c\20SkISize\2c\20skgpu::Mipmapped\2c\20unsigned\20int\2c\20void\20const*\2c\20unsigned\20long\29 5767:GrGLGpu::uploadColorToTex\28GrGLFormat\2c\20SkISize\2c\20unsigned\20int\2c\20std::__2::array\2c\20unsigned\20int\29 5768:GrGLGpu::readOrTransferPixelsFrom\28GrSurface*\2c\20SkIRect\2c\20GrColorType\2c\20GrColorType\2c\20void*\2c\20int\29 5769:GrGLGpu::getCompatibleStencilIndex\28GrGLFormat\29 5770:GrGLGpu::deleteSync\28__GLsync*\29 5771:GrGLGpu::createRenderTargetObjects\28GrGLTexture::Desc\20const&\2c\20int\2c\20GrGLRenderTarget::IDs*\29 5772:GrGLGpu::createCompressedTexture2D\28SkISize\2c\20SkTextureCompressionType\2c\20GrGLFormat\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrGLTextureParameters::SamplerOverriddenState*\29 5773:GrGLGpu::bindFramebuffer\28unsigned\20int\2c\20unsigned\20int\29 5774:GrGLGpu::ProgramCache::reset\28\29 5775:GrGLGpu::ProgramCache::findOrCreateProgramImpl\28GrDirectContext*\2c\20GrProgramDesc\20const&\2c\20GrProgramInfo\20const&\2c\20GrThreadSafePipelineBuilder::Stats::ProgramCacheResult*\29 5776:GrGLFunction::GrGLFunction\28void\20\28*\29\28unsigned\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void\20const*\29\29::'lambda'\28void\20const*\2c\20unsigned\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void\20const*\29::__invoke\28void\20const*\2c\20unsigned\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void\20const*\29 5777:GrGLFunction::GrGLFunction\28void\20\28*\29\28int\2c\20float\29\29::'lambda'\28void\20const*\2c\20int\2c\20float\29::__invoke\28void\20const*\2c\20int\2c\20float\29 5778:GrGLFormatIsCompressed\28GrGLFormat\29 5779:GrGLFinishCallbacks::check\28\29 5780:GrGLContext::~GrGLContext\28\29.1 5781:GrGLContext::~GrGLContext\28\29 5782:GrGLCaps::~GrGLCaps\28\29 5783:GrGLCaps::getTexSubImageExternalFormatAndType\28GrGLFormat\2c\20GrColorType\2c\20GrColorType\2c\20unsigned\20int*\2c\20unsigned\20int*\29\20const 5784:GrGLCaps::getTexSubImageDefaultFormatTypeAndColorType\28GrGLFormat\2c\20unsigned\20int*\2c\20unsigned\20int*\2c\20GrColorType*\29\20const 5785:GrGLCaps::getRenderTargetSampleCount\28int\2c\20GrGLFormat\29\20const 5786:GrGLCaps::formatSupportsTexStorage\28GrGLFormat\29\20const 5787:GrGLCaps::canCopyAsDraw\28GrGLFormat\2c\20bool\2c\20bool\29\20const 5788:GrGLCaps::canCopyAsBlit\28GrGLFormat\2c\20int\2c\20GrTextureType\20const*\2c\20GrGLFormat\2c\20int\2c\20GrTextureType\20const*\2c\20SkRect\20const&\2c\20bool\2c\20SkIRect\20const&\2c\20SkIRect\20const&\29\20const 5789:GrFragmentProcessor::~GrFragmentProcessor\28\29 5790:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::Make\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29 5791:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29 5792:GrFragmentProcessor::ProgramImpl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 5793:GrFragmentProcessor::HighPrecision\28std::__2::unique_ptr>\29::HighPrecisionFragmentProcessor::Make\28std::__2::unique_ptr>\29 5794:GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29::ComposeProcessor::Make\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 5795:GrFragmentProcessor::ClampOutput\28std::__2::unique_ptr>\29 5796:GrFixedClip::preApply\28SkRect\20const&\2c\20GrAA\29\20const 5797:GrFixedClip::getConservativeBounds\28\29\20const 5798:GrFixedClip::apply\28GrAppliedHardClip*\2c\20SkIRect*\29\20const 5799:GrEagerDynamicVertexAllocator::unlock\28int\29 5800:GrDynamicAtlas::readView\28GrCaps\20const&\29\20const 5801:GrDynamicAtlas::instantiate\28GrOnFlushResourceProvider*\2c\20sk_sp\29 5802:GrDriverBugWorkarounds::GrDriverBugWorkarounds\28\29 5803:GrDrawingManager::getLastRenderTask\28GrSurfaceProxy\20const*\29\20const 5804:GrDrawingManager::flush\28SkSpan\2c\20SkSurfaces::BackendSurfaceAccess\2c\20GrFlushInfo\20const&\2c\20skgpu::MutableTextureState\20const*\29 5805:GrDrawOpAtlasConfig::atlasDimensions\28skgpu::MaskFormat\29\20const 5806:GrDrawOpAtlasConfig::GrDrawOpAtlasConfig\28int\2c\20unsigned\20long\29 5807:GrDrawOpAtlas::addToAtlas\28GrResourceProvider*\2c\20GrDeferredUploadTarget*\2c\20int\2c\20int\2c\20void\20const*\2c\20skgpu::AtlasLocator*\29 5808:GrDrawOpAtlas::Make\28GrProxyProvider*\2c\20GrBackendFormat\20const&\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20int\2c\20int\2c\20int\2c\20skgpu::AtlasGenerationCounter*\2c\20GrDrawOpAtlas::AllowMultitexturing\2c\20skgpu::PlotEvictionCallback*\2c\20std::__2::basic_string_view>\29 5809:GrDistanceFieldA8TextGeoProc::onTextureSampler\28int\29\20const 5810:GrDistanceFieldA8TextGeoProc::addNewViews\28GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\29 5811:GrDisableColorXPFactory::MakeXferProcessor\28\29 5812:GrDirectContextPriv::validPMUPMConversionExists\28\29 5813:GrDirectContext::~GrDirectContext\28\29 5814:GrDirectContext::onGetSmallPathAtlasMgr\28\29 5815:GrDirectContext::getResourceCacheLimits\28int*\2c\20unsigned\20long*\29\20const 5816:GrCopyRenderTask::~GrCopyRenderTask\28\29 5817:GrCopyRenderTask::onIsUsed\28GrSurfaceProxy*\29\20const 5818:GrCopyBaseMipMapToView\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20skgpu::Budgeted\29 5819:GrContext_Base::threadSafeProxy\28\29 5820:GrContext_Base::maxSurfaceSampleCountForColorType\28SkColorType\29\20const 5821:GrContext_Base::backend\28\29\20const 5822:GrContextThreadSafeProxy::~GrContextThreadSafeProxy\28\29 5823:GrColorInfo::makeColorType\28GrColorType\29\20const 5824:GrColorInfo::isLinearlyBlended\28\29\20const 5825:GrColorFragmentProcessorAnalysis::GrColorFragmentProcessorAnalysis\28GrProcessorAnalysisColor\20const&\2c\20std::__2::unique_ptr>\20const*\2c\20int\29 5826:GrClip::IsPixelAligned\28SkRect\20const&\29 5827:GrCaps::surfaceSupportsWritePixels\28GrSurface\20const*\29\20const 5828:GrCaps::getDstSampleFlagsForProxy\28GrRenderTargetProxy\20const*\2c\20bool\29\20const 5829:GrCPixmap::GrCPixmap\28GrPixmap\20const&\29 5830:GrBufferAllocPool::makeSpaceAtLeast\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20sk_sp*\2c\20unsigned\20long*\2c\20unsigned\20long*\29 5831:GrBufferAllocPool::createBlock\28unsigned\20long\29 5832:GrBufferAllocPool::CpuBufferCache::makeBuffer\28unsigned\20long\2c\20bool\29 5833:GrBlurUtils::draw_shape_with_mask_filter\28GrRecordingContext*\2c\20skgpu::ganesh::SurfaceDrawContext*\2c\20GrClip\20const*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkMaskFilterBase\20const*\2c\20GrStyledShape\20const&\29 5834:GrBlurUtils::draw_mask\28skgpu::ganesh::SurfaceDrawContext*\2c\20GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20GrPaint&&\2c\20GrSurfaceProxyView\29 5835:GrBlurUtils::create_integral_table\28float\2c\20SkBitmap*\29 5836:GrBlurUtils::convolve_gaussian\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20GrColorType\2c\20SkAlphaType\2c\20SkIRect\2c\20SkIRect\2c\20GrBlurUtils::\28anonymous\20namespace\29::Direction\2c\20int\2c\20float\2c\20SkTileMode\2c\20sk_sp\2c\20SkBackingFit\29 5837:GrBlurUtils::\28anonymous\20namespace\29::make_texture_effect\28GrCaps\20const*\2c\20GrSurfaceProxyView\2c\20SkAlphaType\2c\20GrSamplerState\20const&\2c\20SkIRect\20const&\2c\20SkIRect\20const&\2c\20SkISize\20const&\29 5838:GrBitmapTextGeoProc::addNewViews\28GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\29 5839:GrBicubicEffect::Make\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkMatrix\20const&\2c\20GrSamplerState::WrapMode\2c\20GrSamplerState::WrapMode\2c\20SkCubicResampler\2c\20GrBicubicEffect::Direction\2c\20GrCaps\20const&\29 5840:GrBicubicEffect::MakeSubset\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkMatrix\20const&\2c\20GrSamplerState::WrapMode\2c\20GrSamplerState::WrapMode\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkCubicResampler\2c\20GrBicubicEffect::Direction\2c\20GrCaps\20const&\29 5841:GrBackendTextures::MakeGL\28int\2c\20int\2c\20skgpu::Mipmapped\2c\20GrGLTextureInfo\20const&\2c\20std::__2::basic_string_view>\29 5842:GrBackendTexture::operator=\28GrBackendTexture\20const&\29 5843:GrBackendRenderTargets::MakeGL\28int\2c\20int\2c\20int\2c\20int\2c\20GrGLFramebufferInfo\20const&\29 5844:GrBackendRenderTargets::GetGLFramebufferInfo\28GrBackendRenderTarget\20const&\2c\20GrGLFramebufferInfo*\29 5845:GrBackendRenderTarget::~GrBackendRenderTarget\28\29 5846:GrBackendRenderTarget::isProtected\28\29\20const 5847:GrBackendFormatBytesPerBlock\28GrBackendFormat\20const&\29 5848:GrBackendFormat::makeTexture2D\28\29\20const 5849:GrBackendFormat::isMockStencilFormat\28\29\20const 5850:GrBackendFormat::MakeMock\28GrColorType\2c\20SkTextureCompressionType\2c\20bool\29 5851:GrAuditTrail::opsCombined\28GrOp\20const*\2c\20GrOp\20const*\29 5852:GrAttachment::ComputeSharedAttachmentUniqueKey\28GrCaps\20const&\2c\20GrBackendFormat\20const&\2c\20SkISize\2c\20GrAttachment::UsageFlags\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrMemoryless\2c\20skgpu::UniqueKey*\29 5853:GrAtlasManager::~GrAtlasManager\28\29 5854:GrAtlasManager::getViews\28skgpu::MaskFormat\2c\20unsigned\20int*\29 5855:GrAtlasManager::freeAll\28\29 5856:GrAATriangulator::makeEvent\28GrAATriangulator::SSEdge*\2c\20GrTriangulator::Vertex*\2c\20GrAATriangulator::SSEdge*\2c\20GrTriangulator::Vertex*\2c\20GrAATriangulator::EventList*\2c\20GrTriangulator::Comparator\20const&\29\20const 5857:GrAATriangulator::collapseOverlapRegions\28GrTriangulator::VertexList*\2c\20GrTriangulator::Comparator\20const&\2c\20GrAATriangulator::EventComparator\29 5858:GrAAConvexTessellator::quadTo\28SkPoint\20const*\29 5859:GetVariationDesignPosition\28AutoFTAccess&\2c\20SkFontArguments::VariationPosition::Coordinate*\2c\20int\29 5860:GetShapedLines\28skia::textlayout::Paragraph&\29 5861:GetLargeValue 5862:FontMgrRunIterator::endOfCurrentRun\28\29\20const 5863:FontMgrRunIterator::atEnd\28\29\20const 5864:FinishRow 5865:FindUndone\28SkOpContourHead*\29 5866:FT_Stream_Close 5867:FT_Sfnt_Table_Info 5868:FT_Render_Glyph_Internal 5869:FT_Remove_Module 5870:FT_Outline_Get_Orientation 5871:FT_Outline_EmboldenXY 5872:FT_New_Library 5873:FT_New_GlyphSlot 5874:FT_List_Iterate 5875:FT_List_Find 5876:FT_List_Finalize 5877:FT_GlyphLoader_CheckSubGlyphs 5878:FT_Get_Postscript_Name 5879:FT_Get_Paint_Layers 5880:FT_Get_PS_Font_Info 5881:FT_Get_Kerning 5882:FT_Get_Glyph_Name 5883:FT_Get_FSType_Flags 5884:FT_Get_Colorline_Stops 5885:FT_Get_Color_Glyph_ClipBox 5886:FT_Bitmap_Convert 5887:FT_Add_Default_Modules 5888:EllipticalRRectOp::~EllipticalRRectOp\28\29.1 5889:EllipticalRRectOp::~EllipticalRRectOp\28\29 5890:EllipticalRRectOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 5891:EllipticalRRectOp::RRect&\20skia_private::TArray::emplace_back\28EllipticalRRectOp::RRect&&\29 5892:EllipticalRRectOp::EllipticalRRectOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20float\2c\20float\2c\20SkPoint\2c\20bool\29 5893:EllipseOp::Make\28GrRecordingContext*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20SkStrokeRec\20const&\29 5894:EllipseOp::EllipseOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20EllipseOp::DeviceSpaceParams\20const&\2c\20SkStrokeRec\20const&\29 5895:EllipseGeometryProcessor::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 5896:DIEllipseOp::Make\28GrRecordingContext*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20SkStrokeRec\20const&\29 5897:DIEllipseOp::DIEllipseOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20DIEllipseOp::DeviceSpaceParams\20const&\2c\20SkMatrix\20const&\29 5898:CustomXP::makeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrXferProcessor\20const&\29 5899:CustomXP::makeProgramImpl\28\29\20const::Impl::emitBlendCodeForDstRead\28GrGLSLXPFragmentBuilder*\2c\20GrGLSLUniformHandler*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20GrXferProcessor\20const&\29 5900:Cr_z_deflateReset 5901:Cr_z_deflate 5902:Cr_z_crc32_z 5903:CoverageSetOpXP::onIsEqual\28GrXferProcessor\20const&\29\20const 5904:CircularRRectOp::~CircularRRectOp\28\29.1 5905:CircularRRectOp::~CircularRRectOp\28\29 5906:CircularRRectOp::CircularRRectOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20float\2c\20float\2c\20bool\29 5907:CircleOp::Make\28GrRecordingContext*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20float\2c\20GrStyle\20const&\2c\20CircleOp::ArcParams\20const*\29 5908:CircleOp::CircleOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20float\2c\20GrStyle\20const&\2c\20CircleOp::ArcParams\20const*\29 5909:CircleGeometryProcessor::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 5910:CheckDecBuffer 5911:CFF::path_procs_t::rlineto\28CFF::cff1_cs_interp_env_t&\2c\20cff1_extents_param_t&\29 5912:CFF::dict_interpreter_t\2c\20CFF::interp_env_t>::interpret\28CFF::cff1_private_dict_values_base_t&\29 5913:CFF::cff2_cs_opset_t::process_blend\28CFF::cff2_cs_interp_env_t&\2c\20cff2_extents_param_t&\29 5914:CFF::FDSelect3_4\2c\20OT::IntType>::sanitize\28hb_sanitize_context_t*\2c\20unsigned\20int\29\20const 5915:CFF::Charset::get_sid\28unsigned\20int\2c\20unsigned\20int\2c\20CFF::code_pair_t*\29\20const 5916:CFF::CFFIndex>::get_size\28\29\20const 5917:CFF::CFF2FDSelect::get_fd\28unsigned\20int\29\20const 5918:ButtCapDashedCircleOp::ButtCapDashedCircleOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 5919:BuildHuffmanTable 5920:AsWinding\28SkPath\20const&\2c\20SkPath*\29 5921:AngleWinding\28SkOpSpanBase*\2c\20SkOpSpanBase*\2c\20int*\2c\20bool*\29 5922:AddIntersectTs\28SkOpContour*\2c\20SkOpContour*\2c\20SkOpCoincidence*\29 5923:ActiveEdgeList::replace\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20unsigned\20short\2c\20unsigned\20short\2c\20unsigned\20short\29 5924:ActiveEdgeList::remove\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20unsigned\20short\2c\20unsigned\20short\29 5925:ActiveEdgeList::insert\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20unsigned\20short\2c\20unsigned\20short\29 5926:AAT::hb_aat_apply_context_t::return_t\20AAT::ChainSubtable::dispatch\28AAT::hb_aat_apply_context_t*\29\20const 5927:AAT::hb_aat_apply_context_t::return_t\20AAT::ChainSubtable::dispatch\28AAT::hb_aat_apply_context_t*\29\20const 5928:AAT::TrackData::sanitize\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 5929:AAT::TrackData::get_tracking\28void\20const*\2c\20float\29\20const 5930:AAT::StateTable::EntryData>::sanitize\28hb_sanitize_context_t*\2c\20unsigned\20int*\29\20const 5931:AAT::StateTable::EntryData>::sanitize\28hb_sanitize_context_t*\2c\20unsigned\20int*\29\20const 5932:AAT::StateTable::EntryData>::sanitize\28hb_sanitize_context_t*\2c\20unsigned\20int*\29\20const 5933:AAT::RearrangementSubtable::driver_context_t::transition\28AAT::StateTableDriver*\2c\20AAT::Entry\20const&\29 5934:AAT::NoncontextualSubtable::apply\28AAT::hb_aat_apply_context_t*\29\20const 5935:AAT::Lookup>::sanitize\28hb_sanitize_context_t*\29\20const 5936:AAT::Lookup>::get_value\28unsigned\20int\2c\20unsigned\20int\29\20const 5937:AAT::InsertionSubtable::driver_context_t::transition\28AAT::StateTableDriver::EntryData>*\2c\20AAT::Entry::EntryData>\20const&\29 5938:ycck_cmyk_convert 5939:ycc_rgb_convert 5940:ycc_rgb565_convert 5941:ycc_rgb565D_convert 5942:xyzd50_to_lab\28SkRGBA4f<\28SkAlphaType\292>\2c\20bool*\29 5943:xyzd50_to_hcl\28SkRGBA4f<\28SkAlphaType\292>\2c\20bool*\29 5944:wuffs_gif__decoder__tell_me_more 5945:wuffs_gif__decoder__set_report_metadata 5946:wuffs_gif__decoder__num_decoded_frame_configs 5947:wuffs_base__pixel_swizzler__xxxxxxxx__index_binary_alpha__src_over 5948:wuffs_base__pixel_swizzler__xxxxxxxx__index__src 5949:wuffs_base__pixel_swizzler__xxxx__index_binary_alpha__src_over 5950:wuffs_base__pixel_swizzler__xxxx__index__src 5951:wuffs_base__pixel_swizzler__xxx__index_binary_alpha__src_over 5952:wuffs_base__pixel_swizzler__xxx__index__src 5953:wuffs_base__pixel_swizzler__transparent_black_src_over 5954:wuffs_base__pixel_swizzler__transparent_black_src 5955:wuffs_base__pixel_swizzler__copy_1_1 5956:wuffs_base__pixel_swizzler__bgr_565__index_binary_alpha__src_over 5957:wuffs_base__pixel_swizzler__bgr_565__index__src 5958:webgl_get_gl_proc\28void*\2c\20char\20const*\29 5959:void\20std::__2::vector>::__emplace_back_slow_path\28char\20const*&\2c\20int&&\29 5960:void\20std::__2::vector>::__emplace_back_slow_path\20const&>\28unsigned\20char\20const&\2c\20sk_sp\20const&\29 5961:void\20std::__2::__call_once_proxy\5babi:v160004\5d>\28void*\29 5962:void\20std::__2::__call_once_proxy\5babi:v160004\5d>\28void*\29 5963:void\20mergeT\28void\20const*\2c\20int\2c\20unsigned\20char\20const*\2c\20int\2c\20void*\29 5964:void\20mergeT\28void\20const*\2c\20int\2c\20unsigned\20char\20const*\2c\20int\2c\20void*\29 5965:void\20emscripten::internal::raw_destructor>\28sk_sp*\29 5966:void\20emscripten::internal::raw_destructor\28SkVertices::Builder*\29 5967:void\20emscripten::internal::raw_destructor\28SkRuntimeEffect::TracedShader*\29 5968:void\20emscripten::internal::raw_destructor\28SkPictureRecorder*\29 5969:void\20emscripten::internal::raw_destructor\28SkPath*\29 5970:void\20emscripten::internal::raw_destructor\28SkPaint*\29 5971:void\20emscripten::internal::raw_destructor\28SkContourMeasureIter*\29 5972:void\20emscripten::internal::raw_destructor\28SimpleImageInfo*\29 5973:void\20emscripten::internal::MemberAccess::setWire\28SimpleTextStyle\20SimpleParagraphStyle::*\20const&\2c\20SimpleParagraphStyle&\2c\20SimpleTextStyle*\29 5974:void\20emscripten::internal::MemberAccess::setWire\28SimpleStrutStyle\20SimpleParagraphStyle::*\20const&\2c\20SimpleParagraphStyle&\2c\20SimpleStrutStyle*\29 5975:void\20emscripten::internal::MemberAccess>::setWire\28sk_sp\20SimpleImageInfo::*\20const&\2c\20SimpleImageInfo&\2c\20sk_sp*\29 5976:void\20const*\20emscripten::internal::getActualType\28skia::textlayout::TypefaceFontProvider*\29 5977:void\20const*\20emscripten::internal::getActualType\28skia::textlayout::ParagraphBuilderImpl*\29 5978:void\20const*\20emscripten::internal::getActualType\28skia::textlayout::Paragraph*\29 5979:void\20const*\20emscripten::internal::getActualType\28skia::textlayout::FontCollection*\29 5980:void\20const*\20emscripten::internal::getActualType\28SkVertices*\29 5981:void\20const*\20emscripten::internal::getActualType\28SkVertices::Builder*\29 5982:void\20const*\20emscripten::internal::getActualType\28SkTypeface*\29 5983:void\20const*\20emscripten::internal::getActualType\28SkTextBlob*\29 5984:void\20const*\20emscripten::internal::getActualType\28SkSurface*\29 5985:void\20const*\20emscripten::internal::getActualType\28SkShader*\29 5986:void\20const*\20emscripten::internal::getActualType\28SkSL::DebugTrace*\29 5987:void\20const*\20emscripten::internal::getActualType\28SkRuntimeEffect*\29 5988:void\20const*\20emscripten::internal::getActualType\28SkPictureRecorder*\29 5989:void\20const*\20emscripten::internal::getActualType\28SkPicture*\29 5990:void\20const*\20emscripten::internal::getActualType\28SkPathEffect*\29 5991:void\20const*\20emscripten::internal::getActualType\28SkPath*\29 5992:void\20const*\20emscripten::internal::getActualType\28SkPaint*\29 5993:void\20const*\20emscripten::internal::getActualType\28SkMaskFilter*\29 5994:void\20const*\20emscripten::internal::getActualType\28SkImageFilter*\29 5995:void\20const*\20emscripten::internal::getActualType\28SkImage*\29 5996:void\20const*\20emscripten::internal::getActualType\28SkFontMgr*\29 5997:void\20const*\20emscripten::internal::getActualType\28SkFont*\29 5998:void\20const*\20emscripten::internal::getActualType\28SkContourMeasureIter*\29 5999:void\20const*\20emscripten::internal::getActualType\28SkContourMeasure*\29 6000:void\20const*\20emscripten::internal::getActualType\28SkColorSpace*\29 6001:void\20const*\20emscripten::internal::getActualType\28SkColorFilter*\29 6002:void\20const*\20emscripten::internal::getActualType\28SkCanvas*\29 6003:void\20const*\20emscripten::internal::getActualType\28SkBlender*\29 6004:void\20const*\20emscripten::internal::getActualType\28SkAnimatedImage*\29 6005:void\20const*\20emscripten::internal::getActualType\28GrDirectContext*\29 6006:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6007:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6008:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6009:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6010:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6011:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6012:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6013:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6014:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6015:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6016:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6017:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6018:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6019:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6020:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6021:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6022:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6023:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6024:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6025:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6026:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6027:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6028:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6029:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6030:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6031:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6032:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6033:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6034:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6035:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6036:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6037:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6038:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6039:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6040:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6041:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6042:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6043:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6044:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6045:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6046:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6047:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6048:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6049:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6050:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6051:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6052:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6053:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6054:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6055:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6056:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6057:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6058:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6059:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6060:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6061:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6062:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6063:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6064:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6065:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6066:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6067:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6068:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6069:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6070:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6071:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6072:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6073:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6074:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6075:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6076:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6077:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6078:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6079:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6080:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6081:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6082:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6083:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6084:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6085:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6086:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6087:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6088:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6089:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6090:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6091:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6092:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6093:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6094:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6095:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6096:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6097:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6098:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6099:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6100:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6101:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 6102:void\20SkSwizzler::SkipLeadingGrayAlphaZerosThen<&swizzle_grayalpha_to_n32_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6103:void\20SkSwizzler::SkipLeadingGrayAlphaZerosThen<&swizzle_grayalpha_to_n32_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6104:void\20SkSwizzler::SkipLeadingGrayAlphaZerosThen<&fast_swizzle_grayalpha_to_n32_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6105:void\20SkSwizzler::SkipLeadingGrayAlphaZerosThen<&fast_swizzle_grayalpha_to_n32_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6106:void\20SkSwizzler::SkipLeading8888ZerosThen<&swizzle_rgba_to_rgba_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6107:void\20SkSwizzler::SkipLeading8888ZerosThen<&swizzle_rgba_to_bgra_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6108:void\20SkSwizzler::SkipLeading8888ZerosThen<&swizzle_rgba_to_bgra_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6109:void\20SkSwizzler::SkipLeading8888ZerosThen<&sample4\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6110:void\20SkSwizzler::SkipLeading8888ZerosThen<&fast_swizzle_rgba_to_rgba_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6111:void\20SkSwizzler::SkipLeading8888ZerosThen<&fast_swizzle_rgba_to_bgra_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6112:void\20SkSwizzler::SkipLeading8888ZerosThen<&fast_swizzle_rgba_to_bgra_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6113:void\20SkSwizzler::SkipLeading8888ZerosThen<©\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6114:virtual\20thunk\20to\20std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29.1 6115:virtual\20thunk\20to\20std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29 6116:virtual\20thunk\20to\20std::__2::basic_ostream>::~basic_ostream\28\29.1 6117:virtual\20thunk\20to\20std::__2::basic_ostream>::~basic_ostream\28\29 6118:virtual\20thunk\20to\20std::__2::basic_istream>::~basic_istream\28\29.1 6119:virtual\20thunk\20to\20std::__2::basic_istream>::~basic_istream\28\29 6120:virtual\20thunk\20to\20std::__2::basic_iostream>::~basic_iostream\28\29.1 6121:virtual\20thunk\20to\20std::__2::basic_iostream>::~basic_iostream\28\29 6122:virtual\20thunk\20to\20GrTextureRenderTargetProxy::~GrTextureRenderTargetProxy\28\29.1 6123:virtual\20thunk\20to\20GrTextureRenderTargetProxy::~GrTextureRenderTargetProxy\28\29 6124:virtual\20thunk\20to\20GrTextureRenderTargetProxy::onUninstantiatedGpuMemorySize\28\29\20const 6125:virtual\20thunk\20to\20GrTextureRenderTargetProxy::instantiate\28GrResourceProvider*\29 6126:virtual\20thunk\20to\20GrTextureRenderTargetProxy::createSurface\28GrResourceProvider*\29\20const 6127:virtual\20thunk\20to\20GrTextureRenderTargetProxy::callbackDesc\28\29\20const 6128:virtual\20thunk\20to\20GrTextureProxy::~GrTextureProxy\28\29.1 6129:virtual\20thunk\20to\20GrTextureProxy::~GrTextureProxy\28\29 6130:virtual\20thunk\20to\20GrTextureProxy::onUninstantiatedGpuMemorySize\28\29\20const 6131:virtual\20thunk\20to\20GrTextureProxy::instantiate\28GrResourceProvider*\29 6132:virtual\20thunk\20to\20GrTextureProxy::getUniqueKey\28\29\20const 6133:virtual\20thunk\20to\20GrTextureProxy::createSurface\28GrResourceProvider*\29\20const 6134:virtual\20thunk\20to\20GrTextureProxy::callbackDesc\28\29\20const 6135:virtual\20thunk\20to\20GrTextureProxy::asTextureProxy\28\29\20const 6136:virtual\20thunk\20to\20GrTextureProxy::asTextureProxy\28\29 6137:virtual\20thunk\20to\20GrTexture::onGpuMemorySize\28\29\20const 6138:virtual\20thunk\20to\20GrTexture::computeScratchKey\28skgpu::ScratchKey*\29\20const 6139:virtual\20thunk\20to\20GrTexture::asTexture\28\29\20const 6140:virtual\20thunk\20to\20GrTexture::asTexture\28\29 6141:virtual\20thunk\20to\20GrRenderTargetProxy::~GrRenderTargetProxy\28\29.1 6142:virtual\20thunk\20to\20GrRenderTargetProxy::~GrRenderTargetProxy\28\29 6143:virtual\20thunk\20to\20GrRenderTargetProxy::onUninstantiatedGpuMemorySize\28\29\20const 6144:virtual\20thunk\20to\20GrRenderTargetProxy::instantiate\28GrResourceProvider*\29 6145:virtual\20thunk\20to\20GrRenderTargetProxy::createSurface\28GrResourceProvider*\29\20const 6146:virtual\20thunk\20to\20GrRenderTargetProxy::callbackDesc\28\29\20const 6147:virtual\20thunk\20to\20GrRenderTargetProxy::asRenderTargetProxy\28\29\20const 6148:virtual\20thunk\20to\20GrRenderTargetProxy::asRenderTargetProxy\28\29 6149:virtual\20thunk\20to\20GrRenderTarget::onRelease\28\29 6150:virtual\20thunk\20to\20GrRenderTarget::onAbandon\28\29 6151:virtual\20thunk\20to\20GrRenderTarget::asRenderTarget\28\29\20const 6152:virtual\20thunk\20to\20GrRenderTarget::asRenderTarget\28\29 6153:virtual\20thunk\20to\20GrGLTextureRenderTarget::~GrGLTextureRenderTarget\28\29.1 6154:virtual\20thunk\20to\20GrGLTextureRenderTarget::~GrGLTextureRenderTarget\28\29 6155:virtual\20thunk\20to\20GrGLTextureRenderTarget::onRelease\28\29 6156:virtual\20thunk\20to\20GrGLTextureRenderTarget::onGpuMemorySize\28\29\20const 6157:virtual\20thunk\20to\20GrGLTextureRenderTarget::onAbandon\28\29 6158:virtual\20thunk\20to\20GrGLTextureRenderTarget::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 6159:virtual\20thunk\20to\20GrGLTexture::~GrGLTexture\28\29.1 6160:virtual\20thunk\20to\20GrGLTexture::~GrGLTexture\28\29 6161:virtual\20thunk\20to\20GrGLTexture::onRelease\28\29 6162:virtual\20thunk\20to\20GrGLTexture::onAbandon\28\29 6163:virtual\20thunk\20to\20GrGLTexture::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 6164:virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::~GrGLSLFragmentShaderBuilder\28\29.1 6165:virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::~GrGLSLFragmentShaderBuilder\28\29 6166:virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::onFinalize\28\29 6167:virtual\20thunk\20to\20GrGLRenderTarget::~GrGLRenderTarget\28\29.1 6168:virtual\20thunk\20to\20GrGLRenderTarget::~GrGLRenderTarget\28\29 6169:virtual\20thunk\20to\20GrGLRenderTarget::onRelease\28\29 6170:virtual\20thunk\20to\20GrGLRenderTarget::onGpuMemorySize\28\29\20const 6171:virtual\20thunk\20to\20GrGLRenderTarget::onAbandon\28\29 6172:virtual\20thunk\20to\20GrGLRenderTarget::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 6173:virtual\20thunk\20to\20GrGLRenderTarget::backendFormat\28\29\20const 6174:utf8TextMapOffsetToNative\28UText\20const*\29 6175:utf8TextMapIndexToUTF16\28UText\20const*\2c\20long\20long\29 6176:utf8TextLength\28UText*\29 6177:utf8TextExtract\28UText*\2c\20long\20long\2c\20long\20long\2c\20char16_t*\2c\20int\2c\20UErrorCode*\29 6178:utf8TextClone\28UText*\2c\20UText\20const*\2c\20signed\20char\2c\20UErrorCode*\29 6179:utext_openUTF8_73 6180:ures_loc_resetLocales\28UEnumeration*\2c\20UErrorCode*\29 6181:ures_loc_nextLocale\28UEnumeration*\2c\20int*\2c\20UErrorCode*\29 6182:ures_loc_countLocales\28UEnumeration*\2c\20UErrorCode*\29 6183:ures_loc_closeLocales\28UEnumeration*\29 6184:ures_cleanup\28\29 6185:unistrTextReplace\28UText*\2c\20long\20long\2c\20long\20long\2c\20char16_t\20const*\2c\20int\2c\20UErrorCode*\29 6186:unistrTextLength\28UText*\29 6187:unistrTextExtract\28UText*\2c\20long\20long\2c\20long\20long\2c\20char16_t*\2c\20int\2c\20UErrorCode*\29 6188:unistrTextCopy\28UText*\2c\20long\20long\2c\20long\20long\2c\20long\20long\2c\20signed\20char\2c\20UErrorCode*\29 6189:unistrTextClose\28UText*\29 6190:unistrTextClone\28UText*\2c\20UText\20const*\2c\20signed\20char\2c\20UErrorCode*\29 6191:unistrTextAccess\28UText*\2c\20long\20long\2c\20signed\20char\29 6192:uloc_kw_resetKeywords\28UEnumeration*\2c\20UErrorCode*\29 6193:uloc_kw_nextKeyword\28UEnumeration*\2c\20int*\2c\20UErrorCode*\29 6194:uloc_kw_countKeywords\28UEnumeration*\2c\20UErrorCode*\29 6195:uloc_kw_closeKeywords\28UEnumeration*\29 6196:uloc_key_type_cleanup\28\29 6197:uloc_getDefault_73 6198:uhash_hashUnicodeString_73 6199:uhash_hashUChars_73 6200:uhash_hashIChars_73 6201:uhash_deleteHashtable_73 6202:uhash_compareUnicodeString_73 6203:uhash_compareUChars_73 6204:uhash_compareLong_73 6205:uhash_compareIChars_73 6206:uenum_unextDefault_73 6207:udata_cleanup\28\29 6208:ucstrTextLength\28UText*\29 6209:ucstrTextExtract\28UText*\2c\20long\20long\2c\20long\20long\2c\20char16_t*\2c\20int\2c\20UErrorCode*\29 6210:ucstrTextClone\28UText*\2c\20UText\20const*\2c\20signed\20char\2c\20UErrorCode*\29 6211:ubrk_setUText_73 6212:ubrk_setText_73 6213:ubrk_preceding_73 6214:ubrk_open_73 6215:ubrk_next_73 6216:ubrk_getRuleStatus_73 6217:ubrk_following_73 6218:ubrk_first_73 6219:ubrk_current_73 6220:ubidi_reorderVisual_73 6221:ubidi_openSized_73 6222:ubidi_getLevelAt_73 6223:ubidi_getLength_73 6224:ubidi_getDirection_73 6225:u_strToUpper_73 6226:u_isspace_73 6227:u_iscntrl_73 6228:u_isWhitespace_73 6229:u_errorName_73 6230:tt_vadvance_adjust 6231:tt_slot_init 6232:tt_size_select 6233:tt_size_reset_iterator 6234:tt_size_request 6235:tt_size_init 6236:tt_size_done 6237:tt_sbit_decoder_load_png 6238:tt_sbit_decoder_load_compound 6239:tt_sbit_decoder_load_byte_aligned 6240:tt_sbit_decoder_load_bit_aligned 6241:tt_property_set 6242:tt_property_get 6243:tt_name_ascii_from_utf16 6244:tt_name_ascii_from_other 6245:tt_hadvance_adjust 6246:tt_glyph_load 6247:tt_get_var_blend 6248:tt_get_interface 6249:tt_get_glyph_name 6250:tt_get_cmap_info 6251:tt_get_advances 6252:tt_face_set_sbit_strike 6253:tt_face_load_strike_metrics 6254:tt_face_load_sbit_image 6255:tt_face_load_sbit 6256:tt_face_load_post 6257:tt_face_load_pclt 6258:tt_face_load_os2 6259:tt_face_load_name 6260:tt_face_load_maxp 6261:tt_face_load_kern 6262:tt_face_load_hmtx 6263:tt_face_load_hhea 6264:tt_face_load_head 6265:tt_face_load_gasp 6266:tt_face_load_font_dir 6267:tt_face_load_cpal 6268:tt_face_load_colr 6269:tt_face_load_cmap 6270:tt_face_load_bhed 6271:tt_face_load_any 6272:tt_face_init 6273:tt_face_goto_table 6274:tt_face_get_paint_layers 6275:tt_face_get_paint 6276:tt_face_get_kerning 6277:tt_face_get_colr_layer 6278:tt_face_get_colr_glyph_paint 6279:tt_face_get_colorline_stops 6280:tt_face_get_color_glyph_clipbox 6281:tt_face_free_sbit 6282:tt_face_free_ps_names 6283:tt_face_free_name 6284:tt_face_free_cpal 6285:tt_face_free_colr 6286:tt_face_done 6287:tt_face_colr_blend_layer 6288:tt_driver_init 6289:tt_cvt_ready_iterator 6290:tt_cmap_unicode_init 6291:tt_cmap_unicode_char_next 6292:tt_cmap_unicode_char_index 6293:tt_cmap_init 6294:tt_cmap8_validate 6295:tt_cmap8_get_info 6296:tt_cmap8_char_next 6297:tt_cmap8_char_index 6298:tt_cmap6_validate 6299:tt_cmap6_get_info 6300:tt_cmap6_char_next 6301:tt_cmap6_char_index 6302:tt_cmap4_validate 6303:tt_cmap4_init 6304:tt_cmap4_get_info 6305:tt_cmap4_char_next 6306:tt_cmap4_char_index 6307:tt_cmap2_validate 6308:tt_cmap2_get_info 6309:tt_cmap2_char_next 6310:tt_cmap2_char_index 6311:tt_cmap14_variants 6312:tt_cmap14_variant_chars 6313:tt_cmap14_validate 6314:tt_cmap14_init 6315:tt_cmap14_get_info 6316:tt_cmap14_done 6317:tt_cmap14_char_variants 6318:tt_cmap14_char_var_isdefault 6319:tt_cmap14_char_var_index 6320:tt_cmap14_char_next 6321:tt_cmap13_validate 6322:tt_cmap13_get_info 6323:tt_cmap13_char_next 6324:tt_cmap13_char_index 6325:tt_cmap12_validate 6326:tt_cmap12_get_info 6327:tt_cmap12_char_next 6328:tt_cmap12_char_index 6329:tt_cmap10_validate 6330:tt_cmap10_get_info 6331:tt_cmap10_char_next 6332:tt_cmap10_char_index 6333:tt_cmap0_validate 6334:tt_cmap0_get_info 6335:tt_cmap0_char_next 6336:tt_cmap0_char_index 6337:transform_scanline_rgbA\28char*\2c\20char\20const*\2c\20int\2c\20int\29 6338:transform_scanline_memcpy\28char*\2c\20char\20const*\2c\20int\2c\20int\29 6339:transform_scanline_bgra_1010102_premul\28char*\2c\20char\20const*\2c\20int\2c\20int\29 6340:transform_scanline_bgra_1010102\28char*\2c\20char\20const*\2c\20int\2c\20int\29 6341:transform_scanline_bgr_101010x_xr\28char*\2c\20char\20const*\2c\20int\2c\20int\29 6342:transform_scanline_bgr_101010x\28char*\2c\20char\20const*\2c\20int\2c\20int\29 6343:transform_scanline_bgrA\28char*\2c\20char\20const*\2c\20int\2c\20int\29 6344:transform_scanline_RGBX\28char*\2c\20char\20const*\2c\20int\2c\20int\29 6345:transform_scanline_F32_premul\28char*\2c\20char\20const*\2c\20int\2c\20int\29 6346:transform_scanline_F32\28char*\2c\20char\20const*\2c\20int\2c\20int\29 6347:transform_scanline_F16_premul\28char*\2c\20char\20const*\2c\20int\2c\20int\29 6348:transform_scanline_F16\28char*\2c\20char\20const*\2c\20int\2c\20int\29 6349:transform_scanline_BGRX\28char*\2c\20char\20const*\2c\20int\2c\20int\29 6350:transform_scanline_BGRA\28char*\2c\20char\20const*\2c\20int\2c\20int\29 6351:transform_scanline_A8_to_GrayAlpha\28char*\2c\20char\20const*\2c\20int\2c\20int\29 6352:transform_scanline_565\28char*\2c\20char\20const*\2c\20int\2c\20int\29 6353:transform_scanline_444\28char*\2c\20char\20const*\2c\20int\2c\20int\29 6354:transform_scanline_4444\28char*\2c\20char\20const*\2c\20int\2c\20int\29 6355:transform_scanline_101010x\28char*\2c\20char\20const*\2c\20int\2c\20int\29 6356:transform_scanline_1010102_premul\28char*\2c\20char\20const*\2c\20int\2c\20int\29 6357:transform_scanline_1010102\28char*\2c\20char\20const*\2c\20int\2c\20int\29 6358:t2_hints_stems 6359:t2_hints_open 6360:t1_make_subfont 6361:t1_hints_stem 6362:t1_hints_open 6363:t1_decrypt 6364:t1_decoder_parse_metrics 6365:t1_decoder_init 6366:t1_decoder_done 6367:t1_cmap_unicode_init 6368:t1_cmap_unicode_char_next 6369:t1_cmap_unicode_char_index 6370:t1_cmap_std_done 6371:t1_cmap_std_char_next 6372:t1_cmap_std_char_index 6373:t1_cmap_standard_init 6374:t1_cmap_expert_init 6375:t1_cmap_custom_init 6376:t1_cmap_custom_done 6377:t1_cmap_custom_char_next 6378:t1_cmap_custom_char_index 6379:t1_builder_start_point 6380:t1_builder_init 6381:t1_builder_add_point1 6382:t1_builder_add_point 6383:t1_builder_add_contour 6384:swizzle_small_index_to_n32\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6385:swizzle_small_index_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6386:swizzle_rgba_to_rgba_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6387:swizzle_rgba_to_bgra_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6388:swizzle_rgba_to_bgra_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6389:swizzle_rgba16_to_rgba_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6390:swizzle_rgba16_to_rgba_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6391:swizzle_rgba16_to_bgra_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6392:swizzle_rgba16_to_bgra_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6393:swizzle_rgb_to_rgba\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6394:swizzle_rgb_to_bgra\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6395:swizzle_rgb_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6396:swizzle_rgb16_to_rgba\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6397:swizzle_rgb16_to_bgra\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6398:swizzle_rgb16_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6399:swizzle_mask32_to_rgba_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 6400:swizzle_mask32_to_rgba_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 6401:swizzle_mask32_to_rgba_opaque\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 6402:swizzle_mask32_to_bgra_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 6403:swizzle_mask32_to_bgra_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 6404:swizzle_mask32_to_bgra_opaque\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 6405:swizzle_mask32_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 6406:swizzle_mask24_to_rgba_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 6407:swizzle_mask24_to_rgba_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 6408:swizzle_mask24_to_rgba_opaque\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 6409:swizzle_mask24_to_bgra_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 6410:swizzle_mask24_to_bgra_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 6411:swizzle_mask24_to_bgra_opaque\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 6412:swizzle_mask24_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 6413:swizzle_mask16_to_rgba_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 6414:swizzle_mask16_to_rgba_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 6415:swizzle_mask16_to_rgba_opaque\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 6416:swizzle_mask16_to_bgra_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 6417:swizzle_mask16_to_bgra_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 6418:swizzle_mask16_to_bgra_opaque\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 6419:swizzle_mask16_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 6420:swizzle_index_to_n32_skipZ\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6421:swizzle_index_to_n32\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6422:swizzle_index_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6423:swizzle_grayalpha_to_n32_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6424:swizzle_grayalpha_to_n32_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6425:swizzle_grayalpha_to_a8\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6426:swizzle_gray_to_n32\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6427:swizzle_gray_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6428:swizzle_cmyk_to_rgba\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6429:swizzle_cmyk_to_bgra\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6430:swizzle_cmyk_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6431:swizzle_bit_to_n32\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6432:swizzle_bit_to_grayscale\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6433:swizzle_bit_to_f16\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6434:swizzle_bit_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6435:swizzle_bgr_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6436:string_read 6437:std::exception::what\28\29\20const 6438:std::bad_variant_access::what\28\29\20const 6439:std::bad_optional_access::what\28\29\20const 6440:std::bad_array_new_length::what\28\29\20const 6441:std::bad_alloc::what\28\29\20const 6442:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 6443:std::__2::unique_ptr>::operator=\5babi:v160004\5d\28std::__2::unique_ptr>&&\29 6444:std::__2::time_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20tm\20const*\2c\20char\2c\20char\29\20const 6445:std::__2::time_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20tm\20const*\2c\20char\2c\20char\29\20const 6446:std::__2::time_get>>::do_get_year\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 6447:std::__2::time_get>>::do_get_weekday\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 6448:std::__2::time_get>>::do_get_time\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 6449:std::__2::time_get>>::do_get_monthname\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 6450:std::__2::time_get>>::do_get_date\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 6451:std::__2::time_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\2c\20char\2c\20char\29\20const 6452:std::__2::time_get>>::do_get_year\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 6453:std::__2::time_get>>::do_get_weekday\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 6454:std::__2::time_get>>::do_get_time\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 6455:std::__2::time_get>>::do_get_monthname\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 6456:std::__2::time_get>>::do_get_date\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 6457:std::__2::time_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\2c\20char\2c\20char\29\20const 6458:std::__2::numpunct::~numpunct\28\29.1 6459:std::__2::numpunct::do_truename\28\29\20const 6460:std::__2::numpunct::do_grouping\28\29\20const 6461:std::__2::numpunct::do_falsename\28\29\20const 6462:std::__2::numpunct::~numpunct\28\29.1 6463:std::__2::numpunct::do_truename\28\29\20const 6464:std::__2::numpunct::do_thousands_sep\28\29\20const 6465:std::__2::numpunct::do_grouping\28\29\20const 6466:std::__2::numpunct::do_falsename\28\29\20const 6467:std::__2::numpunct::do_decimal_point\28\29\20const 6468:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20void\20const*\29\20const 6469:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20unsigned\20long\29\20const 6470:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20unsigned\20long\20long\29\20const 6471:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\29\20const 6472:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\20long\29\20const 6473:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\20double\29\20const 6474:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20double\29\20const 6475:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20bool\29\20const 6476:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20void\20const*\29\20const 6477:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20unsigned\20long\29\20const 6478:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20unsigned\20long\20long\29\20const 6479:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20long\29\20const 6480:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20long\20long\29\20const 6481:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20long\20double\29\20const 6482:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20double\29\20const 6483:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20bool\29\20const 6484:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20void*&\29\20const 6485:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20short&\29\20const 6486:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20long\20long&\29\20const 6487:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20long&\29\20const 6488:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20double&\29\20const 6489:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long&\29\20const 6490:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20float&\29\20const 6491:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20double&\29\20const 6492:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20bool&\29\20const 6493:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20void*&\29\20const 6494:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20short&\29\20const 6495:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20long\20long&\29\20const 6496:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20long&\29\20const 6497:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20double&\29\20const 6498:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long&\29\20const 6499:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20float&\29\20const 6500:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20double&\29\20const 6501:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20bool&\29\20const 6502:std::__2::money_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29\20const 6503:std::__2::money_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\20double\29\20const 6504:std::__2::money_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20char\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29\20const 6505:std::__2::money_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20char\2c\20long\20double\29\20const 6506:std::__2::money_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\29\20const 6507:std::__2::money_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20double&\29\20const 6508:std::__2::money_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\29\20const 6509:std::__2::money_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20double&\29\20const 6510:std::__2::messages::do_get\28long\2c\20int\2c\20int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29\20const 6511:std::__2::messages::do_get\28long\2c\20int\2c\20int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29\20const 6512:std::__2::locale::id::__init\28\29 6513:std::__2::locale::__imp::~__imp\28\29.1 6514:std::__2::ios_base::~ios_base\28\29.1 6515:std::__2::ctype::do_widen\28char\20const*\2c\20char\20const*\2c\20wchar_t*\29\20const 6516:std::__2::ctype::do_toupper\28wchar_t\29\20const 6517:std::__2::ctype::do_toupper\28wchar_t*\2c\20wchar_t\20const*\29\20const 6518:std::__2::ctype::do_tolower\28wchar_t\29\20const 6519:std::__2::ctype::do_tolower\28wchar_t*\2c\20wchar_t\20const*\29\20const 6520:std::__2::ctype::do_scan_not\28unsigned\20long\2c\20wchar_t\20const*\2c\20wchar_t\20const*\29\20const 6521:std::__2::ctype::do_scan_is\28unsigned\20long\2c\20wchar_t\20const*\2c\20wchar_t\20const*\29\20const 6522:std::__2::ctype::do_narrow\28wchar_t\2c\20char\29\20const 6523:std::__2::ctype::do_narrow\28wchar_t\20const*\2c\20wchar_t\20const*\2c\20char\2c\20char*\29\20const 6524:std::__2::ctype::do_is\28wchar_t\20const*\2c\20wchar_t\20const*\2c\20unsigned\20long*\29\20const 6525:std::__2::ctype::do_is\28unsigned\20long\2c\20wchar_t\29\20const 6526:std::__2::ctype::~ctype\28\29.1 6527:std::__2::ctype::do_widen\28char\20const*\2c\20char\20const*\2c\20char*\29\20const 6528:std::__2::ctype::do_toupper\28char\29\20const 6529:std::__2::ctype::do_toupper\28char*\2c\20char\20const*\29\20const 6530:std::__2::ctype::do_tolower\28char\29\20const 6531:std::__2::ctype::do_tolower\28char*\2c\20char\20const*\29\20const 6532:std::__2::ctype::do_narrow\28char\2c\20char\29\20const 6533:std::__2::ctype::do_narrow\28char\20const*\2c\20char\20const*\2c\20char\2c\20char*\29\20const 6534:std::__2::collate::do_transform\28wchar_t\20const*\2c\20wchar_t\20const*\29\20const 6535:std::__2::collate::do_hash\28wchar_t\20const*\2c\20wchar_t\20const*\29\20const 6536:std::__2::collate::do_compare\28wchar_t\20const*\2c\20wchar_t\20const*\2c\20wchar_t\20const*\2c\20wchar_t\20const*\29\20const 6537:std::__2::collate::do_transform\28char\20const*\2c\20char\20const*\29\20const 6538:std::__2::collate::do_hash\28char\20const*\2c\20char\20const*\29\20const 6539:std::__2::collate::do_compare\28char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\29\20const 6540:std::__2::codecvt::~codecvt\28\29.1 6541:std::__2::codecvt::do_unshift\28__mbstate_t&\2c\20char*\2c\20char*\2c\20char*&\29\20const 6542:std::__2::codecvt::do_out\28__mbstate_t&\2c\20wchar_t\20const*\2c\20wchar_t\20const*\2c\20wchar_t\20const*&\2c\20char*\2c\20char*\2c\20char*&\29\20const 6543:std::__2::codecvt::do_max_length\28\29\20const 6544:std::__2::codecvt::do_length\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20unsigned\20long\29\20const 6545:std::__2::codecvt::do_in\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*&\2c\20wchar_t*\2c\20wchar_t*\2c\20wchar_t*&\29\20const 6546:std::__2::codecvt::do_encoding\28\29\20const 6547:std::__2::codecvt::do_length\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20unsigned\20long\29\20const 6548:std::__2::basic_stringbuf\2c\20std::__2::allocator>::~basic_stringbuf\28\29.1 6549:std::__2::basic_stringbuf\2c\20std::__2::allocator>::underflow\28\29 6550:std::__2::basic_stringbuf\2c\20std::__2::allocator>::seekpos\28std::__2::fpos<__mbstate_t>\2c\20unsigned\20int\29 6551:std::__2::basic_stringbuf\2c\20std::__2::allocator>::seekoff\28long\20long\2c\20std::__2::ios_base::seekdir\2c\20unsigned\20int\29 6552:std::__2::basic_stringbuf\2c\20std::__2::allocator>::pbackfail\28int\29 6553:std::__2::basic_stringbuf\2c\20std::__2::allocator>::overflow\28int\29 6554:std::__2::basic_streambuf>::~basic_streambuf\28\29.1 6555:std::__2::basic_streambuf>::xsputn\28char\20const*\2c\20long\29 6556:std::__2::basic_streambuf>::xsgetn\28char*\2c\20long\29 6557:std::__2::basic_streambuf>::uflow\28\29 6558:std::__2::basic_streambuf>::setbuf\28char*\2c\20long\29 6559:std::__2::basic_streambuf>::seekpos\28std::__2::fpos<__mbstate_t>\2c\20unsigned\20int\29 6560:std::__2::basic_streambuf>::seekoff\28long\20long\2c\20std::__2::ios_base::seekdir\2c\20unsigned\20int\29 6561:std::__2::bad_function_call::what\28\29\20const 6562:std::__2::__time_get_c_storage::__x\28\29\20const 6563:std::__2::__time_get_c_storage::__weeks\28\29\20const 6564:std::__2::__time_get_c_storage::__r\28\29\20const 6565:std::__2::__time_get_c_storage::__months\28\29\20const 6566:std::__2::__time_get_c_storage::__c\28\29\20const 6567:std::__2::__time_get_c_storage::__am_pm\28\29\20const 6568:std::__2::__time_get_c_storage::__X\28\29\20const 6569:std::__2::__time_get_c_storage::__x\28\29\20const 6570:std::__2::__time_get_c_storage::__weeks\28\29\20const 6571:std::__2::__time_get_c_storage::__r\28\29\20const 6572:std::__2::__time_get_c_storage::__months\28\29\20const 6573:std::__2::__time_get_c_storage::__c\28\29\20const 6574:std::__2::__time_get_c_storage::__am_pm\28\29\20const 6575:std::__2::__time_get_c_storage::__X\28\29\20const 6576:std::__2::__shared_ptr_pointer<_IO_FILE*\2c\20void\20\28*\29\28_IO_FILE*\29\2c\20std::__2::allocator<_IO_FILE>>::__on_zero_shared\28\29 6577:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 6578:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 6579:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 6580:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 6581:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 6582:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 6583:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 6584:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 6585:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 6586:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 6587:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 6588:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 6589:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 6590:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 6591:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 6592:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 6593:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 6594:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 6595:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 6596:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 6597:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 6598:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 6599:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 6600:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 6601:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 6602:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 6603:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::operator\28\29\28skia::textlayout::Cluster\20const*&&\2c\20unsigned\20long&&\2c\20bool&&\29 6604:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::__clone\28std::__2::__function::__base*\29\20const 6605:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::__clone\28\29\20const 6606:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::operator\28\29\28skia::textlayout::Cluster\20const*&&\2c\20unsigned\20long&&\2c\20bool&&\29 6607:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::__clone\28std::__2::__function::__base*\29\20const 6608:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::__clone\28\29\20const 6609:std::__2::__function::__func\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0\2c\20std::__2::allocator\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 6610:std::__2::__function::__func\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0\2c\20std::__2::allocator\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 6611:std::__2::__function::__func\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0\2c\20std::__2::allocator\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 6612:std::__2::__function::__func\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 6613:std::__2::__function::__func\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 6614:std::__2::__function::__func\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 6615:std::__2::__function::__func>&\29::$_0\2c\20std::__2::allocator>&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 6616:std::__2::__function::__func>&\29::$_0\2c\20std::__2::allocator>&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 6617:std::__2::__function::__func>&\29::$_0\2c\20std::__2::allocator>&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 6618:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 6619:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 6620:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 6621:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 6622:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 6623:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 6624:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 6625:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 6626:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 6627:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 6628:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 6629:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 6630:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 6631:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 6632:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 6633:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 6634:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 6635:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 6636:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 6637:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 6638:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 6639:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 6640:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 6641:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 6642:std::__2::__function::__func\20const&\29::$_0\2c\20std::__2::allocator\20const&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 6643:std::__2::__function::__func\20const&\29::$_0\2c\20std::__2::allocator\20const&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 6644:std::__2::__function::__func\20const&\29::$_0\2c\20std::__2::allocator\20const&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 6645:std::__2::__function::__func\20const&\29::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\20const&\29::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 6646:std::__2::__function::__func\20const&\29::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\20const&\29::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 6647:std::__2::__function::__func\20const&\29::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\20const&\29::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 6648:std::__2::__function::__func\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkPoint\2c\20SkPoint\2c\20skia::textlayout::InternalLineMetrics\2c\20bool\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::SkRange&&\2c\20skia::textlayout::SkRange&&\2c\20skia::textlayout::SkRange&&\2c\20skia::textlayout::SkRange&&\2c\20float&&\2c\20unsigned\20long&&\2c\20unsigned\20long&&\2c\20SkPoint&&\2c\20SkPoint&&\2c\20skia::textlayout::InternalLineMetrics&&\2c\20bool&&\29 6649:std::__2::__function::__func\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkPoint\2c\20SkPoint\2c\20skia::textlayout::InternalLineMetrics\2c\20bool\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkPoint\2c\20SkPoint\2c\20skia::textlayout::InternalLineMetrics\2c\20bool\29>*\29\20const 6650:std::__2::__function::__func\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkPoint\2c\20SkPoint\2c\20skia::textlayout::InternalLineMetrics\2c\20bool\29>::__clone\28\29\20const 6651:std::__2::__function::__func\2c\20void\20\28skia::textlayout::Cluster*\29>::operator\28\29\28skia::textlayout::Cluster*&&\29 6652:std::__2::__function::__func\2c\20void\20\28skia::textlayout::Cluster*\29>::__clone\28std::__2::__function::__base*\29\20const 6653:std::__2::__function::__func\2c\20void\20\28skia::textlayout::Cluster*\29>::__clone\28\29\20const 6654:std::__2::__function::__func\2c\20void\20\28skia::textlayout::ParagraphImpl*\2c\20char\20const*\2c\20bool\29>::__clone\28std::__2::__function::__base*\29\20const 6655:std::__2::__function::__func\2c\20void\20\28skia::textlayout::ParagraphImpl*\2c\20char\20const*\2c\20bool\29>::__clone\28\29\20const 6656:std::__2::__function::__func\2c\20float\20\28skia::textlayout::SkRange\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20SkSpan&&\2c\20float&\2c\20unsigned\20long&&\2c\20unsigned\20char&&\29 6657:std::__2::__function::__func\2c\20float\20\28skia::textlayout::SkRange\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29>::__clone\28std::__2::__function::__base\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29>*\29\20const 6658:std::__2::__function::__func\2c\20float\20\28skia::textlayout::SkRange\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29>::__clone\28\29\20const 6659:std::__2::__function::__func\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29\2c\20std::__2::allocator\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29>\2c\20void\20\28skia::textlayout::Block\2c\20skia_private::TArray\29>::operator\28\29\28skia::textlayout::Block&&\2c\20skia_private::TArray&&\29 6660:std::__2::__function::__func\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29\2c\20std::__2::allocator\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29>\2c\20void\20\28skia::textlayout::Block\2c\20skia_private::TArray\29>::__clone\28std::__2::__function::__base\29>*\29\20const 6661:std::__2::__function::__func\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29\2c\20std::__2::allocator\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29>\2c\20void\20\28skia::textlayout::Block\2c\20skia_private::TArray\29>::__clone\28\29\20const 6662:std::__2::__function::__func\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29::operator\28\29\28skia::textlayout::Block\2c\20skia_private::TArray\29\20const::'lambda'\28sk_sp\29\2c\20std::__2::allocator\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29::operator\28\29\28skia::textlayout::Block\2c\20skia_private::TArray\29\20const::'lambda'\28sk_sp\29>\2c\20skia::textlayout::OneLineShaper::Resolved\20\28sk_sp\29>::operator\28\29\28sk_sp&&\29 6663:std::__2::__function::__func\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29::operator\28\29\28skia::textlayout::Block\2c\20skia_private::TArray\29\20const::'lambda'\28sk_sp\29\2c\20std::__2::allocator\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29::operator\28\29\28skia::textlayout::Block\2c\20skia_private::TArray\29\20const::'lambda'\28sk_sp\29>\2c\20skia::textlayout::OneLineShaper::Resolved\20\28sk_sp\29>::__clone\28std::__2::__function::__base\29>*\29\20const 6664:std::__2::__function::__func\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29::operator\28\29\28skia::textlayout::Block\2c\20skia_private::TArray\29\20const::'lambda'\28sk_sp\29\2c\20std::__2::allocator\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29::operator\28\29\28skia::textlayout::Block\2c\20skia_private::TArray\29\20const::'lambda'\28sk_sp\29>\2c\20skia::textlayout::OneLineShaper::Resolved\20\28sk_sp\29>::__clone\28\29\20const 6665:std::__2::__function::__func\2c\20void\20\28skia::textlayout::SkRange\29>::operator\28\29\28skia::textlayout::SkRange&&\29 6666:std::__2::__function::__func\2c\20void\20\28skia::textlayout::SkRange\29>::__clone\28std::__2::__function::__base\29>*\29\20const 6667:std::__2::__function::__func\2c\20void\20\28skia::textlayout::SkRange\29>::__clone\28\29\20const 6668:std::__2::__function::__func\2c\20void\20\28sktext::gpu::AtlasSubRun\20const*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20sktext::gpu::RendererData\29>::operator\28\29\28sktext::gpu::AtlasSubRun\20const*&&\2c\20SkPoint&&\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20sktext::gpu::RendererData&&\29 6669:std::__2::__function::__func\2c\20void\20\28sktext::gpu::AtlasSubRun\20const*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20sktext::gpu::RendererData\29>::__clone\28std::__2::__function::__base\2c\20sktext::gpu::RendererData\29>*\29\20const 6670:std::__2::__function::__func\2c\20void\20\28sktext::gpu::AtlasSubRun\20const*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20sktext::gpu::RendererData\29>::__clone\28\29\20const 6671:std::__2::__function::__func\2c\20void\20\28void*\2c\20void\20const*\29>::~__func\28\29.1 6672:std::__2::__function::__func\2c\20void\20\28void*\2c\20void\20const*\29>::~__func\28\29 6673:std::__2::__function::__func\2c\20void\20\28void*\2c\20void\20const*\29>::operator\28\29\28void*&&\2c\20void\20const*&&\29 6674:std::__2::__function::__func\2c\20void\20\28void*\2c\20void\20const*\29>::destroy_deallocate\28\29 6675:std::__2::__function::__func\2c\20void\20\28void*\2c\20void\20const*\29>::destroy\28\29 6676:std::__2::__function::__func\2c\20void\20\28void*\2c\20void\20const*\29>::__clone\28std::__2::__function::__base*\29\20const 6677:std::__2::__function::__func\2c\20void\20\28void*\2c\20void\20const*\29>::__clone\28\29\20const 6678:std::__2::__function::__func\2c\20void\20\28\29>::operator\28\29\28\29 6679:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 6680:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28\29\20const 6681:std::__2::__function::__func\2c\20void\20\28\29>::operator\28\29\28\29 6682:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 6683:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28\29\20const 6684:std::__2::__function::__func\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::operator\28\29\28GrSurfaceProxy*&&\2c\20skgpu::Mipmapped&&\29 6685:std::__2::__function::__func\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28std::__2::__function::__base*\29\20const 6686:std::__2::__function::__func\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28\29\20const 6687:std::__2::__function::__func>\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0\2c\20std::__2::allocator>\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::operator\28\29\28GrSurfaceProxy*&&\2c\20skgpu::Mipmapped&&\29 6688:std::__2::__function::__func>\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0\2c\20std::__2::allocator>\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28std::__2::__function::__base*\29\20const 6689:std::__2::__function::__func>\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0\2c\20std::__2::allocator>\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28\29\20const 6690:std::__2::__function::__func>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0\2c\20std::__2::allocator>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::operator\28\29\28GrSurfaceProxy*&&\2c\20skgpu::Mipmapped&&\29 6691:std::__2::__function::__func>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0\2c\20std::__2::allocator>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28std::__2::__function::__base*\29\20const 6692:std::__2::__function::__func>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0\2c\20std::__2::allocator>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28\29\20const 6693:std::__2::__function::__func\2c\20void\20\28sktext::gpu::AtlasSubRun\20const*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20sktext::gpu::RendererData\29>::operator\28\29\28sktext::gpu::AtlasSubRun\20const*&&\2c\20SkPoint&&\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20sktext::gpu::RendererData&&\29 6694:std::__2::__function::__func\2c\20void\20\28sktext::gpu::AtlasSubRun\20const*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20sktext::gpu::RendererData\29>::__clone\28std::__2::__function::__base\2c\20sktext::gpu::RendererData\29>*\29\20const 6695:std::__2::__function::__func\2c\20void\20\28sktext::gpu::AtlasSubRun\20const*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20sktext::gpu::RendererData\29>::__clone\28\29\20const 6696:std::__2::__function::__func\2c\20std::__2::tuple\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>::operator\28\29\28sktext::gpu::GlyphVector*&&\2c\20int&&\2c\20int&&\2c\20skgpu::MaskFormat&&\2c\20int&&\29 6697:std::__2::__function::__func\2c\20std::__2::tuple\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>::__clone\28std::__2::__function::__base\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>*\29\20const 6698:std::__2::__function::__func\2c\20std::__2::tuple\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>::__clone\28\29\20const 6699:std::__2::__function::__func>\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\29::$_0\2c\20std::__2::allocator>\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\29::$_0>\2c\20bool\20\28GrSurfaceProxy\20const*\29>::operator\28\29\28GrSurfaceProxy\20const*&&\29 6700:std::__2::__function::__func>\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\29::$_0\2c\20std::__2::allocator>\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\29::$_0>\2c\20bool\20\28GrSurfaceProxy\20const*\29>::__clone\28std::__2::__function::__base*\29\20const 6701:std::__2::__function::__func>\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\29::$_0\2c\20std::__2::allocator>\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\29::$_0>\2c\20bool\20\28GrSurfaceProxy\20const*\29>::__clone\28\29\20const 6702:std::__2::__function::__func\2c\20void\20\28int\2c\20char\20const*\29>::operator\28\29\28int&&\2c\20char\20const*&&\29 6703:std::__2::__function::__func\2c\20void\20\28int\2c\20char\20const*\29>::__clone\28std::__2::__function::__base*\29\20const 6704:std::__2::__function::__func\2c\20void\20\28int\2c\20char\20const*\29>::__clone\28\29\20const 6705:std::__2::__function::__func\28GrOp\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29\2c\20std::__2::allocator\28GrOp\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28std::__2::__function::__base*\29\20const 6706:std::__2::__function::__func\28GrOp\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29\2c\20std::__2::allocator\28GrOp\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28\29\20const 6707:std::__2::__function::__func\28GrFragmentProcessor\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29\2c\20std::__2::allocator\28GrFragmentProcessor\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28std::__2::__function::__base*\29\20const 6708:std::__2::__function::__func\28GrFragmentProcessor\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29\2c\20std::__2::allocator\28GrFragmentProcessor\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28\29\20const 6709:std::__2::__function::__func<\28anonymous\20namespace\29::render_sw_mask\28GrRecordingContext*\2c\20SkIRect\20const&\2c\20skgpu::ganesh::ClipStack::Element\20const**\2c\20int\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::render_sw_mask\28GrRecordingContext*\2c\20SkIRect\20const&\2c\20skgpu::ganesh::ClipStack::Element\20const**\2c\20int\29::$_0>\2c\20void\20\28\29>::operator\28\29\28\29 6710:std::__2::__function::__func<\28anonymous\20namespace\29::render_sw_mask\28GrRecordingContext*\2c\20SkIRect\20const&\2c\20skgpu::ganesh::ClipStack::Element\20const**\2c\20int\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::render_sw_mask\28GrRecordingContext*\2c\20SkIRect\20const&\2c\20skgpu::ganesh::ClipStack::Element\20const**\2c\20int\29::$_0>\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 6711:std::__2::__function::__func<\28anonymous\20namespace\29::render_sw_mask\28GrRecordingContext*\2c\20SkIRect\20const&\2c\20skgpu::ganesh::ClipStack::Element\20const**\2c\20int\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::render_sw_mask\28GrRecordingContext*\2c\20SkIRect\20const&\2c\20skgpu::ganesh::ClipStack::Element\20const**\2c\20int\29::$_0>\2c\20void\20\28\29>::__clone\28\29\20const 6712:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_1\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_1>\2c\20void\20\28\29>::operator\28\29\28\29 6713:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_1\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_1>\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 6714:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_1\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_1>\2c\20void\20\28\29>::__clone\28\29\20const 6715:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0>\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 6716:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0>\2c\20void\20\28\29>::__clone\28\29\20const 6717:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0>\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 6718:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0>\2c\20void\20\28\29>::__clone\28\29\20const 6719:std::__2::__function::__func<\28anonymous\20namespace\29::MeshOp::visitProxies\28std::__2::function\20const&\29\20const::'lambda'\28GrTextureEffect\20const&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshOp::visitProxies\28std::__2::function\20const&\29\20const::'lambda'\28GrTextureEffect\20const&\29>\2c\20void\20\28GrTextureEffect\20const&\29>::operator\28\29\28GrTextureEffect\20const&\29 6720:std::__2::__function::__func<\28anonymous\20namespace\29::MeshOp::visitProxies\28std::__2::function\20const&\29\20const::'lambda'\28GrTextureEffect\20const&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshOp::visitProxies\28std::__2::function\20const&\29\20const::'lambda'\28GrTextureEffect\20const&\29>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 6721:std::__2::__function::__func<\28anonymous\20namespace\29::MeshOp::visitProxies\28std::__2::function\20const&\29\20const::'lambda'\28GrTextureEffect\20const&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshOp::visitProxies\28std::__2::function\20const&\29\20const::'lambda'\28GrTextureEffect\20const&\29>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28\29\20const 6722:std::__2::__function::__func<\28anonymous\20namespace\29::MeshOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29::$_0>\2c\20void\20\28GrTextureEffect\20const&\29>::operator\28\29\28GrTextureEffect\20const&\29 6723:std::__2::__function::__func<\28anonymous\20namespace\29::MeshOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29::$_0>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 6724:std::__2::__function::__func<\28anonymous\20namespace\29::MeshOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29::$_0>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28\29\20const 6725:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::MeshGP\28sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28GrTextureEffect\20const&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::MeshGP\28sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28GrTextureEffect\20const&\29>\2c\20void\20\28GrTextureEffect\20const&\29>::operator\28\29\28GrTextureEffect\20const&\29 6726:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::MeshGP\28sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28GrTextureEffect\20const&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::MeshGP\28sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28GrTextureEffect\20const&\29>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 6727:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::MeshGP\28sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28GrTextureEffect\20const&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::MeshGP\28sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28GrTextureEffect\20const&\29>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28\29\20const 6728:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::operator\28\29\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29 6729:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28std::__2::__function::__base*\29\20const 6730:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28\29\20const 6731:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::operator\28\29\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29 6732:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28std::__2::__function::__base*\29\20const 6733:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28\29\20const 6734:std::__2::__function::__func>*\29::'lambda'\28int\2c\20int\29\2c\20std::__2::allocator>*\29::'lambda'\28int\2c\20int\29>\2c\20void\20\28int\2c\20int\29>::operator\28\29\28int&&\2c\20int&&\29 6735:std::__2::__function::__func>*\29::'lambda'\28int\2c\20int\29\2c\20std::__2::allocator>*\29::'lambda'\28int\2c\20int\29>\2c\20void\20\28int\2c\20int\29>::__clone\28std::__2::__function::__base*\29\20const 6736:std::__2::__function::__func>*\29::'lambda'\28int\2c\20int\29\2c\20std::__2::allocator>*\29::'lambda'\28int\2c\20int\29>\2c\20void\20\28int\2c\20int\29>::__clone\28\29\20const 6737:std::__2::__function::__func*\29::'lambda0'\28int\2c\20int\29\2c\20std::__2::allocator*\29::'lambda0'\28int\2c\20int\29>\2c\20void\20\28int\2c\20int\29>::operator\28\29\28int&&\2c\20int&&\29 6738:std::__2::__function::__func*\29::'lambda0'\28int\2c\20int\29\2c\20std::__2::allocator*\29::'lambda0'\28int\2c\20int\29>\2c\20void\20\28int\2c\20int\29>::__clone\28std::__2::__function::__base*\29\20const 6739:std::__2::__function::__func*\29::'lambda0'\28int\2c\20int\29\2c\20std::__2::allocator*\29::'lambda0'\28int\2c\20int\29>\2c\20void\20\28int\2c\20int\29>::__clone\28\29\20const 6740:std::__2::__function::__func*\29::'lambda'\28int\2c\20int\29\2c\20std::__2::allocator*\29::'lambda'\28int\2c\20int\29>\2c\20void\20\28int\2c\20int\29>::operator\28\29\28int&&\2c\20int&&\29 6741:std::__2::__function::__func*\29::'lambda'\28int\2c\20int\29\2c\20std::__2::allocator*\29::'lambda'\28int\2c\20int\29>\2c\20void\20\28int\2c\20int\29>::__clone\28std::__2::__function::__base*\29\20const 6742:std::__2::__function::__func*\29::'lambda'\28int\2c\20int\29\2c\20std::__2::allocator*\29::'lambda'\28int\2c\20int\29>\2c\20void\20\28int\2c\20int\29>::__clone\28\29\20const 6743:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28\29>::~__func\28\29.1 6744:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28\29>::~__func\28\29 6745:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28\29>::operator\28\29\28\29 6746:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28\29>::destroy_deallocate\28\29 6747:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28\29>::destroy\28\29 6748:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 6749:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28\29>::__clone\28\29\20const 6750:std::__2::__function::__func\2c\20void\20\28int\2c\20char\20const*\29>::operator\28\29\28int&&\2c\20char\20const*&&\29 6751:std::__2::__function::__func\2c\20void\20\28int\2c\20char\20const*\29>::__clone\28std::__2::__function::__base*\29\20const 6752:std::__2::__function::__func\2c\20void\20\28int\2c\20char\20const*\29>::__clone\28\29\20const 6753:std::__2::__function::__func\2c\20void\20\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29>::operator\28\29\28unsigned\20long&&\2c\20unsigned\20long&&\2c\20unsigned\20long&&\2c\20unsigned\20long&&\29 6754:std::__2::__function::__func\2c\20void\20\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29>::__clone\28std::__2::__function::__base*\29\20const 6755:std::__2::__function::__func\2c\20void\20\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29>::__clone\28\29\20const 6756:std::__2::__function::__func\2c\20void\20\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29>::__clone\28std::__2::__function::__base*\29\20const 6757:std::__2::__function::__func\2c\20void\20\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29>::__clone\28\29\20const 6758:std::__2::__function::__func\2c\20void\20\28SkVertices\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\2c\20float\2c\20float\2c\20bool\29>::operator\28\29\28SkVertices\20const*&&\2c\20SkBlendMode&&\2c\20SkPaint\20const&\2c\20float&&\2c\20float&&\2c\20bool&&\29 6759:std::__2::__function::__func\2c\20void\20\28SkVertices\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\2c\20float\2c\20float\2c\20bool\29>::__clone\28std::__2::__function::__base*\29\20const 6760:std::__2::__function::__func\2c\20void\20\28SkVertices\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\2c\20float\2c\20float\2c\20bool\29>::__clone\28\29\20const 6761:std::__2::__function::__func\2c\20void\20\28SkIRect\20const&\29>::operator\28\29\28SkIRect\20const&\29 6762:std::__2::__function::__func\2c\20void\20\28SkIRect\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 6763:std::__2::__function::__func\2c\20void\20\28SkIRect\20const&\29>::__clone\28\29\20const 6764:std::__2::__function::__func\2c\20SkCodec::Result\20\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int\29>::operator\28\29\28SkImageInfo\20const&\2c\20void*&&\2c\20unsigned\20long&&\2c\20SkCodec::Options\20const&\2c\20int&&\29 6765:std::__2::__function::__func\2c\20SkCodec::Result\20\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int\29>::__clone\28std::__2::__function::__base*\29\20const 6766:std::__2::__function::__func\2c\20SkCodec::Result\20\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int\29>::__clone\28\29\20const 6767:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::~__func\28\29.1 6768:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::~__func\28\29 6769:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::operator\28\29\28GrResourceProvider*&&\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29 6770:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::destroy_deallocate\28\29 6771:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::destroy\28\29 6772:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 6773:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28\29\20const 6774:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::~__func\28\29.1 6775:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::~__func\28\29 6776:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::operator\28\29\28GrResourceProvider*&&\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29 6777:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::destroy_deallocate\28\29 6778:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::destroy\28\29 6779:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 6780:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28\29\20const 6781:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::~__func\28\29.1 6782:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::~__func\28\29 6783:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::operator\28\29\28GrResourceProvider*&&\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29 6784:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::destroy_deallocate\28\29 6785:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::destroy\28\29 6786:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 6787:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28\29\20const 6788:std::__2::__function::__func&\29>&\2c\20bool\29::$_0\2c\20std::__2::allocator&\29>&\2c\20bool\29::$_0>\2c\20bool\20\28GrTextureProxy*\2c\20SkIRect\2c\20GrColorType\2c\20void\20const*\2c\20unsigned\20long\29>::operator\28\29\28GrTextureProxy*&&\2c\20SkIRect&&\2c\20GrColorType&&\2c\20void\20const*&&\2c\20unsigned\20long&&\29 6789:std::__2::__function::__func&\29>&\2c\20bool\29::$_0\2c\20std::__2::allocator&\29>&\2c\20bool\29::$_0>\2c\20bool\20\28GrTextureProxy*\2c\20SkIRect\2c\20GrColorType\2c\20void\20const*\2c\20unsigned\20long\29>::__clone\28std::__2::__function::__base*\29\20const 6790:std::__2::__function::__func&\29>&\2c\20bool\29::$_0\2c\20std::__2::allocator&\29>&\2c\20bool\29::$_0>\2c\20bool\20\28GrTextureProxy*\2c\20SkIRect\2c\20GrColorType\2c\20void\20const*\2c\20unsigned\20long\29>::__clone\28\29\20const 6791:std::__2::__function::__func*\29::$_0\2c\20std::__2::allocator*\29::$_0>\2c\20void\20\28GrBackendTexture\29>::operator\28\29\28GrBackendTexture&&\29 6792:std::__2::__function::__func*\29::$_0\2c\20std::__2::allocator*\29::$_0>\2c\20void\20\28GrBackendTexture\29>::__clone\28std::__2::__function::__base*\29\20const 6793:std::__2::__function::__func*\29::$_0\2c\20std::__2::allocator*\29::$_0>\2c\20void\20\28GrBackendTexture\29>::__clone\28\29\20const 6794:std::__2::__function::__func\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::operator\28\29\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29 6795:std::__2::__function::__func\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28std::__2::__function::__base*\29\20const 6796:std::__2::__function::__func\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28\29\20const 6797:std::__2::__function::__func\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::operator\28\29\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29 6798:std::__2::__function::__func\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28std::__2::__function::__base*\29\20const 6799:std::__2::__function::__func\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28\29\20const 6800:std::__2::__function::__func\2c\20void\20\28GrTextureEffect\20const&\29>::operator\28\29\28GrTextureEffect\20const&\29 6801:std::__2::__function::__func\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 6802:std::__2::__function::__func\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28\29\20const 6803:std::__2::__function::__func\2c\20void\20\28\29>::operator\28\29\28\29 6804:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 6805:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28\29\20const 6806:std::__2::__function::__func\20const&\29\20const::$_0\2c\20std::__2::allocator\20const&\29\20const::$_0>\2c\20void\20\28GrTextureEffect\20const&\29>::operator\28\29\28GrTextureEffect\20const&\29 6807:std::__2::__function::__func\20const&\29\20const::$_0\2c\20std::__2::allocator\20const&\29\20const::$_0>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 6808:std::__2::__function::__func\20const&\29\20const::$_0\2c\20std::__2::allocator\20const&\29\20const::$_0>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28\29\20const 6809:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::operator\28\29\28GrResourceProvider*&&\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29 6810:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 6811:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28\29\20const 6812:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::~__func\28\29.1 6813:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::~__func\28\29 6814:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::__clone\28std::__2::__function::__base&\29>*\29\20const 6815:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::__clone\28\29\20const 6816:std::__2::__function::__func\2c\20void\20\28std::__2::function&\29>::~__func\28\29.1 6817:std::__2::__function::__func\2c\20void\20\28std::__2::function&\29>::~__func\28\29 6818:std::__2::__function::__func\2c\20void\20\28std::__2::function&\29>::__clone\28std::__2::__function::__base&\29>*\29\20const 6819:std::__2::__function::__func\2c\20void\20\28std::__2::function&\29>::__clone\28\29\20const 6820:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::operator\28\29\28std::__2::function&\29 6821:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::__clone\28std::__2::__function::__base&\29>*\29\20const 6822:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::__clone\28\29\20const 6823:std::__2::__function::__func\2c\20void\20\28int\2c\20skia::textlayout::Paragraph::VisitorInfo\20const*\29>::operator\28\29\28int&&\2c\20skia::textlayout::Paragraph::VisitorInfo\20const*&&\29 6824:std::__2::__function::__func\2c\20void\20\28int\2c\20skia::textlayout::Paragraph::VisitorInfo\20const*\29>::__clone\28std::__2::__function::__base*\29\20const 6825:std::__2::__function::__func\2c\20void\20\28int\2c\20skia::textlayout::Paragraph::VisitorInfo\20const*\29>::__clone\28\29\20const 6826:start_pass_upsample 6827:start_pass_phuff_decoder 6828:start_pass_merged_upsample 6829:start_pass_main 6830:start_pass_huff_decoder 6831:start_pass_dpost 6832:start_pass_2_quant 6833:start_pass_1_quant 6834:start_pass 6835:start_output_pass 6836:start_input_pass.1 6837:stackSave 6838:stackRestore 6839:srgb_to_hwb\28SkRGBA4f<\28SkAlphaType\292>\2c\20bool*\29 6840:srgb_to_hsl\28SkRGBA4f<\28SkAlphaType\292>\2c\20bool*\29 6841:srcover_p\28unsigned\20char\2c\20unsigned\20char\29 6842:sn_write 6843:sktext::gpu::post_purge_blob_message\28unsigned\20int\2c\20unsigned\20int\29 6844:sktext::gpu::VertexFiller::isLCD\28\29\20const 6845:sktext::gpu::TextBlob::~TextBlob\28\29.1 6846:sktext::gpu::TextBlob::~TextBlob\28\29 6847:sktext::gpu::SubRun::~SubRun\28\29 6848:sktext::gpu::SlugImpl::~SlugImpl\28\29.1 6849:sktext::gpu::SlugImpl::~SlugImpl\28\29 6850:sktext::gpu::SlugImpl::sourceBounds\28\29\20const 6851:sktext::gpu::SlugImpl::sourceBoundsWithOrigin\28\29\20const 6852:sktext::gpu::SlugImpl::doFlatten\28SkWriteBuffer&\29\20const 6853:sktext::gpu::SDFMaskFilterImpl::getTypeName\28\29\20const 6854:sktext::gpu::SDFMaskFilterImpl::filterMask\28SkMaskBuilder*\2c\20SkMask\20const&\2c\20SkMatrix\20const&\2c\20SkIPoint*\29\20const 6855:sktext::gpu::SDFMaskFilterImpl::computeFastBounds\28SkRect\20const&\2c\20SkRect*\29\20const 6856:skip_variable 6857:skif::\28anonymous\20namespace\29::RasterBackend::~RasterBackend\28\29 6858:skif::\28anonymous\20namespace\29::RasterBackend::makeImage\28SkIRect\20const&\2c\20sk_sp\29\20const 6859:skif::\28anonymous\20namespace\29::RasterBackend::makeDevice\28SkISize\2c\20sk_sp\2c\20SkSurfaceProps\20const*\29\20const 6860:skif::\28anonymous\20namespace\29::RasterBackend::getCachedBitmap\28SkBitmap\20const&\29\20const 6861:skif::\28anonymous\20namespace\29::GaneshBackend::~GaneshBackend\28\29.1 6862:skif::\28anonymous\20namespace\29::GaneshBackend::~GaneshBackend\28\29 6863:skif::\28anonymous\20namespace\29::GaneshBackend::makeImage\28SkIRect\20const&\2c\20sk_sp\29\20const 6864:skif::\28anonymous\20namespace\29::GaneshBackend::makeDevice\28SkISize\2c\20sk_sp\2c\20SkSurfaceProps\20const*\29\20const 6865:skif::\28anonymous\20namespace\29::GaneshBackend::getCachedBitmap\28SkBitmap\20const&\29\20const 6866:skif::\28anonymous\20namespace\29::GaneshBackend::getBlurEngine\28\29\20const 6867:skif::\28anonymous\20namespace\29::GaneshBackend::findAlgorithm\28SkSize\2c\20SkColorType\29\20const 6868:skia_png_zalloc 6869:skia_png_write_rows 6870:skia_png_write_info 6871:skia_png_write_end 6872:skia_png_user_version_check 6873:skia_png_set_text 6874:skia_png_set_sRGB 6875:skia_png_set_keep_unknown_chunks 6876:skia_png_set_iCCP 6877:skia_png_set_gray_to_rgb 6878:skia_png_set_filter 6879:skia_png_set_filler 6880:skia_png_read_update_info 6881:skia_png_read_info 6882:skia_png_read_image 6883:skia_png_read_end 6884:skia_png_push_fill_buffer 6885:skia_png_process_data 6886:skia_png_default_write_data 6887:skia_png_default_read_data 6888:skia_png_default_flush 6889:skia_png_create_read_struct 6890:skia::textlayout::TypefaceFontStyleSet::~TypefaceFontStyleSet\28\29.1 6891:skia::textlayout::TypefaceFontStyleSet::~TypefaceFontStyleSet\28\29 6892:skia::textlayout::TypefaceFontStyleSet::getStyle\28int\2c\20SkFontStyle*\2c\20SkString*\29 6893:skia::textlayout::TypefaceFontProvider::~TypefaceFontProvider\28\29.1 6894:skia::textlayout::TypefaceFontProvider::~TypefaceFontProvider\28\29 6895:skia::textlayout::TypefaceFontProvider::onMatchFamily\28char\20const*\29\20const 6896:skia::textlayout::TypefaceFontProvider::onMatchFamilyStyle\28char\20const*\2c\20SkFontStyle\20const&\29\20const 6897:skia::textlayout::TypefaceFontProvider::onGetFamilyName\28int\2c\20SkString*\29\20const 6898:skia::textlayout::TextLine::shapeEllipsis\28SkString\20const&\2c\20skia::textlayout::Cluster\20const*\29::ShapeHandler::~ShapeHandler\28\29.1 6899:skia::textlayout::TextLine::shapeEllipsis\28SkString\20const&\2c\20skia::textlayout::Cluster\20const*\29::ShapeHandler::~ShapeHandler\28\29 6900:skia::textlayout::TextLine::shapeEllipsis\28SkString\20const&\2c\20skia::textlayout::Cluster\20const*\29::ShapeHandler::runBuffer\28SkShaper::RunHandler::RunInfo\20const&\29 6901:skia::textlayout::TextLine::shapeEllipsis\28SkString\20const&\2c\20skia::textlayout::Cluster\20const*\29::ShapeHandler::commitRunBuffer\28SkShaper::RunHandler::RunInfo\20const&\29 6902:skia::textlayout::PositionWithAffinity*\20emscripten::internal::raw_constructor\28\29 6903:skia::textlayout::ParagraphImpl::~ParagraphImpl\28\29.1 6904:skia::textlayout::ParagraphImpl::visit\28std::__2::function\20const&\29 6905:skia::textlayout::ParagraphImpl::updateTextAlign\28skia::textlayout::TextAlign\29 6906:skia::textlayout::ParagraphImpl::updateForegroundPaint\28unsigned\20long\2c\20unsigned\20long\2c\20SkPaint\29 6907:skia::textlayout::ParagraphImpl::updateFontSize\28unsigned\20long\2c\20unsigned\20long\2c\20float\29 6908:skia::textlayout::ParagraphImpl::updateBackgroundPaint\28unsigned\20long\2c\20unsigned\20long\2c\20SkPaint\29 6909:skia::textlayout::ParagraphImpl::unresolvedGlyphs\28\29 6910:skia::textlayout::ParagraphImpl::unresolvedCodepoints\28\29 6911:skia::textlayout::ParagraphImpl::paint\28skia::textlayout::ParagraphPainter*\2c\20float\2c\20float\29 6912:skia::textlayout::ParagraphImpl::paint\28SkCanvas*\2c\20float\2c\20float\29 6913:skia::textlayout::ParagraphImpl::markDirty\28\29 6914:skia::textlayout::ParagraphImpl::lineNumber\28\29 6915:skia::textlayout::ParagraphImpl::layout\28float\29 6916:skia::textlayout::ParagraphImpl::getWordBoundary\28unsigned\20int\29 6917:skia::textlayout::ParagraphImpl::getRectsForRange\28unsigned\20int\2c\20unsigned\20int\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\29 6918:skia::textlayout::ParagraphImpl::getRectsForPlaceholders\28\29 6919:skia::textlayout::ParagraphImpl::getPath\28int\2c\20SkPath*\29::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29::operator\28\29\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\20const::'lambda'\28SkPath\20const*\2c\20SkMatrix\20const&\2c\20void*\29::__invoke\28SkPath\20const*\2c\20SkMatrix\20const&\2c\20void*\29 6920:skia::textlayout::ParagraphImpl::getPath\28int\2c\20SkPath*\29 6921:skia::textlayout::ParagraphImpl::getLineNumberAt\28unsigned\20long\29\20const 6922:skia::textlayout::ParagraphImpl::getLineNumberAtUTF16Offset\28unsigned\20long\29 6923:skia::textlayout::ParagraphImpl::getLineMetrics\28std::__2::vector>&\29 6924:skia::textlayout::ParagraphImpl::getLineMetricsAt\28int\2c\20skia::textlayout::LineMetrics*\29\20const 6925:skia::textlayout::ParagraphImpl::getGlyphPositionAtCoordinate\28float\2c\20float\29 6926:skia::textlayout::ParagraphImpl::getFonts\28\29\20const 6927:skia::textlayout::ParagraphImpl::getFontAt\28unsigned\20long\29\20const 6928:skia::textlayout::ParagraphImpl::getFontAtUTF16Offset\28unsigned\20long\29 6929:skia::textlayout::ParagraphImpl::getClosestUTF16GlyphInfoAt\28float\2c\20float\2c\20skia::textlayout::Paragraph::GlyphInfo*\29 6930:skia::textlayout::ParagraphImpl::getClosestGlyphClusterAt\28float\2c\20float\2c\20skia::textlayout::Paragraph::GlyphClusterInfo*\29 6931:skia::textlayout::ParagraphImpl::getActualTextRange\28int\2c\20bool\29\20const 6932:skia::textlayout::ParagraphImpl::extendedVisit\28std::__2::function\20const&\29 6933:skia::textlayout::ParagraphImpl::containsEmoji\28SkTextBlob*\29 6934:skia::textlayout::ParagraphImpl::containsColorFontOrBitmap\28SkTextBlob*\29::$_0::__invoke\28SkPath\20const*\2c\20SkMatrix\20const&\2c\20void*\29 6935:skia::textlayout::ParagraphImpl::containsColorFontOrBitmap\28SkTextBlob*\29 6936:skia::textlayout::ParagraphBuilderImpl::~ParagraphBuilderImpl\28\29.1 6937:skia::textlayout::ParagraphBuilderImpl::pushStyle\28skia::textlayout::TextStyle\20const&\29 6938:skia::textlayout::ParagraphBuilderImpl::pop\28\29 6939:skia::textlayout::ParagraphBuilderImpl::peekStyle\28\29 6940:skia::textlayout::ParagraphBuilderImpl::getText\28\29 6941:skia::textlayout::ParagraphBuilderImpl::getParagraphStyle\28\29\20const 6942:skia::textlayout::ParagraphBuilderImpl::addText\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 6943:skia::textlayout::ParagraphBuilderImpl::addText\28char\20const*\2c\20unsigned\20long\29 6944:skia::textlayout::ParagraphBuilderImpl::addText\28char\20const*\29 6945:skia::textlayout::ParagraphBuilderImpl::addPlaceholder\28skia::textlayout::PlaceholderStyle\20const&\29 6946:skia::textlayout::ParagraphBuilderImpl::SetUnicode\28sk_sp\29 6947:skia::textlayout::ParagraphBuilderImpl::Reset\28\29 6948:skia::textlayout::ParagraphBuilderImpl::RequiresClientICU\28\29 6949:skia::textlayout::ParagraphBuilderImpl::Build\28\29 6950:skia::textlayout::Paragraph::getMinIntrinsicWidth\28\29 6951:skia::textlayout::Paragraph::getMaxWidth\28\29 6952:skia::textlayout::Paragraph::getMaxIntrinsicWidth\28\29 6953:skia::textlayout::Paragraph::getLongestLine\28\29 6954:skia::textlayout::Paragraph::getIdeographicBaseline\28\29 6955:skia::textlayout::Paragraph::getHeight\28\29 6956:skia::textlayout::Paragraph::getAlphabeticBaseline\28\29 6957:skia::textlayout::Paragraph::didExceedMaxLines\28\29 6958:skia::textlayout::Paragraph::FontInfo::~FontInfo\28\29.1 6959:skia::textlayout::Paragraph::FontInfo::~FontInfo\28\29 6960:skia::textlayout::OneLineShaper::~OneLineShaper\28\29.1 6961:skia::textlayout::OneLineShaper::runBuffer\28SkShaper::RunHandler::RunInfo\20const&\29 6962:skia::textlayout::OneLineShaper::commitRunBuffer\28SkShaper::RunHandler::RunInfo\20const&\29 6963:skia::textlayout::LangIterator::~LangIterator\28\29.1 6964:skia::textlayout::LangIterator::~LangIterator\28\29 6965:skia::textlayout::LangIterator::endOfCurrentRun\28\29\20const 6966:skia::textlayout::LangIterator::currentLanguage\28\29\20const 6967:skia::textlayout::LangIterator::consume\28\29 6968:skia::textlayout::LangIterator::atEnd\28\29\20const 6969:skia::textlayout::FontCollection::~FontCollection\28\29.1 6970:skia::textlayout::CanvasParagraphPainter::translate\28float\2c\20float\29 6971:skia::textlayout::CanvasParagraphPainter::save\28\29 6972:skia::textlayout::CanvasParagraphPainter::restore\28\29 6973:skia::textlayout::CanvasParagraphPainter::drawTextShadow\28sk_sp\20const&\2c\20float\2c\20float\2c\20unsigned\20int\2c\20float\29 6974:skia::textlayout::CanvasParagraphPainter::drawTextBlob\28sk_sp\20const&\2c\20float\2c\20float\2c\20std::__2::variant\20const&\29 6975:skia::textlayout::CanvasParagraphPainter::drawRect\28SkRect\20const&\2c\20std::__2::variant\20const&\29 6976:skia::textlayout::CanvasParagraphPainter::drawPath\28SkPath\20const&\2c\20skia::textlayout::ParagraphPainter::DecorationStyle\20const&\29 6977:skia::textlayout::CanvasParagraphPainter::drawLine\28float\2c\20float\2c\20float\2c\20float\2c\20skia::textlayout::ParagraphPainter::DecorationStyle\20const&\29 6978:skia::textlayout::CanvasParagraphPainter::drawFilledRect\28SkRect\20const&\2c\20skia::textlayout::ParagraphPainter::DecorationStyle\20const&\29 6979:skia::textlayout::CanvasParagraphPainter::clipRect\28SkRect\20const&\29 6980:skgpu::tess::FixedCountWedges::WriteVertexBuffer\28skgpu::VertexWriter\2c\20unsigned\20long\29 6981:skgpu::tess::FixedCountWedges::WriteIndexBuffer\28skgpu::VertexWriter\2c\20unsigned\20long\29 6982:skgpu::tess::FixedCountStrokes::WriteVertexBuffer\28skgpu::VertexWriter\2c\20unsigned\20long\29 6983:skgpu::tess::FixedCountCurves::WriteVertexBuffer\28skgpu::VertexWriter\2c\20unsigned\20long\29 6984:skgpu::tess::FixedCountCurves::WriteIndexBuffer\28skgpu::VertexWriter\2c\20unsigned\20long\29 6985:skgpu::ganesh::texture_proxy_view_from_planes\28GrRecordingContext*\2c\20SkImage_Lazy\20const*\2c\20skgpu::Budgeted\29::$_0::__invoke\28void*\2c\20void*\29 6986:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::~SmallPathOp\28\29.1 6987:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::visitProxies\28std::__2::function\20const&\29\20const 6988:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::onPrepareDraws\28GrMeshDrawTarget*\29 6989:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 6990:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 6991:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::name\28\29\20const 6992:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::fixedFunctionFlags\28\29\20const 6993:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 6994:skgpu::ganesh::\28anonymous\20namespace\29::QuadEdgeEffect::name\28\29\20const 6995:skgpu::ganesh::\28anonymous\20namespace\29::QuadEdgeEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 6996:skgpu::ganesh::\28anonymous\20namespace\29::QuadEdgeEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 6997:skgpu::ganesh::\28anonymous\20namespace\29::QuadEdgeEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const 6998:skgpu::ganesh::\28anonymous\20namespace\29::QuadEdgeEffect::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 6999:skgpu::ganesh::\28anonymous\20namespace\29::HullShader::~HullShader\28\29.1 7000:skgpu::ganesh::\28anonymous\20namespace\29::HullShader::~HullShader\28\29 7001:skgpu::ganesh::\28anonymous\20namespace\29::HullShader::name\28\29\20const 7002:skgpu::ganesh::\28anonymous\20namespace\29::HullShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::emitVertexCode\28GrShaderCaps\20const&\2c\20GrPathTessellationShader\20const&\2c\20GrGLSLVertexBuilder*\2c\20GrGLSLVaryingHandler*\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 7003:skgpu::ganesh::\28anonymous\20namespace\29::HullShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 7004:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::~AAFlatteningConvexPathOp\28\29.1 7005:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::~AAFlatteningConvexPathOp\28\29 7006:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::visitProxies\28std::__2::function\20const&\29\20const 7007:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::onPrepareDraws\28GrMeshDrawTarget*\29 7008:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 7009:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 7010:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 7011:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::name\28\29\20const 7012:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::fixedFunctionFlags\28\29\20const 7013:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 7014:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::~AAConvexPathOp\28\29.1 7015:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::~AAConvexPathOp\28\29 7016:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::visitProxies\28std::__2::function\20const&\29\20const 7017:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::onPrepareDraws\28GrMeshDrawTarget*\29 7018:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 7019:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 7020:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 7021:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::name\28\29\20const 7022:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 7023:skgpu::ganesh::TriangulatingPathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 7024:skgpu::ganesh::TriangulatingPathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 7025:skgpu::ganesh::TriangulatingPathRenderer::name\28\29\20const 7026:skgpu::ganesh::TessellationPathRenderer::onStencilPath\28skgpu::ganesh::PathRenderer::StencilPathArgs\20const&\29 7027:skgpu::ganesh::TessellationPathRenderer::onGetStencilSupport\28GrStyledShape\20const&\29\20const 7028:skgpu::ganesh::TessellationPathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 7029:skgpu::ganesh::TessellationPathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 7030:skgpu::ganesh::TessellationPathRenderer::name\28\29\20const 7031:skgpu::ganesh::SurfaceDrawContext::willReplaceOpsTask\28skgpu::ganesh::OpsTask*\2c\20skgpu::ganesh::OpsTask*\29 7032:skgpu::ganesh::SurfaceDrawContext::canDiscardPreviousOpsOnFullClear\28\29\20const 7033:skgpu::ganesh::SurfaceContext::~SurfaceContext\28\29.1 7034:skgpu::ganesh::SurfaceContext::asyncRescaleAndReadPixelsYUV420\28GrDirectContext*\2c\20SkYUVColorSpace\2c\20bool\2c\20sk_sp\2c\20SkIRect\20const&\2c\20SkISize\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29::$_0::__invoke\28void*\29 7035:skgpu::ganesh::SurfaceContext::asyncReadPixels\28GrDirectContext*\2c\20SkIRect\20const&\2c\20SkColorType\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29::$_0::__invoke\28void*\29 7036:skgpu::ganesh::StrokeTessellateOp::~StrokeTessellateOp\28\29.1 7037:skgpu::ganesh::StrokeTessellateOp::~StrokeTessellateOp\28\29 7038:skgpu::ganesh::StrokeTessellateOp::visitProxies\28std::__2::function\20const&\29\20const 7039:skgpu::ganesh::StrokeTessellateOp::usesStencil\28\29\20const 7040:skgpu::ganesh::StrokeTessellateOp::onPrepare\28GrOpFlushState*\29 7041:skgpu::ganesh::StrokeTessellateOp::onPrePrepare\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 7042:skgpu::ganesh::StrokeTessellateOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 7043:skgpu::ganesh::StrokeTessellateOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 7044:skgpu::ganesh::StrokeTessellateOp::name\28\29\20const 7045:skgpu::ganesh::StrokeTessellateOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 7046:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::~NonAAStrokeRectOp\28\29.1 7047:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::~NonAAStrokeRectOp\28\29 7048:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::visitProxies\28std::__2::function\20const&\29\20const 7049:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::programInfo\28\29 7050:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::onPrepareDraws\28GrMeshDrawTarget*\29 7051:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 7052:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 7053:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::name\28\29\20const 7054:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 7055:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::~AAStrokeRectOp\28\29.1 7056:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::~AAStrokeRectOp\28\29 7057:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::visitProxies\28std::__2::function\20const&\29\20const 7058:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::programInfo\28\29 7059:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::onPrepareDraws\28GrMeshDrawTarget*\29 7060:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 7061:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 7062:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 7063:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::name\28\29\20const 7064:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 7065:skgpu::ganesh::StencilClip::~StencilClip\28\29.1 7066:skgpu::ganesh::StencilClip::~StencilClip\28\29 7067:skgpu::ganesh::StencilClip::preApply\28SkRect\20const&\2c\20GrAA\29\20const 7068:skgpu::ganesh::StencilClip::getConservativeBounds\28\29\20const 7069:skgpu::ganesh::StencilClip::apply\28GrAppliedHardClip*\2c\20SkIRect*\29\20const 7070:skgpu::ganesh::SoftwarePathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 7071:skgpu::ganesh::SoftwarePathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 7072:skgpu::ganesh::SoftwarePathRenderer::name\28\29\20const 7073:skgpu::ganesh::SmallPathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 7074:skgpu::ganesh::SmallPathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 7075:skgpu::ganesh::SmallPathRenderer::name\28\29\20const 7076:skgpu::ganesh::SmallPathAtlasMgr::~SmallPathAtlasMgr\28\29.1 7077:skgpu::ganesh::SmallPathAtlasMgr::preFlush\28GrOnFlushResourceProvider*\29 7078:skgpu::ganesh::SmallPathAtlasMgr::postFlush\28skgpu::AtlasToken\29 7079:skgpu::ganesh::SmallPathAtlasMgr::evict\28skgpu::PlotLocator\29 7080:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::~RegionOpImpl\28\29.1 7081:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::~RegionOpImpl\28\29 7082:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::visitProxies\28std::__2::function\20const&\29\20const 7083:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::programInfo\28\29 7084:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::onPrepareDraws\28GrMeshDrawTarget*\29 7085:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 7086:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 7087:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 7088:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::name\28\29\20const 7089:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 7090:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_quad_generic\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 7091:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_2d_uv_strict\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 7092:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_2d_uv\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 7093:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_2d_cov_uv_strict\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 7094:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_2d_cov_uv\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 7095:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_2d_color_uv_strict\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 7096:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_2d_color_uv\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 7097:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_2d_color\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 7098:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::~QuadPerEdgeAAGeometryProcessor\28\29.1 7099:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::~QuadPerEdgeAAGeometryProcessor\28\29 7100:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::onTextureSampler\28int\29\20const 7101:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::name\28\29\20const 7102:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 7103:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 7104:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::makeProgramImpl\28GrShaderCaps\20const&\29\20const 7105:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 7106:skgpu::ganesh::PathWedgeTessellator::prepare\28GrMeshDrawTarget*\2c\20SkMatrix\20const&\2c\20skgpu::ganesh::PathTessellator::PathDrawList\20const&\2c\20int\29 7107:skgpu::ganesh::PathTessellator::~PathTessellator\28\29 7108:skgpu::ganesh::PathTessellateOp::~PathTessellateOp\28\29.1 7109:skgpu::ganesh::PathTessellateOp::~PathTessellateOp\28\29 7110:skgpu::ganesh::PathTessellateOp::visitProxies\28std::__2::function\20const&\29\20const 7111:skgpu::ganesh::PathTessellateOp::usesStencil\28\29\20const 7112:skgpu::ganesh::PathTessellateOp::onPrepare\28GrOpFlushState*\29 7113:skgpu::ganesh::PathTessellateOp::onPrePrepare\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 7114:skgpu::ganesh::PathTessellateOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 7115:skgpu::ganesh::PathTessellateOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 7116:skgpu::ganesh::PathTessellateOp::name\28\29\20const 7117:skgpu::ganesh::PathTessellateOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 7118:skgpu::ganesh::PathStencilCoverOp::~PathStencilCoverOp\28\29.1 7119:skgpu::ganesh::PathStencilCoverOp::~PathStencilCoverOp\28\29 7120:skgpu::ganesh::PathStencilCoverOp::visitProxies\28std::__2::function\20const&\29\20const 7121:skgpu::ganesh::PathStencilCoverOp::onPrepare\28GrOpFlushState*\29 7122:skgpu::ganesh::PathStencilCoverOp::onPrePrepare\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 7123:skgpu::ganesh::PathStencilCoverOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 7124:skgpu::ganesh::PathStencilCoverOp::name\28\29\20const 7125:skgpu::ganesh::PathStencilCoverOp::fixedFunctionFlags\28\29\20const 7126:skgpu::ganesh::PathStencilCoverOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 7127:skgpu::ganesh::PathRenderer::onStencilPath\28skgpu::ganesh::PathRenderer::StencilPathArgs\20const&\29 7128:skgpu::ganesh::PathRenderer::onGetStencilSupport\28GrStyledShape\20const&\29\20const 7129:skgpu::ganesh::PathInnerTriangulateOp::~PathInnerTriangulateOp\28\29.1 7130:skgpu::ganesh::PathInnerTriangulateOp::~PathInnerTriangulateOp\28\29 7131:skgpu::ganesh::PathInnerTriangulateOp::visitProxies\28std::__2::function\20const&\29\20const 7132:skgpu::ganesh::PathInnerTriangulateOp::onPrepare\28GrOpFlushState*\29 7133:skgpu::ganesh::PathInnerTriangulateOp::onPrePrepare\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 7134:skgpu::ganesh::PathInnerTriangulateOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 7135:skgpu::ganesh::PathInnerTriangulateOp::name\28\29\20const 7136:skgpu::ganesh::PathInnerTriangulateOp::fixedFunctionFlags\28\29\20const 7137:skgpu::ganesh::PathInnerTriangulateOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 7138:skgpu::ganesh::PathCurveTessellator::prepare\28GrMeshDrawTarget*\2c\20SkMatrix\20const&\2c\20skgpu::ganesh::PathTessellator::PathDrawList\20const&\2c\20int\29 7139:skgpu::ganesh::OpsTask::~OpsTask\28\29.1 7140:skgpu::ganesh::OpsTask::onPrepare\28GrOpFlushState*\29 7141:skgpu::ganesh::OpsTask::onPrePrepare\28GrRecordingContext*\29 7142:skgpu::ganesh::OpsTask::onMakeSkippable\28\29 7143:skgpu::ganesh::OpsTask::onIsUsed\28GrSurfaceProxy*\29\20const 7144:skgpu::ganesh::OpsTask::gatherProxyIntervals\28GrResourceAllocator*\29\20const 7145:skgpu::ganesh::OpsTask::endFlush\28GrDrawingManager*\29 7146:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::~NonAALatticeOp\28\29.1 7147:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::visitProxies\28std::__2::function\20const&\29\20const 7148:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::onPrepareDraws\28GrMeshDrawTarget*\29 7149:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 7150:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 7151:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 7152:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::name\28\29\20const 7153:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 7154:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::~LatticeGP\28\29.1 7155:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::~LatticeGP\28\29 7156:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::onTextureSampler\28int\29\20const 7157:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::name\28\29\20const 7158:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 7159:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 7160:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::makeProgramImpl\28GrShaderCaps\20const&\29\20const 7161:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 7162:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::~FillRRectOpImpl\28\29.1 7163:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::~FillRRectOpImpl\28\29 7164:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::visitProxies\28std::__2::function\20const&\29\20const 7165:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::programInfo\28\29 7166:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::onPrepareDraws\28GrMeshDrawTarget*\29 7167:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 7168:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 7169:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 7170:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::name\28\29\20const 7171:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 7172:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::clipToShape\28skgpu::ganesh::SurfaceDrawContext*\2c\20SkClipOp\2c\20SkMatrix\20const&\2c\20GrShape\20const&\2c\20GrAA\29 7173:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Processor::~Processor\28\29.1 7174:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Processor::~Processor\28\29 7175:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Processor::name\28\29\20const 7176:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Processor::makeProgramImpl\28GrShaderCaps\20const&\29\20const 7177:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Processor::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 7178:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Processor::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 7179:skgpu::ganesh::DrawableOp::~DrawableOp\28\29.1 7180:skgpu::ganesh::DrawableOp::~DrawableOp\28\29 7181:skgpu::ganesh::DrawableOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 7182:skgpu::ganesh::DrawableOp::name\28\29\20const 7183:skgpu::ganesh::DrawAtlasPathOp::~DrawAtlasPathOp\28\29.1 7184:skgpu::ganesh::DrawAtlasPathOp::~DrawAtlasPathOp\28\29 7185:skgpu::ganesh::DrawAtlasPathOp::visitProxies\28std::__2::function\20const&\29\20const 7186:skgpu::ganesh::DrawAtlasPathOp::onPrepare\28GrOpFlushState*\29 7187:skgpu::ganesh::DrawAtlasPathOp::onPrePrepare\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 7188:skgpu::ganesh::DrawAtlasPathOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 7189:skgpu::ganesh::DrawAtlasPathOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 7190:skgpu::ganesh::DrawAtlasPathOp::name\28\29\20const 7191:skgpu::ganesh::DrawAtlasPathOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 7192:skgpu::ganesh::Device::~Device\28\29.1 7193:skgpu::ganesh::Device::~Device\28\29 7194:skgpu::ganesh::Device::strikeDeviceInfo\28\29\20const 7195:skgpu::ganesh::Device::snapSpecial\28SkIRect\20const&\2c\20bool\29 7196:skgpu::ganesh::Device::snapSpecialScaled\28SkIRect\20const&\2c\20SkISize\20const&\29 7197:skgpu::ganesh::Device::replaceClip\28SkIRect\20const&\29 7198:skgpu::ganesh::Device::recordingContext\28\29\20const 7199:skgpu::ganesh::Device::pushClipStack\28\29 7200:skgpu::ganesh::Device::popClipStack\28\29 7201:skgpu::ganesh::Device::onWritePixels\28SkPixmap\20const&\2c\20int\2c\20int\29 7202:skgpu::ganesh::Device::onReadPixels\28SkPixmap\20const&\2c\20int\2c\20int\29 7203:skgpu::ganesh::Device::onDrawGlyphRunList\28SkCanvas*\2c\20sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\29 7204:skgpu::ganesh::Device::onClipShader\28sk_sp\29 7205:skgpu::ganesh::Device::makeSurface\28SkImageInfo\20const&\2c\20SkSurfaceProps\20const&\29 7206:skgpu::ganesh::Device::makeSpecial\28SkImage\20const*\29 7207:skgpu::ganesh::Device::isClipWideOpen\28\29\20const 7208:skgpu::ganesh::Device::isClipRect\28\29\20const 7209:skgpu::ganesh::Device::isClipEmpty\28\29\20const 7210:skgpu::ganesh::Device::isClipAntiAliased\28\29\20const 7211:skgpu::ganesh::Device::drawVertices\28SkVertices\20const*\2c\20sk_sp\2c\20SkPaint\20const&\2c\20bool\29 7212:skgpu::ganesh::Device::drawSpecial\28SkSpecialImage*\2c\20SkMatrix\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 7213:skgpu::ganesh::Device::drawSlug\28SkCanvas*\2c\20sktext::gpu::Slug\20const*\2c\20SkPaint\20const&\29 7214:skgpu::ganesh::Device::drawShadow\28SkPath\20const&\2c\20SkDrawShadowRec\20const&\29 7215:skgpu::ganesh::Device::drawRegion\28SkRegion\20const&\2c\20SkPaint\20const&\29 7216:skgpu::ganesh::Device::drawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 7217:skgpu::ganesh::Device::drawPoints\28SkCanvas::PointMode\2c\20unsigned\20long\2c\20SkPoint\20const*\2c\20SkPaint\20const&\29 7218:skgpu::ganesh::Device::drawPaint\28SkPaint\20const&\29 7219:skgpu::ganesh::Device::drawOval\28SkRect\20const&\2c\20SkPaint\20const&\29 7220:skgpu::ganesh::Device::drawMesh\28SkMesh\20const&\2c\20sk_sp\2c\20SkPaint\20const&\29 7221:skgpu::ganesh::Device::drawImageRect\28SkImage\20const*\2c\20SkRect\20const*\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 7222:skgpu::ganesh::Device::drawImageLattice\28SkImage\20const*\2c\20SkCanvas::Lattice\20const&\2c\20SkRect\20const&\2c\20SkFilterMode\2c\20SkPaint\20const&\29 7223:skgpu::ganesh::Device::drawEdgeAAQuad\28SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkBlendMode\29 7224:skgpu::ganesh::Device::drawEdgeAAImageSet\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 7225:skgpu::ganesh::Device::drawDrawable\28SkCanvas*\2c\20SkDrawable*\2c\20SkMatrix\20const*\29 7226:skgpu::ganesh::Device::drawDevice\28SkDevice*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\29 7227:skgpu::ganesh::Device::drawDRRect\28SkRRect\20const&\2c\20SkRRect\20const&\2c\20SkPaint\20const&\29 7228:skgpu::ganesh::Device::drawAtlas\28SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20sk_sp\2c\20SkPaint\20const&\29 7229:skgpu::ganesh::Device::drawAsTiledImageRect\28SkCanvas*\2c\20SkImage\20const*\2c\20SkRect\20const*\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 7230:skgpu::ganesh::Device::drawArc\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 7231:skgpu::ganesh::Device::devClipBounds\28\29\20const 7232:skgpu::ganesh::Device::createImageFilteringBackend\28SkSurfaceProps\20const&\2c\20SkColorType\29\20const 7233:skgpu::ganesh::Device::createDevice\28SkDevice::CreateInfo\20const&\2c\20SkPaint\20const*\29 7234:skgpu::ganesh::Device::convertGlyphRunListToSlug\28sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\29 7235:skgpu::ganesh::Device::clipRegion\28SkRegion\20const&\2c\20SkClipOp\29 7236:skgpu::ganesh::Device::clipRect\28SkRect\20const&\2c\20SkClipOp\2c\20bool\29 7237:skgpu::ganesh::Device::clipRRect\28SkRRect\20const&\2c\20SkClipOp\2c\20bool\29 7238:skgpu::ganesh::Device::clipPath\28SkPath\20const&\2c\20SkClipOp\2c\20bool\29 7239:skgpu::ganesh::Device::android_utils_clipWithStencil\28\29 7240:skgpu::ganesh::DefaultPathRenderer::onStencilPath\28skgpu::ganesh::PathRenderer::StencilPathArgs\20const&\29 7241:skgpu::ganesh::DefaultPathRenderer::onGetStencilSupport\28GrStyledShape\20const&\29\20const 7242:skgpu::ganesh::DefaultPathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 7243:skgpu::ganesh::DefaultPathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 7244:skgpu::ganesh::DefaultPathRenderer::name\28\29\20const 7245:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingLineEffect::name\28\29\20const 7246:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingLineEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const 7247:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingLineEffect::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 7248:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingLineEffect::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 7249:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingCircleEffect::name\28\29\20const 7250:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingCircleEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const 7251:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingCircleEffect::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 7252:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingCircleEffect::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 7253:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::~DashOpImpl\28\29.1 7254:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::~DashOpImpl\28\29 7255:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::visitProxies\28std::__2::function\20const&\29\20const 7256:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::programInfo\28\29 7257:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::onPrepareDraws\28GrMeshDrawTarget*\29 7258:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 7259:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 7260:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 7261:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::name\28\29\20const 7262:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::fixedFunctionFlags\28\29\20const 7263:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 7264:skgpu::ganesh::DashLinePathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 7265:skgpu::ganesh::DashLinePathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 7266:skgpu::ganesh::DashLinePathRenderer::name\28\29\20const 7267:skgpu::ganesh::ClipStack::~ClipStack\28\29.1 7268:skgpu::ganesh::ClipStack::preApply\28SkRect\20const&\2c\20GrAA\29\20const 7269:skgpu::ganesh::ClipStack::apply\28GrRecordingContext*\2c\20skgpu::ganesh::SurfaceDrawContext*\2c\20GrDrawOp*\2c\20GrAAType\2c\20GrAppliedClip*\2c\20SkRect*\29\20const 7270:skgpu::ganesh::ClearOp::~ClearOp\28\29 7271:skgpu::ganesh::ClearOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 7272:skgpu::ganesh::ClearOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 7273:skgpu::ganesh::ClearOp::name\28\29\20const 7274:skgpu::ganesh::AtlasTextOp::~AtlasTextOp\28\29.1 7275:skgpu::ganesh::AtlasTextOp::~AtlasTextOp\28\29 7276:skgpu::ganesh::AtlasTextOp::visitProxies\28std::__2::function\20const&\29\20const 7277:skgpu::ganesh::AtlasTextOp::onPrepareDraws\28GrMeshDrawTarget*\29 7278:skgpu::ganesh::AtlasTextOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 7279:skgpu::ganesh::AtlasTextOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 7280:skgpu::ganesh::AtlasTextOp::name\28\29\20const 7281:skgpu::ganesh::AtlasTextOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 7282:skgpu::ganesh::AtlasRenderTask::~AtlasRenderTask\28\29.1 7283:skgpu::ganesh::AtlasRenderTask::~AtlasRenderTask\28\29 7284:skgpu::ganesh::AtlasRenderTask::onMakeClosed\28GrRecordingContext*\2c\20SkIRect*\29 7285:skgpu::ganesh::AtlasRenderTask::onExecute\28GrOpFlushState*\29 7286:skgpu::ganesh::AtlasPathRenderer::~AtlasPathRenderer\28\29.1 7287:skgpu::ganesh::AtlasPathRenderer::~AtlasPathRenderer\28\29 7288:skgpu::ganesh::AtlasPathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 7289:skgpu::ganesh::AtlasPathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 7290:skgpu::ganesh::AtlasPathRenderer::name\28\29\20const 7291:skgpu::ganesh::AALinearizingConvexPathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 7292:skgpu::ganesh::AALinearizingConvexPathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 7293:skgpu::ganesh::AALinearizingConvexPathRenderer::name\28\29\20const 7294:skgpu::ganesh::AAHairLinePathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 7295:skgpu::ganesh::AAHairLinePathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 7296:skgpu::ganesh::AAHairLinePathRenderer::name\28\29\20const 7297:skgpu::ganesh::AAConvexPathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 7298:skgpu::ganesh::AAConvexPathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 7299:skgpu::ganesh::AAConvexPathRenderer::name\28\29\20const 7300:skgpu::TAsyncReadResult::~TAsyncReadResult\28\29.1 7301:skgpu::TAsyncReadResult::rowBytes\28int\29\20const 7302:skgpu::TAsyncReadResult::data\28int\29\20const 7303:skgpu::StringKeyBuilder::~StringKeyBuilder\28\29.1 7304:skgpu::StringKeyBuilder::~StringKeyBuilder\28\29 7305:skgpu::StringKeyBuilder::appendComment\28char\20const*\29 7306:skgpu::StringKeyBuilder::addBits\28unsigned\20int\2c\20unsigned\20int\2c\20std::__2::basic_string_view>\29 7307:skgpu::ShaderErrorHandler::compileError\28char\20const*\2c\20char\20const*\2c\20bool\29 7308:skgpu::RectanizerSkyline::~RectanizerSkyline\28\29.1 7309:skgpu::RectanizerSkyline::~RectanizerSkyline\28\29 7310:skgpu::RectanizerSkyline::reset\28\29 7311:skgpu::RectanizerSkyline::percentFull\28\29\20const 7312:skgpu::RectanizerPow2::reset\28\29 7313:skgpu::RectanizerPow2::percentFull\28\29\20const 7314:skgpu::RectanizerPow2::addRect\28int\2c\20int\2c\20SkIPoint16*\29 7315:skgpu::Plot::~Plot\28\29.1 7316:skgpu::Plot::~Plot\28\29 7317:skgpu::KeyBuilder::~KeyBuilder\28\29 7318:skgpu::KeyBuilder::addBits\28unsigned\20int\2c\20unsigned\20int\2c\20std::__2::basic_string_view>\29 7319:skgpu::DefaultShaderErrorHandler\28\29::DefaultShaderErrorHandler::compileError\28char\20const*\2c\20char\20const*\29 7320:sk_write_fn\28png_struct_def*\2c\20unsigned\20char*\2c\20unsigned\20long\29 7321:sk_sp*\20emscripten::internal::MemberAccess>::getWire\28sk_sp\20SimpleImageInfo::*\20const&\2c\20SimpleImageInfo\20const&\29 7322:sk_read_user_chunk\28png_struct_def*\2c\20png_unknown_chunk_t*\29 7323:sk_mmap_releaseproc\28void\20const*\2c\20void*\29 7324:sk_ft_stream_io\28FT_StreamRec_*\2c\20unsigned\20long\2c\20unsigned\20char*\2c\20unsigned\20long\29 7325:sk_ft_realloc\28FT_MemoryRec_*\2c\20long\2c\20long\2c\20void*\29 7326:sk_ft_free\28FT_MemoryRec_*\2c\20void*\29 7327:sk_ft_alloc\28FT_MemoryRec_*\2c\20long\29 7328:sk_dataref_releaseproc\28void\20const*\2c\20void*\29 7329:sfnt_table_info 7330:sfnt_stream_close 7331:sfnt_load_face 7332:sfnt_is_postscript 7333:sfnt_is_alphanumeric 7334:sfnt_init_face 7335:sfnt_get_ps_name 7336:sfnt_get_name_index 7337:sfnt_get_name_id 7338:sfnt_get_interface 7339:sfnt_get_glyph_name 7340:sfnt_get_charset_id 7341:sfnt_done_face 7342:setup_syllables_use\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 7343:setup_syllables_myanmar\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 7344:setup_syllables_khmer\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 7345:setup_syllables_indic\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 7346:setup_masks_use\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 7347:setup_masks_myanmar\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 7348:setup_masks_khmer\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 7349:setup_masks_indic\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 7350:setup_masks_hangul\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 7351:setup_masks_arabic\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 7352:service_cleanup\28\29 7353:sep_upsample 7354:self_destruct 7355:scriptGetMaxValue\28IntProperty\20const&\2c\20UProperty\29 7356:save_marker 7357:sample8\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 7358:sample6\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 7359:sample4\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 7360:sample2\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 7361:sample1\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 7362:rgb_rgb_convert 7363:rgb_rgb565_convert 7364:rgb_rgb565D_convert 7365:rgb_gray_convert 7366:reverse_hit_compare_y\28SkOpRayHit\20const*\2c\20SkOpRayHit\20const*\29 7367:reverse_hit_compare_x\28SkOpRayHit\20const*\2c\20SkOpRayHit\20const*\29 7368:reset_marker_reader 7369:reset_input_controller 7370:reset_error_mgr 7371:request_virt_sarray 7372:request_virt_barray 7373:reorder_use\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 7374:reorder_myanmar\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 7375:reorder_marks_hebrew\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20unsigned\20int\2c\20unsigned\20int\29 7376:reorder_marks_arabic\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20unsigned\20int\2c\20unsigned\20int\29 7377:reorder_khmer\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 7378:release_data\28void*\2c\20void*\29 7379:record_stch\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 7380:record_rphf_use\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 7381:record_pref_use\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 7382:realize_virt_arrays 7383:read_restart_marker 7384:read_markers 7385:read_data_from_FT_Stream 7386:rbbi_cleanup_73 7387:quantize_ord_dither 7388:quantize_fs_dither 7389:quantize3_ord_dither 7390:putil_cleanup\28\29 7391:psnames_get_service 7392:pshinter_get_t2_funcs 7393:pshinter_get_t1_funcs 7394:pshinter_get_globals_funcs 7395:psh_globals_new 7396:psh_globals_destroy 7397:psaux_get_glyph_name 7398:ps_table_release 7399:ps_table_new 7400:ps_table_done 7401:ps_table_add 7402:ps_property_set 7403:ps_property_get 7404:ps_parser_to_token_array 7405:ps_parser_to_int 7406:ps_parser_to_fixed_array 7407:ps_parser_to_fixed 7408:ps_parser_to_coord_array 7409:ps_parser_to_bytes 7410:ps_parser_skip_spaces 7411:ps_parser_load_field_table 7412:ps_parser_init 7413:ps_hints_t2mask 7414:ps_hints_t2counter 7415:ps_hints_t1stem3 7416:ps_hints_t1reset 7417:ps_hints_close 7418:ps_hints_apply 7419:ps_hinter_init 7420:ps_hinter_done 7421:ps_get_standard_strings 7422:ps_get_macintosh_name 7423:ps_decoder_init 7424:ps_builder_init 7425:progress_monitor\28jpeg_common_struct*\29 7426:process_data_simple_main 7427:process_data_crank_post 7428:process_data_context_main 7429:prescan_quantize 7430:preprocess_text_use\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 7431:preprocess_text_thai\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 7432:preprocess_text_indic\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 7433:preprocess_text_hangul\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 7434:prepare_for_output_pass 7435:premultiply_data 7436:premul_rgb\28SkRGBA4f<\28SkAlphaType\292>\29 7437:premul_polar\28SkRGBA4f<\28SkAlphaType\292>\29 7438:postprocess_glyphs_arabic\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 7439:post_process_prepass 7440:post_process_2pass 7441:post_process_1pass 7442:portable::xy_to_unit_angle\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7443:portable::xy_to_radius\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7444:portable::xy_to_2pt_conical_well_behaved\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7445:portable::xy_to_2pt_conical_strip\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7446:portable::xy_to_2pt_conical_smaller\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7447:portable::xy_to_2pt_conical_greater\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7448:portable::xy_to_2pt_conical_focal_on_circle\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7449:portable::xor_\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7450:portable::white_color\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7451:portable::unpremul_polar\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7452:portable::unpremul\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7453:portable::trace_var\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7454:portable::trace_scope\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7455:portable::trace_line\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7456:portable::trace_exit\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7457:portable::trace_enter\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7458:portable::tan_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7459:portable::swizzle_copy_to_indirect_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7460:portable::swizzle_copy_slot_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7461:portable::swizzle_copy_4_slots_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7462:portable::swizzle_copy_3_slots_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7463:portable::swizzle_copy_2_slots_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7464:portable::swizzle_4\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7465:portable::swizzle_3\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7466:portable::swizzle_2\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7467:portable::swizzle_1\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7468:portable::swizzle\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7469:portable::swap_src_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7470:portable::swap_rb_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7471:portable::swap_rb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7472:portable::sub_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7473:portable::sub_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7474:portable::sub_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7475:portable::sub_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7476:portable::sub_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7477:portable::sub_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7478:portable::sub_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7479:portable::sub_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7480:portable::sub_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7481:portable::sub_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7482:portable::store_src_rg\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7483:portable::store_src_a\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7484:portable::store_src\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7485:portable::store_rgf16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7486:portable::store_rg88\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7487:portable::store_rg1616\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7488:portable::store_return_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7489:portable::store_r8\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7490:portable::store_loop_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7491:portable::store_f32\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7492:portable::store_f16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7493:portable::store_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7494:portable::store_device_xy01\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7495:portable::store_condition_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7496:portable::store_af16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7497:portable::store_a8\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7498:portable::store_a16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7499:portable::store_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7500:portable::store_565\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7501:portable::store_4444\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7502:portable::store_16161616\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7503:portable::store_10x6\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7504:portable::store_1010102_xr\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7505:portable::store_1010102\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7506:portable::start_pipeline\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkRasterPipelineStage*\2c\20SkSpan\2c\20unsigned\20char*\29 7507:portable::stack_rewind\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7508:portable::stack_checkpoint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7509:portable::srcover_rgba_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7510:portable::srcover\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7511:portable::srcout\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7512:portable::srcin\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7513:portable::srcatop\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7514:portable::sqrt_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7515:portable::splat_4_constants\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7516:portable::splat_3_constants\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7517:portable::splat_2_constants\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7518:portable::softlight\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7519:portable::smoothstep_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7520:portable::sin_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7521:portable::shuffle\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7522:portable::set_base_pointer\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7523:portable::seed_shader\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7524:portable::screen\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7525:portable::scale_u8\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7526:portable::scale_565\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7527:portable::saturation\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7528:portable::rgb_to_hsl\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7529:portable::repeat_y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7530:portable::repeat_x_1\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7531:portable::repeat_x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7532:portable::refract_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7533:portable::reenable_loop_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7534:portable::rect_memset64\28unsigned\20long\20long*\2c\20unsigned\20long\20long\2c\20int\2c\20unsigned\20long\2c\20int\29 7535:portable::rect_memset32\28unsigned\20int*\2c\20unsigned\20int\2c\20int\2c\20unsigned\20long\2c\20int\29 7536:portable::rect_memset16\28unsigned\20short*\2c\20unsigned\20short\2c\20int\2c\20unsigned\20long\2c\20int\29 7537:portable::premul_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7538:portable::premul\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7539:portable::pow_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7540:portable::plus_\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7541:portable::perlin_noise\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7542:portable::parametric\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7543:portable::overlay\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7544:portable::negate_x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7545:portable::multiply\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7546:portable::mul_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7547:portable::mul_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7548:portable::mul_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7549:portable::mul_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7550:portable::mul_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7551:portable::mul_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7552:portable::mul_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7553:portable::mul_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7554:portable::mul_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7555:portable::mul_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7556:portable::mul_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7557:portable::mul_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7558:portable::move_src_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7559:portable::move_dst_src\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7560:portable::modulate\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7561:portable::mod_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7562:portable::mod_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7563:portable::mod_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7564:portable::mod_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7565:portable::mod_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7566:portable::mix_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7567:portable::mix_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7568:portable::mix_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7569:portable::mix_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7570:portable::mix_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7571:portable::mix_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7572:portable::mix_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7573:portable::mix_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7574:portable::mix_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7575:portable::mix_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7576:portable::mirror_y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7577:portable::mirror_x_1\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7578:portable::mirror_x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7579:portable::mipmap_linear_update\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7580:portable::mipmap_linear_init\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7581:portable::mipmap_linear_finish\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7582:portable::min_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7583:portable::min_n_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7584:portable::min_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7585:portable::min_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7586:portable::min_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7587:portable::min_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7588:portable::min_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7589:portable::min_4_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7590:portable::min_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7591:portable::min_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7592:portable::min_3_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7593:portable::min_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7594:portable::min_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7595:portable::min_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7596:portable::min_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7597:portable::min_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7598:portable::merge_loop_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7599:portable::merge_inv_condition_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7600:portable::merge_condition_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7601:portable::memset32\28unsigned\20int*\2c\20unsigned\20int\2c\20int\29 7602:portable::memset16\28unsigned\20short*\2c\20unsigned\20short\2c\20int\29 7603:portable::max_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7604:portable::max_n_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7605:portable::max_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7606:portable::max_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7607:portable::max_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7608:portable::max_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7609:portable::max_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7610:portable::max_4_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7611:portable::max_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7612:portable::max_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7613:portable::max_3_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7614:portable::max_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7615:portable::max_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7616:portable::max_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7617:portable::max_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7618:portable::max_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7619:portable::matrix_translate\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7620:portable::matrix_scale_translate\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7621:portable::matrix_perspective\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7622:portable::matrix_multiply_4\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7623:portable::matrix_multiply_3\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7624:portable::matrix_multiply_2\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7625:portable::matrix_4x5\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7626:portable::matrix_4x3\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7627:portable::matrix_3x4\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7628:portable::matrix_3x3\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7629:portable::matrix_2x3\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7630:portable::mask_off_return_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7631:portable::mask_off_loop_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7632:portable::mask_2pt_conical_nan\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7633:portable::mask_2pt_conical_degenerates\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7634:portable::luminosity\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7635:portable::log_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7636:portable::log2_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7637:portable::load_src_rg\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7638:portable::load_rgf16_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7639:portable::load_rgf16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7640:portable::load_rg88_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7641:portable::load_rg88\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7642:portable::load_rg1616_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7643:portable::load_rg1616\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7644:portable::load_return_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7645:portable::load_loop_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7646:portable::load_f32_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7647:portable::load_f32\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7648:portable::load_f16_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7649:portable::load_f16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7650:portable::load_condition_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7651:portable::load_af16_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7652:portable::load_af16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7653:portable::load_a8_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7654:portable::load_a8\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7655:portable::load_a16_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7656:portable::load_a16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7657:portable::load_8888_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7658:portable::load_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7659:portable::load_565_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7660:portable::load_565\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7661:portable::load_4444_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7662:portable::load_4444\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7663:portable::load_16161616_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7664:portable::load_16161616\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7665:portable::load_10x6_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7666:portable::load_10x6\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7667:portable::load_1010102_xr_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7668:portable::load_1010102_xr\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7669:portable::load_1010102_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7670:portable::load_1010102\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7671:portable::lighten\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7672:portable::lerp_u8\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7673:portable::lerp_565\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7674:portable::just_return\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7675:portable::jump\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7676:portable::invsqrt_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7677:portable::invsqrt_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7678:portable::invsqrt_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7679:portable::invsqrt_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7680:portable::inverted_CMYK_to_RGB1\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\29 7681:portable::inverted_CMYK_to_BGR1\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\29 7682:portable::inverse_mat4\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7683:portable::inverse_mat3\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7684:portable::inverse_mat2\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7685:portable::init_lane_masks\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7686:portable::hue\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7687:portable::hsl_to_rgb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7688:portable::hardlight\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7689:portable::gray_to_RGB1\28unsigned\20int*\2c\20unsigned\20char\20const*\2c\20int\29 7690:portable::grayA_to_rgbA\28unsigned\20int*\2c\20unsigned\20char\20const*\2c\20int\29 7691:portable::grayA_to_RGBA\28unsigned\20int*\2c\20unsigned\20char\20const*\2c\20int\29 7692:portable::gradient\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7693:portable::gauss_a_to_rgba\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7694:portable::gather_rgf16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7695:portable::gather_rg88\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7696:portable::gather_rg1616\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7697:portable::gather_f32\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7698:portable::gather_f16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7699:portable::gather_af16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7700:portable::gather_a8\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7701:portable::gather_a16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7702:portable::gather_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7703:portable::gather_565\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7704:portable::gather_4444\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7705:portable::gather_16161616\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7706:portable::gather_10x6\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7707:portable::gather_1010102_xr\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7708:portable::gather_1010102\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7709:portable::gamma_\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7710:portable::force_opaque_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7711:portable::force_opaque\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7712:portable::floor_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7713:portable::floor_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7714:portable::floor_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7715:portable::floor_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7716:portable::exp_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7717:portable::exp2_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7718:portable::exclusion\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7719:portable::exchange_src\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7720:portable::evenly_spaced_gradient\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7721:portable::evenly_spaced_2_stop_gradient\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7722:portable::emboss\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7723:portable::dstover\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7724:portable::dstout\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7725:portable::dstin\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7726:portable::dstatop\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7727:portable::dot_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7728:portable::dot_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7729:portable::dot_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7730:portable::div_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7731:portable::div_n_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7732:portable::div_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7733:portable::div_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7734:portable::div_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7735:portable::div_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7736:portable::div_4_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7737:portable::div_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7738:portable::div_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7739:portable::div_3_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7740:portable::div_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7741:portable::div_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7742:portable::div_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7743:portable::div_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7744:portable::div_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7745:portable::dither\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7746:portable::difference\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7747:portable::decal_y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7748:portable::decal_x_and_y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7749:portable::decal_x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7750:portable::darken\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7751:portable::css_oklab_to_linear_srgb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7752:portable::css_oklab_gamut_map_to_linear_srgb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7753:portable::css_lab_to_xyz\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7754:portable::css_hwb_to_srgb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7755:portable::css_hsl_to_srgb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7756:portable::css_hcl_to_lab\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7757:portable::cos_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7758:portable::copy_uniform\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7759:portable::copy_to_indirect_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7760:portable::copy_slot_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7761:portable::copy_slot_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7762:portable::copy_immutable_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7763:portable::copy_constant\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7764:portable::copy_4_uniforms\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7765:portable::copy_4_slots_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7766:portable::copy_4_slots_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7767:portable::copy_4_immutables_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7768:portable::copy_3_uniforms\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7769:portable::copy_3_slots_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7770:portable::copy_3_slots_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7771:portable::copy_3_immutables_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7772:portable::copy_2_uniforms\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7773:portable::copy_2_slots_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7774:portable::continue_op\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7775:portable::colordodge\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7776:portable::colorburn\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7777:portable::color\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7778:portable::cmpne_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7779:portable::cmpne_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7780:portable::cmpne_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7781:portable::cmpne_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7782:portable::cmpne_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7783:portable::cmpne_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7784:portable::cmpne_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7785:portable::cmpne_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7786:portable::cmpne_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7787:portable::cmpne_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7788:portable::cmpne_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7789:portable::cmpne_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7790:portable::cmplt_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7791:portable::cmplt_n_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7792:portable::cmplt_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7793:portable::cmplt_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7794:portable::cmplt_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7795:portable::cmplt_imm_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7796:portable::cmplt_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7797:portable::cmplt_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7798:portable::cmplt_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7799:portable::cmplt_4_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7800:portable::cmplt_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7801:portable::cmplt_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7802:portable::cmplt_3_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7803:portable::cmplt_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7804:portable::cmplt_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7805:portable::cmplt_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7806:portable::cmplt_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7807:portable::cmplt_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7808:portable::cmple_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7809:portable::cmple_n_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7810:portable::cmple_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7811:portable::cmple_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7812:portable::cmple_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7813:portable::cmple_imm_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7814:portable::cmple_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7815:portable::cmple_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7816:portable::cmple_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7817:portable::cmple_4_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7818:portable::cmple_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7819:portable::cmple_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7820:portable::cmple_3_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7821:portable::cmple_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7822:portable::cmple_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7823:portable::cmple_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7824:portable::cmple_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7825:portable::cmple_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7826:portable::cmpeq_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7827:portable::cmpeq_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7828:portable::cmpeq_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7829:portable::cmpeq_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7830:portable::cmpeq_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7831:portable::cmpeq_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7832:portable::cmpeq_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7833:portable::cmpeq_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7834:portable::cmpeq_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7835:portable::cmpeq_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7836:portable::cmpeq_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7837:portable::cmpeq_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7838:portable::clear\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7839:portable::clamp_x_and_y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7840:portable::clamp_x_1\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7841:portable::clamp_gamut\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7842:portable::clamp_01\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7843:portable::ceil_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7844:portable::ceil_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7845:portable::ceil_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7846:portable::ceil_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7847:portable::cast_to_uint_from_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7848:portable::cast_to_uint_from_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7849:portable::cast_to_uint_from_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7850:portable::cast_to_uint_from_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7851:portable::cast_to_int_from_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7852:portable::cast_to_int_from_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7853:portable::cast_to_int_from_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7854:portable::cast_to_int_from_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7855:portable::cast_to_float_from_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7856:portable::cast_to_float_from_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7857:portable::cast_to_float_from_4_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7858:portable::cast_to_float_from_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7859:portable::cast_to_float_from_3_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7860:portable::cast_to_float_from_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7861:portable::cast_to_float_from_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7862:portable::cast_to_float_from_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7863:portable::case_op\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7864:portable::callback\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7865:portable::byte_tables\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7866:portable::bt709_luminance_or_luma_to_rgb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7867:portable::bt709_luminance_or_luma_to_alpha\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7868:portable::branch_if_no_lanes_active\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7869:portable::branch_if_no_active_lanes_eq\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7870:portable::branch_if_any_lanes_active\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7871:portable::branch_if_all_lanes_active\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7872:portable::blit_row_s32a_opaque\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int\29 7873:portable::black_color\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7874:portable::bitwise_xor_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7875:portable::bitwise_xor_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7876:portable::bitwise_xor_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7877:portable::bitwise_xor_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7878:portable::bitwise_xor_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7879:portable::bitwise_xor_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7880:portable::bitwise_or_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7881:portable::bitwise_or_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7882:portable::bitwise_or_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7883:portable::bitwise_or_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7884:portable::bitwise_or_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7885:portable::bitwise_and_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7886:portable::bitwise_and_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7887:portable::bitwise_and_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7888:portable::bitwise_and_imm_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7889:portable::bitwise_and_imm_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7890:portable::bitwise_and_imm_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7891:portable::bitwise_and_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7892:portable::bitwise_and_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7893:portable::bitwise_and_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7894:portable::bilinear_setup\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7895:portable::bilinear_py\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7896:portable::bilinear_px\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7897:portable::bilinear_ny\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7898:portable::bilinear_nx\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7899:portable::bilerp_clamp_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7900:portable::bicubic_setup\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7901:portable::bicubic_p3y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7902:portable::bicubic_p3x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7903:portable::bicubic_p1y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7904:portable::bicubic_p1x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7905:portable::bicubic_n3y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7906:portable::bicubic_n3x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7907:portable::bicubic_n1y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7908:portable::bicubic_n1x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7909:portable::bicubic_clamp_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7910:portable::atan_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7911:portable::atan2_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7912:portable::asin_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7913:portable::alter_2pt_conical_unswap\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7914:portable::alter_2pt_conical_compensate_focal\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7915:portable::alpha_to_red_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7916:portable::alpha_to_red\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7917:portable::alpha_to_gray_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7918:portable::alpha_to_gray\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7919:portable::add_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7920:portable::add_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7921:portable::add_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7922:portable::add_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7923:portable::add_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7924:portable::add_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7925:portable::add_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7926:portable::add_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7927:portable::add_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7928:portable::add_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7929:portable::add_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7930:portable::add_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7931:portable::acos_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7932:portable::accumulate\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7933:portable::abs_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7934:portable::abs_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7935:portable::abs_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7936:portable::abs_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7937:portable::RGB_to_RGB1\28unsigned\20int*\2c\20unsigned\20char\20const*\2c\20int\29 7938:portable::RGB_to_BGR1\28unsigned\20int*\2c\20unsigned\20char\20const*\2c\20int\29 7939:portable::RGBA_to_rgbA\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\29 7940:portable::RGBA_to_bgrA\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\29 7941:portable::RGBA_to_BGRA\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\29 7942:portable::PQish\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7943:portable::HLGish\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7944:portable::HLGinvish\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7945:pop_arg_long_double 7946:pointerTOCLookupFn\28UDataMemory\20const*\2c\20char\20const*\2c\20int*\2c\20UErrorCode*\29 7947:png_read_filter_row_up 7948:png_read_filter_row_sub 7949:png_read_filter_row_paeth_multibyte_pixel 7950:png_read_filter_row_paeth_1byte_pixel 7951:png_read_filter_row_avg 7952:pass2_no_dither 7953:pass2_fs_dither 7954:override_features_khmer\28hb_ot_shape_planner_t*\29 7955:override_features_indic\28hb_ot_shape_planner_t*\29 7956:override_features_hangul\28hb_ot_shape_planner_t*\29 7957:output_message\28jpeg_common_struct*\29 7958:output_message 7959:offsetTOCLookupFn\28UDataMemory\20const*\2c\20char\20const*\2c\20int*\2c\20UErrorCode*\29 7960:null_convert 7961:noop_upsample 7962:non-virtual\20thunk\20to\20std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29.1 7963:non-virtual\20thunk\20to\20std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29 7964:non-virtual\20thunk\20to\20std::__2::basic_iostream>::~basic_iostream\28\29.1 7965:non-virtual\20thunk\20to\20std::__2::basic_iostream>::~basic_iostream\28\29 7966:non-virtual\20thunk\20to\20skif::\28anonymous\20namespace\29::GaneshBackend::~GaneshBackend\28\29.3 7967:non-virtual\20thunk\20to\20skif::\28anonymous\20namespace\29::GaneshBackend::~GaneshBackend\28\29.2 7968:non-virtual\20thunk\20to\20skif::\28anonymous\20namespace\29::GaneshBackend::~GaneshBackend\28\29.1 7969:non-virtual\20thunk\20to\20skif::\28anonymous\20namespace\29::GaneshBackend::~GaneshBackend\28\29 7970:non-virtual\20thunk\20to\20skif::\28anonymous\20namespace\29::GaneshBackend::findAlgorithm\28SkSize\2c\20SkColorType\29\20const 7971:non-virtual\20thunk\20to\20skif::\28anonymous\20namespace\29::GaneshBackend::blur\28SkSize\2c\20sk_sp\2c\20SkIRect\20const&\2c\20SkTileMode\2c\20SkIRect\20const&\29\20const 7972:non-virtual\20thunk\20to\20skgpu::ganesh::SmallPathAtlasMgr::~SmallPathAtlasMgr\28\29.1 7973:non-virtual\20thunk\20to\20skgpu::ganesh::SmallPathAtlasMgr::~SmallPathAtlasMgr\28\29 7974:non-virtual\20thunk\20to\20skgpu::ganesh::SmallPathAtlasMgr::evict\28skgpu::PlotLocator\29 7975:non-virtual\20thunk\20to\20skgpu::ganesh::AtlasPathRenderer::~AtlasPathRenderer\28\29.1 7976:non-virtual\20thunk\20to\20skgpu::ganesh::AtlasPathRenderer::~AtlasPathRenderer\28\29 7977:non-virtual\20thunk\20to\20skgpu::ganesh::AtlasPathRenderer::preFlush\28GrOnFlushResourceProvider*\29 7978:non-virtual\20thunk\20to\20icu_73::UnicodeSet::~UnicodeSet\28\29.1 7979:non-virtual\20thunk\20to\20icu_73::UnicodeSet::~UnicodeSet\28\29 7980:non-virtual\20thunk\20to\20icu_73::UnicodeSet::toPattern\28icu_73::UnicodeString&\2c\20signed\20char\29\20const 7981:non-virtual\20thunk\20to\20icu_73::UnicodeSet::matches\28icu_73::Replaceable\20const&\2c\20int&\2c\20int\2c\20signed\20char\29 7982:non-virtual\20thunk\20to\20icu_73::UnicodeSet::matchesIndexValue\28unsigned\20char\29\20const 7983:non-virtual\20thunk\20to\20icu_73::UnicodeSet::addMatchSetTo\28icu_73::UnicodeSet&\29\20const 7984:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::TransformedMaskSubRun::vertexStride\28SkMatrix\20const&\29\20const 7985:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::TransformedMaskSubRun::regenerateAtlas\28int\2c\20int\2c\20std::__2::function\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>\29\20const 7986:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::TransformedMaskSubRun::makeAtlasTextOp\28GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20skgpu::ganesh::SurfaceDrawContext*\29\20const 7987:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::TransformedMaskSubRun::instanceFlags\28\29\20const 7988:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::TransformedMaskSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 7989:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::SDFTSubRun::~SDFTSubRun\28\29.1 7990:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::SDFTSubRun::~SDFTSubRun\28\29 7991:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::SDFTSubRun::regenerateAtlas\28int\2c\20int\2c\20std::__2::function\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>\29\20const 7992:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::SDFTSubRun::makeAtlasTextOp\28GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20skgpu::ganesh::SurfaceDrawContext*\29\20const 7993:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::SDFTSubRun::glyphCount\28\29\20const 7994:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::SDFTSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 7995:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::vertexStride\28SkMatrix\20const&\29\20const 7996:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::regenerateAtlas\28int\2c\20int\2c\20std::__2::function\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>\29\20const 7997:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::makeAtlasTextOp\28GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20skgpu::ganesh::SurfaceDrawContext*\29\20const 7998:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::instanceFlags\28\29\20const 7999:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 8000:non-virtual\20thunk\20to\20GrTextureRenderTargetProxy::~GrTextureRenderTargetProxy\28\29.1 8001:non-virtual\20thunk\20to\20GrTextureRenderTargetProxy::~GrTextureRenderTargetProxy\28\29 8002:non-virtual\20thunk\20to\20GrTextureRenderTargetProxy::onUninstantiatedGpuMemorySize\28\29\20const 8003:non-virtual\20thunk\20to\20GrTextureRenderTargetProxy::instantiate\28GrResourceProvider*\29 8004:non-virtual\20thunk\20to\20GrTextureRenderTargetProxy::createSurface\28GrResourceProvider*\29\20const 8005:non-virtual\20thunk\20to\20GrTextureRenderTargetProxy::callbackDesc\28\29\20const 8006:non-virtual\20thunk\20to\20GrOpFlushState::~GrOpFlushState\28\29.1 8007:non-virtual\20thunk\20to\20GrOpFlushState::~GrOpFlushState\28\29 8008:non-virtual\20thunk\20to\20GrOpFlushState::writeView\28\29\20const 8009:non-virtual\20thunk\20to\20GrOpFlushState::usesMSAASurface\28\29\20const 8010:non-virtual\20thunk\20to\20GrOpFlushState::threadSafeCache\28\29\20const 8011:non-virtual\20thunk\20to\20GrOpFlushState::strikeCache\28\29\20const 8012:non-virtual\20thunk\20to\20GrOpFlushState::smallPathAtlasManager\28\29\20const 8013:non-virtual\20thunk\20to\20GrOpFlushState::sampledProxyArray\28\29 8014:non-virtual\20thunk\20to\20GrOpFlushState::rtProxy\28\29\20const 8015:non-virtual\20thunk\20to\20GrOpFlushState::resourceProvider\28\29\20const 8016:non-virtual\20thunk\20to\20GrOpFlushState::renderPassBarriers\28\29\20const 8017:non-virtual\20thunk\20to\20GrOpFlushState::recordDraw\28GrGeometryProcessor\20const*\2c\20GrSimpleMesh\20const*\2c\20int\2c\20GrSurfaceProxy\20const*\20const*\2c\20GrPrimitiveType\29 8018:non-virtual\20thunk\20to\20GrOpFlushState::putBackVertices\28int\2c\20unsigned\20long\29 8019:non-virtual\20thunk\20to\20GrOpFlushState::putBackIndirectDraws\28int\29 8020:non-virtual\20thunk\20to\20GrOpFlushState::putBackIndices\28int\29 8021:non-virtual\20thunk\20to\20GrOpFlushState::putBackIndexedIndirectDraws\28int\29 8022:non-virtual\20thunk\20to\20GrOpFlushState::makeVertexSpace\28unsigned\20long\2c\20int\2c\20sk_sp*\2c\20int*\29 8023:non-virtual\20thunk\20to\20GrOpFlushState::makeVertexSpaceAtLeast\28unsigned\20long\2c\20int\2c\20int\2c\20sk_sp*\2c\20int*\2c\20int*\29 8024:non-virtual\20thunk\20to\20GrOpFlushState::makeIndexSpace\28int\2c\20sk_sp*\2c\20int*\29 8025:non-virtual\20thunk\20to\20GrOpFlushState::makeIndexSpaceAtLeast\28int\2c\20int\2c\20sk_sp*\2c\20int*\2c\20int*\29 8026:non-virtual\20thunk\20to\20GrOpFlushState::makeDrawIndirectSpace\28int\2c\20sk_sp*\2c\20unsigned\20long*\29 8027:non-virtual\20thunk\20to\20GrOpFlushState::makeDrawIndexedIndirectSpace\28int\2c\20sk_sp*\2c\20unsigned\20long*\29 8028:non-virtual\20thunk\20to\20GrOpFlushState::dstProxyView\28\29\20const 8029:non-virtual\20thunk\20to\20GrOpFlushState::detachAppliedClip\28\29 8030:non-virtual\20thunk\20to\20GrOpFlushState::deferredUploadTarget\28\29 8031:non-virtual\20thunk\20to\20GrOpFlushState::colorLoadOp\28\29\20const 8032:non-virtual\20thunk\20to\20GrOpFlushState::caps\28\29\20const 8033:non-virtual\20thunk\20to\20GrOpFlushState::atlasManager\28\29\20const 8034:non-virtual\20thunk\20to\20GrOpFlushState::appliedClip\28\29\20const 8035:non-virtual\20thunk\20to\20GrGpuBuffer::~GrGpuBuffer\28\29 8036:non-virtual\20thunk\20to\20GrGpuBuffer::unref\28\29\20const 8037:non-virtual\20thunk\20to\20GrGpuBuffer::ref\28\29\20const 8038:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::~GrGLTextureRenderTarget\28\29.1 8039:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::~GrGLTextureRenderTarget\28\29 8040:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::onSetLabel\28\29 8041:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::onRelease\28\29 8042:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::onGpuMemorySize\28\29\20const 8043:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::onAbandon\28\29 8044:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 8045:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::backendFormat\28\29\20const 8046:non-virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::~GrGLSLFragmentShaderBuilder\28\29.1 8047:non-virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::~GrGLSLFragmentShaderBuilder\28\29 8048:non-virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::hasSecondaryOutput\28\29\20const 8049:non-virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::enableAdvancedBlendEquationIfNeeded\28skgpu::BlendEquation\29 8050:non-virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::dstColor\28\29 8051:non-virtual\20thunk\20to\20GrGLBuffer::~GrGLBuffer\28\29.1 8052:non-virtual\20thunk\20to\20GrGLBuffer::~GrGLBuffer\28\29 8053:new_color_map_2_quant 8054:new_color_map_1_quant 8055:merged_2v_upsample 8056:merged_1v_upsample 8057:locale_cleanup\28\29 8058:lin_srgb_to_oklab\28SkRGBA4f<\28SkAlphaType\292>\2c\20bool*\29 8059:lin_srgb_to_okhcl\28SkRGBA4f<\28SkAlphaType\292>\2c\20bool*\29 8060:legalstub$dynCall_vijjjii 8061:legalstub$dynCall_vijiii 8062:legalstub$dynCall_viji 8063:legalstub$dynCall_vij 8064:legalstub$dynCall_viijii 8065:legalstub$dynCall_viij 8066:legalstub$dynCall_viiij 8067:legalstub$dynCall_viiiiij 8068:legalstub$dynCall_jiji 8069:legalstub$dynCall_jiiiiji 8070:legalstub$dynCall_jiiiiii 8071:legalstub$dynCall_jii 8072:legalstub$dynCall_ji 8073:legalstub$dynCall_iijjiii 8074:legalstub$dynCall_iijj 8075:legalstub$dynCall_iiji 8076:legalstub$dynCall_iij 8077:legalstub$dynCall_iiiji 8078:legalstub$dynCall_iiij 8079:legalstub$dynCall_iiiij 8080:legalstub$dynCall_iiiiijj 8081:legalstub$dynCall_iiiiij 8082:legalstub$dynCall_iiiiiijj 8083:legalfunc$glWaitSync 8084:legalfunc$glClientWaitSync 8085:lcd_to_a8\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29 8086:layoutGetMaxValue\28IntProperty\20const&\2c\20UProperty\29 8087:jpeg_start_decompress 8088:jpeg_skip_scanlines 8089:jpeg_save_markers 8090:jpeg_resync_to_restart 8091:jpeg_read_scanlines 8092:jpeg_read_raw_data 8093:jpeg_read_header 8094:jpeg_idct_islow 8095:jpeg_idct_ifast 8096:jpeg_idct_float 8097:jpeg_idct_9x9 8098:jpeg_idct_7x7 8099:jpeg_idct_6x6 8100:jpeg_idct_5x5 8101:jpeg_idct_4x4 8102:jpeg_idct_3x3 8103:jpeg_idct_2x2 8104:jpeg_idct_1x1 8105:jpeg_idct_16x16 8106:jpeg_idct_15x15 8107:jpeg_idct_14x14 8108:jpeg_idct_13x13 8109:jpeg_idct_12x12 8110:jpeg_idct_11x11 8111:jpeg_idct_10x10 8112:jpeg_crop_scanline 8113:is_deleted_glyph\28hb_glyph_info_t\20const*\29 8114:isRegionalIndicator\28BinaryProperty\20const&\2c\20int\2c\20UProperty\29 8115:isPOSIX_xdigit\28BinaryProperty\20const&\2c\20int\2c\20UProperty\29 8116:isPOSIX_print\28BinaryProperty\20const&\2c\20int\2c\20UProperty\29 8117:isPOSIX_graph\28BinaryProperty\20const&\2c\20int\2c\20UProperty\29 8118:isPOSIX_blank\28BinaryProperty\20const&\2c\20int\2c\20UProperty\29 8119:isPOSIX_alnum\28BinaryProperty\20const&\2c\20int\2c\20UProperty\29 8120:isNormInert\28BinaryProperty\20const&\2c\20int\2c\20UProperty\29 8121:isMirrored\28BinaryProperty\20const&\2c\20int\2c\20UProperty\29 8122:isJoinControl\28BinaryProperty\20const&\2c\20int\2c\20UProperty\29 8123:isCanonSegmentStarter\28BinaryProperty\20const&\2c\20int\2c\20UProperty\29 8124:isBidiControl\28BinaryProperty\20const&\2c\20int\2c\20UProperty\29 8125:isAcceptable\28void*\2c\20char\20const*\2c\20char\20const*\2c\20UDataInfo\20const*\29 8126:int_upsample 8127:initial_reordering_indic\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 8128:icu_73::uprv_normalizer2_cleanup\28\29 8129:icu_73::uprv_loaded_normalizer2_cleanup\28\29 8130:icu_73::unames_cleanup\28\29 8131:icu_73::umtx_init\28\29 8132:icu_73::umtx_cleanup\28\29 8133:icu_73::sortComparator\28void\20const*\2c\20void\20const*\2c\20void\20const*\29 8134:icu_73::segmentStarterMapper\28void\20const*\2c\20unsigned\20int\29 8135:icu_73::isAcceptable\28void*\2c\20char\20const*\2c\20char\20const*\2c\20UDataInfo\20const*\29 8136:icu_73::compareElementStrings\28void\20const*\2c\20void\20const*\2c\20void\20const*\29 8137:icu_73::cacheDeleter\28void*\29 8138:icu_73::\28anonymous\20namespace\29::versionFilter\28int\2c\20void*\29 8139:icu_73::\28anonymous\20namespace\29::utf16_caseContextIterator\28void*\2c\20signed\20char\29 8140:icu_73::\28anonymous\20namespace\29::numericValueFilter\28int\2c\20void*\29 8141:icu_73::\28anonymous\20namespace\29::intPropertyFilter\28int\2c\20void*\29 8142:icu_73::\28anonymous\20namespace\29::emojiprops_cleanup\28\29 8143:icu_73::\28anonymous\20namespace\29::cleanupKnownCanonicalized\28\29 8144:icu_73::\28anonymous\20namespace\29::AliasReplacer::replace\28icu_73::Locale\20const&\2c\20icu_73::CharString&\2c\20UErrorCode&\29::$_1::__invoke\28void*\29 8145:icu_73::\28anonymous\20namespace\29::AliasData::cleanup\28\29 8146:icu_73::UnicodeString::~UnicodeString\28\29.1 8147:icu_73::UnicodeString::handleReplaceBetween\28int\2c\20int\2c\20icu_73::UnicodeString\20const&\29 8148:icu_73::UnicodeString::getLength\28\29\20const 8149:icu_73::UnicodeString::getDynamicClassID\28\29\20const 8150:icu_73::UnicodeString::getCharAt\28int\29\20const 8151:icu_73::UnicodeString::extractBetween\28int\2c\20int\2c\20icu_73::UnicodeString&\29\20const 8152:icu_73::UnicodeString::copy\28int\2c\20int\2c\20int\29 8153:icu_73::UnicodeString::clone\28\29\20const 8154:icu_73::UnicodeSet::~UnicodeSet\28\29.1 8155:icu_73::UnicodeSet::toPattern\28icu_73::UnicodeString&\2c\20signed\20char\29\20const 8156:icu_73::UnicodeSet::size\28\29\20const 8157:icu_73::UnicodeSet::retain\28int\2c\20int\29 8158:icu_73::UnicodeSet::operator==\28icu_73::UnicodeSet\20const&\29\20const 8159:icu_73::UnicodeSet::isEmpty\28\29\20const 8160:icu_73::UnicodeSet::hashCode\28\29\20const 8161:icu_73::UnicodeSet::getDynamicClassID\28\29\20const 8162:icu_73::UnicodeSet::contains\28int\2c\20int\29\20const 8163:icu_73::UnicodeSet::containsAll\28icu_73::UnicodeSet\20const&\29\20const 8164:icu_73::UnicodeSet::complement\28int\2c\20int\29 8165:icu_73::UnicodeSet::complementAll\28icu_73::UnicodeSet\20const&\29 8166:icu_73::UnicodeSet::addMatchSetTo\28icu_73::UnicodeSet&\29\20const 8167:icu_73::UnhandledEngine::~UnhandledEngine\28\29.1 8168:icu_73::UnhandledEngine::~UnhandledEngine\28\29 8169:icu_73::UnhandledEngine::handles\28int\29\20const 8170:icu_73::UnhandledEngine::handleCharacter\28int\29 8171:icu_73::UnhandledEngine::findBreaks\28UText*\2c\20int\2c\20int\2c\20icu_73::UVector32&\2c\20signed\20char\2c\20UErrorCode&\29\20const 8172:icu_73::UVector::~UVector\28\29.1 8173:icu_73::UVector::getDynamicClassID\28\29\20const 8174:icu_73::UVector32::~UVector32\28\29.1 8175:icu_73::UVector32::getDynamicClassID\28\29\20const 8176:icu_73::UStack::getDynamicClassID\28\29\20const 8177:icu_73::UCharsTrieBuilder::~UCharsTrieBuilder\28\29.1 8178:icu_73::UCharsTrieBuilder::~UCharsTrieBuilder\28\29 8179:icu_73::UCharsTrieBuilder::write\28int\29 8180:icu_73::UCharsTrieBuilder::writeValueAndType\28signed\20char\2c\20int\2c\20int\29 8181:icu_73::UCharsTrieBuilder::writeValueAndFinal\28int\2c\20signed\20char\29 8182:icu_73::UCharsTrieBuilder::writeElementUnits\28int\2c\20int\2c\20int\29 8183:icu_73::UCharsTrieBuilder::writeDeltaTo\28int\29 8184:icu_73::UCharsTrieBuilder::skipElementsBySomeUnits\28int\2c\20int\2c\20int\29\20const 8185:icu_73::UCharsTrieBuilder::indexOfElementWithNextUnit\28int\2c\20int\2c\20char16_t\29\20const 8186:icu_73::UCharsTrieBuilder::getMinLinearMatch\28\29\20const 8187:icu_73::UCharsTrieBuilder::getLimitOfLinearMatch\28int\2c\20int\2c\20int\29\20const 8188:icu_73::UCharsTrieBuilder::getElementValue\28int\29\20const 8189:icu_73::UCharsTrieBuilder::getElementUnit\28int\2c\20int\29\20const 8190:icu_73::UCharsTrieBuilder::getElementStringLength\28int\29\20const 8191:icu_73::UCharsTrieBuilder::createLinearMatchNode\28int\2c\20int\2c\20int\2c\20icu_73::StringTrieBuilder::Node*\29\20const 8192:icu_73::UCharsTrieBuilder::countElementUnits\28int\2c\20int\2c\20int\29\20const 8193:icu_73::UCharsTrieBuilder::UCTLinearMatchNode::write\28icu_73::StringTrieBuilder&\29 8194:icu_73::UCharsTrieBuilder::UCTLinearMatchNode::operator==\28icu_73::StringTrieBuilder::Node\20const&\29\20const 8195:icu_73::UCharsDictionaryMatcher::~UCharsDictionaryMatcher\28\29.1 8196:icu_73::UCharsDictionaryMatcher::~UCharsDictionaryMatcher\28\29 8197:icu_73::UCharsDictionaryMatcher::matches\28UText*\2c\20int\2c\20int\2c\20int*\2c\20int*\2c\20int*\2c\20int*\29\20const 8198:icu_73::UCharCharacterIterator::setIndex\28int\29 8199:icu_73::UCharCharacterIterator::setIndex32\28int\29 8200:icu_73::UCharCharacterIterator::previous\28\29 8201:icu_73::UCharCharacterIterator::previous32\28\29 8202:icu_73::UCharCharacterIterator::operator==\28icu_73::ForwardCharacterIterator\20const&\29\20const 8203:icu_73::UCharCharacterIterator::next\28\29 8204:icu_73::UCharCharacterIterator::nextPostInc\28\29 8205:icu_73::UCharCharacterIterator::next32\28\29 8206:icu_73::UCharCharacterIterator::next32PostInc\28\29 8207:icu_73::UCharCharacterIterator::move\28int\2c\20icu_73::CharacterIterator::EOrigin\29 8208:icu_73::UCharCharacterIterator::move32\28int\2c\20icu_73::CharacterIterator::EOrigin\29 8209:icu_73::UCharCharacterIterator::last\28\29 8210:icu_73::UCharCharacterIterator::last32\28\29 8211:icu_73::UCharCharacterIterator::hashCode\28\29\20const 8212:icu_73::UCharCharacterIterator::hasPrevious\28\29 8213:icu_73::UCharCharacterIterator::hasNext\28\29 8214:icu_73::UCharCharacterIterator::getText\28icu_73::UnicodeString&\29 8215:icu_73::UCharCharacterIterator::getDynamicClassID\28\29\20const 8216:icu_73::UCharCharacterIterator::first\28\29 8217:icu_73::UCharCharacterIterator::firstPostInc\28\29 8218:icu_73::UCharCharacterIterator::first32\28\29 8219:icu_73::UCharCharacterIterator::first32PostInc\28\29 8220:icu_73::UCharCharacterIterator::current\28\29\20const 8221:icu_73::UCharCharacterIterator::current32\28\29\20const 8222:icu_73::UCharCharacterIterator::clone\28\29\20const 8223:icu_73::ThaiBreakEngine::~ThaiBreakEngine\28\29.1 8224:icu_73::ThaiBreakEngine::~ThaiBreakEngine\28\29 8225:icu_73::ThaiBreakEngine::divideUpDictionaryRange\28UText*\2c\20int\2c\20int\2c\20icu_73::UVector32&\2c\20signed\20char\2c\20UErrorCode&\29\20const 8226:icu_73::StringTrieBuilder::SplitBranchNode::write\28icu_73::StringTrieBuilder&\29 8227:icu_73::StringTrieBuilder::SplitBranchNode::operator==\28icu_73::StringTrieBuilder::Node\20const&\29\20const 8228:icu_73::StringTrieBuilder::SplitBranchNode::markRightEdgesFirst\28int\29 8229:icu_73::StringTrieBuilder::Node::markRightEdgesFirst\28int\29 8230:icu_73::StringTrieBuilder::ListBranchNode::write\28icu_73::StringTrieBuilder&\29 8231:icu_73::StringTrieBuilder::ListBranchNode::operator==\28icu_73::StringTrieBuilder::Node\20const&\29\20const 8232:icu_73::StringTrieBuilder::ListBranchNode::markRightEdgesFirst\28int\29 8233:icu_73::StringTrieBuilder::IntermediateValueNode::write\28icu_73::StringTrieBuilder&\29 8234:icu_73::StringTrieBuilder::IntermediateValueNode::operator==\28icu_73::StringTrieBuilder::Node\20const&\29\20const 8235:icu_73::StringTrieBuilder::IntermediateValueNode::markRightEdgesFirst\28int\29 8236:icu_73::StringTrieBuilder::FinalValueNode::write\28icu_73::StringTrieBuilder&\29 8237:icu_73::StringTrieBuilder::FinalValueNode::operator==\28icu_73::StringTrieBuilder::Node\20const&\29\20const 8238:icu_73::StringTrieBuilder::BranchHeadNode::write\28icu_73::StringTrieBuilder&\29 8239:icu_73::StringEnumeration::unext\28int*\2c\20UErrorCode&\29 8240:icu_73::StringEnumeration::snext\28UErrorCode&\29 8241:icu_73::StringEnumeration::operator==\28icu_73::StringEnumeration\20const&\29\20const 8242:icu_73::StringEnumeration::operator!=\28icu_73::StringEnumeration\20const&\29\20const 8243:icu_73::StringEnumeration::next\28int*\2c\20UErrorCode&\29 8244:icu_73::SimpleLocaleKeyFactory::~SimpleLocaleKeyFactory\28\29.1 8245:icu_73::SimpleLocaleKeyFactory::~SimpleLocaleKeyFactory\28\29 8246:icu_73::SimpleLocaleKeyFactory::updateVisibleIDs\28icu_73::Hashtable&\2c\20UErrorCode&\29\20const 8247:icu_73::SimpleLocaleKeyFactory::getDynamicClassID\28\29\20const 8248:icu_73::SimpleLocaleKeyFactory::create\28icu_73::ICUServiceKey\20const&\2c\20icu_73::ICUService\20const*\2c\20UErrorCode&\29\20const 8249:icu_73::SimpleFilteredSentenceBreakIterator::~SimpleFilteredSentenceBreakIterator\28\29.1 8250:icu_73::SimpleFilteredSentenceBreakIterator::~SimpleFilteredSentenceBreakIterator\28\29 8251:icu_73::SimpleFilteredSentenceBreakIterator::setText\28icu_73::UnicodeString\20const&\29 8252:icu_73::SimpleFilteredSentenceBreakIterator::setText\28UText*\2c\20UErrorCode&\29 8253:icu_73::SimpleFilteredSentenceBreakIterator::refreshInputText\28UText*\2c\20UErrorCode&\29 8254:icu_73::SimpleFilteredSentenceBreakIterator::previous\28\29 8255:icu_73::SimpleFilteredSentenceBreakIterator::preceding\28int\29 8256:icu_73::SimpleFilteredSentenceBreakIterator::next\28int\29 8257:icu_73::SimpleFilteredSentenceBreakIterator::next\28\29 8258:icu_73::SimpleFilteredSentenceBreakIterator::last\28\29 8259:icu_73::SimpleFilteredSentenceBreakIterator::isBoundary\28int\29 8260:icu_73::SimpleFilteredSentenceBreakIterator::getUText\28UText*\2c\20UErrorCode&\29\20const 8261:icu_73::SimpleFilteredSentenceBreakIterator::getText\28\29\20const 8262:icu_73::SimpleFilteredSentenceBreakIterator::following\28int\29 8263:icu_73::SimpleFilteredSentenceBreakIterator::first\28\29 8264:icu_73::SimpleFilteredSentenceBreakIterator::current\28\29\20const 8265:icu_73::SimpleFilteredSentenceBreakIterator::createBufferClone\28void*\2c\20int&\2c\20UErrorCode&\29 8266:icu_73::SimpleFilteredSentenceBreakIterator::clone\28\29\20const 8267:icu_73::SimpleFilteredSentenceBreakIterator::adoptText\28icu_73::CharacterIterator*\29 8268:icu_73::SimpleFilteredSentenceBreakData::~SimpleFilteredSentenceBreakData\28\29.1 8269:icu_73::SimpleFilteredSentenceBreakData::~SimpleFilteredSentenceBreakData\28\29 8270:icu_73::SimpleFilteredBreakIteratorBuilder::~SimpleFilteredBreakIteratorBuilder\28\29.1 8271:icu_73::SimpleFilteredBreakIteratorBuilder::~SimpleFilteredBreakIteratorBuilder\28\29 8272:icu_73::SimpleFilteredBreakIteratorBuilder::unsuppressBreakAfter\28icu_73::UnicodeString\20const&\2c\20UErrorCode&\29 8273:icu_73::SimpleFilteredBreakIteratorBuilder::suppressBreakAfter\28icu_73::UnicodeString\20const&\2c\20UErrorCode&\29 8274:icu_73::SimpleFilteredBreakIteratorBuilder::build\28icu_73::BreakIterator*\2c\20UErrorCode&\29 8275:icu_73::SimpleFactory::~SimpleFactory\28\29.1 8276:icu_73::SimpleFactory::~SimpleFactory\28\29 8277:icu_73::SimpleFactory::updateVisibleIDs\28icu_73::Hashtable&\2c\20UErrorCode&\29\20const 8278:icu_73::SimpleFactory::getDynamicClassID\28\29\20const 8279:icu_73::SimpleFactory::getDisplayName\28icu_73::UnicodeString\20const&\2c\20icu_73::Locale\20const&\2c\20icu_73::UnicodeString&\29\20const 8280:icu_73::SimpleFactory::create\28icu_73::ICUServiceKey\20const&\2c\20icu_73::ICUService\20const*\2c\20UErrorCode&\29\20const 8281:icu_73::ServiceEnumeration::~ServiceEnumeration\28\29.1 8282:icu_73::ServiceEnumeration::~ServiceEnumeration\28\29 8283:icu_73::ServiceEnumeration::snext\28UErrorCode&\29 8284:icu_73::ServiceEnumeration::reset\28UErrorCode&\29 8285:icu_73::ServiceEnumeration::getDynamicClassID\28\29\20const 8286:icu_73::ServiceEnumeration::count\28UErrorCode&\29\20const 8287:icu_73::ServiceEnumeration::clone\28\29\20const 8288:icu_73::RuleBasedBreakIterator::~RuleBasedBreakIterator\28\29.1 8289:icu_73::RuleBasedBreakIterator::setText\28icu_73::UnicodeString\20const&\29 8290:icu_73::RuleBasedBreakIterator::setText\28UText*\2c\20UErrorCode&\29 8291:icu_73::RuleBasedBreakIterator::refreshInputText\28UText*\2c\20UErrorCode&\29 8292:icu_73::RuleBasedBreakIterator::previous\28\29 8293:icu_73::RuleBasedBreakIterator::preceding\28int\29 8294:icu_73::RuleBasedBreakIterator::operator==\28icu_73::BreakIterator\20const&\29\20const 8295:icu_73::RuleBasedBreakIterator::next\28int\29 8296:icu_73::RuleBasedBreakIterator::next\28\29 8297:icu_73::RuleBasedBreakIterator::last\28\29 8298:icu_73::RuleBasedBreakIterator::isBoundary\28int\29 8299:icu_73::RuleBasedBreakIterator::hashCode\28\29\20const 8300:icu_73::RuleBasedBreakIterator::getUText\28UText*\2c\20UErrorCode&\29\20const 8301:icu_73::RuleBasedBreakIterator::getText\28\29\20const 8302:icu_73::RuleBasedBreakIterator::getRules\28\29\20const 8303:icu_73::RuleBasedBreakIterator::getRuleStatus\28\29\20const 8304:icu_73::RuleBasedBreakIterator::getRuleStatusVec\28int*\2c\20int\2c\20UErrorCode&\29 8305:icu_73::RuleBasedBreakIterator::getDynamicClassID\28\29\20const 8306:icu_73::RuleBasedBreakIterator::getBinaryRules\28unsigned\20int&\29 8307:icu_73::RuleBasedBreakIterator::following\28int\29 8308:icu_73::RuleBasedBreakIterator::first\28\29 8309:icu_73::RuleBasedBreakIterator::current\28\29\20const 8310:icu_73::RuleBasedBreakIterator::createBufferClone\28void*\2c\20int&\2c\20UErrorCode&\29 8311:icu_73::RuleBasedBreakIterator::clone\28\29\20const 8312:icu_73::RuleBasedBreakIterator::adoptText\28icu_73::CharacterIterator*\29 8313:icu_73::RuleBasedBreakIterator::BreakCache::~BreakCache\28\29.1 8314:icu_73::RuleBasedBreakIterator::BreakCache::~BreakCache\28\29 8315:icu_73::ResourceDataValue::~ResourceDataValue\28\29.1 8316:icu_73::ResourceDataValue::isNoInheritanceMarker\28\29\20const 8317:icu_73::ResourceDataValue::getUInt\28UErrorCode&\29\20const 8318:icu_73::ResourceDataValue::getType\28\29\20const 8319:icu_73::ResourceDataValue::getTable\28UErrorCode&\29\20const 8320:icu_73::ResourceDataValue::getStringOrFirstOfArray\28UErrorCode&\29\20const 8321:icu_73::ResourceDataValue::getStringArray\28icu_73::UnicodeString*\2c\20int\2c\20UErrorCode&\29\20const 8322:icu_73::ResourceDataValue::getStringArrayOrStringAsArray\28icu_73::UnicodeString*\2c\20int\2c\20UErrorCode&\29\20const 8323:icu_73::ResourceDataValue::getInt\28UErrorCode&\29\20const 8324:icu_73::ResourceDataValue::getIntVector\28int&\2c\20UErrorCode&\29\20const 8325:icu_73::ResourceDataValue::getBinary\28int&\2c\20UErrorCode&\29\20const 8326:icu_73::ResourceDataValue::getAliasString\28int&\2c\20UErrorCode&\29\20const 8327:icu_73::ResourceBundle::~ResourceBundle\28\29.1 8328:icu_73::ResourceBundle::~ResourceBundle\28\29 8329:icu_73::ResourceBundle::getDynamicClassID\28\29\20const 8330:icu_73::ParsePosition::getDynamicClassID\28\29\20const 8331:icu_73::Normalizer2WithImpl::spanQuickCheckYes\28icu_73::UnicodeString\20const&\2c\20UErrorCode&\29\20const 8332:icu_73::Normalizer2WithImpl::normalize\28icu_73::UnicodeString\20const&\2c\20icu_73::UnicodeString&\2c\20UErrorCode&\29\20const 8333:icu_73::Normalizer2WithImpl::normalizeSecondAndAppend\28icu_73::UnicodeString&\2c\20icu_73::UnicodeString\20const&\2c\20UErrorCode&\29\20const 8334:icu_73::Normalizer2WithImpl::getRawDecomposition\28int\2c\20icu_73::UnicodeString&\29\20const 8335:icu_73::Normalizer2WithImpl::getDecomposition\28int\2c\20icu_73::UnicodeString&\29\20const 8336:icu_73::Normalizer2WithImpl::getCombiningClass\28int\29\20const 8337:icu_73::Normalizer2WithImpl::composePair\28int\2c\20int\29\20const 8338:icu_73::Normalizer2WithImpl::append\28icu_73::UnicodeString&\2c\20icu_73::UnicodeString\20const&\2c\20UErrorCode&\29\20const 8339:icu_73::Normalizer2Impl::~Normalizer2Impl\28\29.1 8340:icu_73::Normalizer2::normalizeUTF8\28unsigned\20int\2c\20icu_73::StringPiece\2c\20icu_73::ByteSink&\2c\20icu_73::Edits*\2c\20UErrorCode&\29\20const 8341:icu_73::Normalizer2::isNormalizedUTF8\28icu_73::StringPiece\2c\20UErrorCode&\29\20const 8342:icu_73::NoopNormalizer2::spanQuickCheckYes\28icu_73::UnicodeString\20const&\2c\20UErrorCode&\29\20const 8343:icu_73::NoopNormalizer2::normalize\28icu_73::UnicodeString\20const&\2c\20icu_73::UnicodeString&\2c\20UErrorCode&\29\20const 8344:icu_73::NoopNormalizer2::normalizeUTF8\28unsigned\20int\2c\20icu_73::StringPiece\2c\20icu_73::ByteSink&\2c\20icu_73::Edits*\2c\20UErrorCode&\29\20const 8345:icu_73::MlBreakEngine::~MlBreakEngine\28\29.1 8346:icu_73::LocaleKeyFactory::~LocaleKeyFactory\28\29.1 8347:icu_73::LocaleKeyFactory::updateVisibleIDs\28icu_73::Hashtable&\2c\20UErrorCode&\29\20const 8348:icu_73::LocaleKeyFactory::handlesKey\28icu_73::ICUServiceKey\20const&\2c\20UErrorCode&\29\20const 8349:icu_73::LocaleKeyFactory::getDynamicClassID\28\29\20const 8350:icu_73::LocaleKeyFactory::getDisplayName\28icu_73::UnicodeString\20const&\2c\20icu_73::Locale\20const&\2c\20icu_73::UnicodeString&\29\20const 8351:icu_73::LocaleKeyFactory::create\28icu_73::ICUServiceKey\20const&\2c\20icu_73::ICUService\20const*\2c\20UErrorCode&\29\20const 8352:icu_73::LocaleKey::~LocaleKey\28\29.1 8353:icu_73::LocaleKey::~LocaleKey\28\29 8354:icu_73::LocaleKey::prefix\28icu_73::UnicodeString&\29\20const 8355:icu_73::LocaleKey::isFallbackOf\28icu_73::UnicodeString\20const&\29\20const 8356:icu_73::LocaleKey::getDynamicClassID\28\29\20const 8357:icu_73::LocaleKey::fallback\28\29 8358:icu_73::LocaleKey::currentLocale\28icu_73::Locale&\29\20const 8359:icu_73::LocaleKey::currentID\28icu_73::UnicodeString&\29\20const 8360:icu_73::LocaleKey::currentDescriptor\28icu_73::UnicodeString&\29\20const 8361:icu_73::LocaleKey::canonicalLocale\28icu_73::Locale&\29\20const 8362:icu_73::LocaleKey::canonicalID\28icu_73::UnicodeString&\29\20const 8363:icu_73::LocaleBuilder::~LocaleBuilder\28\29.1 8364:icu_73::Locale::~Locale\28\29.1 8365:icu_73::Locale::getDynamicClassID\28\29\20const 8366:icu_73::LoadedNormalizer2Impl::~LoadedNormalizer2Impl\28\29.1 8367:icu_73::LoadedNormalizer2Impl::~LoadedNormalizer2Impl\28\29 8368:icu_73::LoadedNormalizer2Impl::isAcceptable\28void*\2c\20char\20const*\2c\20char\20const*\2c\20UDataInfo\20const*\29 8369:icu_73::LaoBreakEngine::~LaoBreakEngine\28\29.1 8370:icu_73::LaoBreakEngine::~LaoBreakEngine\28\29 8371:icu_73::LSTMBreakEngine::~LSTMBreakEngine\28\29.1 8372:icu_73::LSTMBreakEngine::~LSTMBreakEngine\28\29 8373:icu_73::LSTMBreakEngine::name\28\29\20const 8374:icu_73::LSTMBreakEngine::divideUpDictionaryRange\28UText*\2c\20int\2c\20int\2c\20icu_73::UVector32&\2c\20signed\20char\2c\20UErrorCode&\29\20const 8375:icu_73::KhmerBreakEngine::~KhmerBreakEngine\28\29.1 8376:icu_73::KhmerBreakEngine::~KhmerBreakEngine\28\29 8377:icu_73::KhmerBreakEngine::divideUpDictionaryRange\28UText*\2c\20int\2c\20int\2c\20icu_73::UVector32&\2c\20signed\20char\2c\20UErrorCode&\29\20const 8378:icu_73::KeywordEnumeration::~KeywordEnumeration\28\29.1 8379:icu_73::KeywordEnumeration::~KeywordEnumeration\28\29 8380:icu_73::KeywordEnumeration::snext\28UErrorCode&\29 8381:icu_73::KeywordEnumeration::reset\28UErrorCode&\29 8382:icu_73::KeywordEnumeration::next\28int*\2c\20UErrorCode&\29 8383:icu_73::KeywordEnumeration::getDynamicClassID\28\29\20const 8384:icu_73::KeywordEnumeration::count\28UErrorCode&\29\20const 8385:icu_73::KeywordEnumeration::clone\28\29\20const 8386:icu_73::ICUServiceKey::~ICUServiceKey\28\29.1 8387:icu_73::ICUServiceKey::isFallbackOf\28icu_73::UnicodeString\20const&\29\20const 8388:icu_73::ICUServiceKey::getDynamicClassID\28\29\20const 8389:icu_73::ICUServiceKey::currentDescriptor\28icu_73::UnicodeString&\29\20const 8390:icu_73::ICUServiceKey::canonicalID\28icu_73::UnicodeString&\29\20const 8391:icu_73::ICUService::unregister\28void\20const*\2c\20UErrorCode&\29 8392:icu_73::ICUService::reset\28\29 8393:icu_73::ICUService::registerInstance\28icu_73::UObject*\2c\20icu_73::UnicodeString\20const&\2c\20signed\20char\2c\20UErrorCode&\29 8394:icu_73::ICUService::registerFactory\28icu_73::ICUServiceFactory*\2c\20UErrorCode&\29 8395:icu_73::ICUService::reInitializeFactories\28\29 8396:icu_73::ICUService::notifyListener\28icu_73::EventListener&\29\20const 8397:icu_73::ICUService::isDefault\28\29\20const 8398:icu_73::ICUService::getKey\28icu_73::ICUServiceKey&\2c\20icu_73::UnicodeString*\2c\20UErrorCode&\29\20const 8399:icu_73::ICUService::createSimpleFactory\28icu_73::UObject*\2c\20icu_73::UnicodeString\20const&\2c\20signed\20char\2c\20UErrorCode&\29 8400:icu_73::ICUService::createKey\28icu_73::UnicodeString\20const*\2c\20UErrorCode&\29\20const 8401:icu_73::ICUService::clearCaches\28\29 8402:icu_73::ICUService::acceptsListener\28icu_73::EventListener\20const&\29\20const 8403:icu_73::ICUResourceBundleFactory::~ICUResourceBundleFactory\28\29.1 8404:icu_73::ICUResourceBundleFactory::handleCreate\28icu_73::Locale\20const&\2c\20int\2c\20icu_73::ICUService\20const*\2c\20UErrorCode&\29\20const 8405:icu_73::ICUResourceBundleFactory::getSupportedIDs\28UErrorCode&\29\20const 8406:icu_73::ICUResourceBundleFactory::getDynamicClassID\28\29\20const 8407:icu_73::ICUNotifier::removeListener\28icu_73::EventListener\20const*\2c\20UErrorCode&\29 8408:icu_73::ICUNotifier::notifyChanged\28\29 8409:icu_73::ICUNotifier::addListener\28icu_73::EventListener\20const*\2c\20UErrorCode&\29 8410:icu_73::ICULocaleService::registerInstance\28icu_73::UObject*\2c\20icu_73::UnicodeString\20const&\2c\20signed\20char\2c\20UErrorCode&\29 8411:icu_73::ICULocaleService::registerInstance\28icu_73::UObject*\2c\20icu_73::Locale\20const&\2c\20int\2c\20int\2c\20UErrorCode&\29 8412:icu_73::ICULocaleService::registerInstance\28icu_73::UObject*\2c\20icu_73::Locale\20const&\2c\20int\2c\20UErrorCode&\29 8413:icu_73::ICULocaleService::registerInstance\28icu_73::UObject*\2c\20icu_73::Locale\20const&\2c\20UErrorCode&\29 8414:icu_73::ICULocaleService::getAvailableLocales\28\29\20const 8415:icu_73::ICULocaleService::createKey\28icu_73::UnicodeString\20const*\2c\20int\2c\20UErrorCode&\29\20const 8416:icu_73::ICULocaleService::createKey\28icu_73::UnicodeString\20const*\2c\20UErrorCode&\29\20const 8417:icu_73::ICULanguageBreakFactory::~ICULanguageBreakFactory\28\29.1 8418:icu_73::ICULanguageBreakFactory::~ICULanguageBreakFactory\28\29 8419:icu_73::ICULanguageBreakFactory::loadEngineFor\28int\29 8420:icu_73::ICULanguageBreakFactory::loadDictionaryMatcherFor\28UScriptCode\29 8421:icu_73::ICULanguageBreakFactory::getEngineFor\28int\29 8422:icu_73::ICUBreakIteratorService::~ICUBreakIteratorService\28\29.1 8423:icu_73::ICUBreakIteratorService::~ICUBreakIteratorService\28\29 8424:icu_73::ICUBreakIteratorService::isDefault\28\29\20const 8425:icu_73::ICUBreakIteratorService::handleDefault\28icu_73::ICUServiceKey\20const&\2c\20icu_73::UnicodeString*\2c\20UErrorCode&\29\20const 8426:icu_73::ICUBreakIteratorService::cloneInstance\28icu_73::UObject*\29\20const 8427:icu_73::ICUBreakIteratorFactory::~ICUBreakIteratorFactory\28\29.1 8428:icu_73::ICUBreakIteratorFactory::~ICUBreakIteratorFactory\28\29 8429:icu_73::ICUBreakIteratorFactory::handleCreate\28icu_73::Locale\20const&\2c\20int\2c\20icu_73::ICUService\20const*\2c\20UErrorCode&\29\20const 8430:icu_73::GraphemeClusterVectorizer::vectorize\28UText*\2c\20int\2c\20int\2c\20icu_73::UVector32&\2c\20icu_73::UVector32&\2c\20UErrorCode&\29\20const 8431:icu_73::FCDNormalizer2::spanQuickCheckYes\28char16_t\20const*\2c\20char16_t\20const*\2c\20UErrorCode&\29\20const 8432:icu_73::FCDNormalizer2::normalize\28char16_t\20const*\2c\20char16_t\20const*\2c\20icu_73::ReorderingBuffer&\2c\20UErrorCode&\29\20const 8433:icu_73::FCDNormalizer2::normalizeAndAppend\28char16_t\20const*\2c\20char16_t\20const*\2c\20signed\20char\2c\20icu_73::UnicodeString&\2c\20icu_73::ReorderingBuffer&\2c\20UErrorCode&\29\20const 8434:icu_73::FCDNormalizer2::isInert\28int\29\20const 8435:icu_73::EmojiProps::isAcceptable\28void*\2c\20char\20const*\2c\20char\20const*\2c\20UDataInfo\20const*\29 8436:icu_73::DictionaryBreakEngine::setCharacters\28icu_73::UnicodeSet\20const&\29 8437:icu_73::DictionaryBreakEngine::handles\28int\29\20const 8438:icu_73::DictionaryBreakEngine::findBreaks\28UText*\2c\20int\2c\20int\2c\20icu_73::UVector32&\2c\20signed\20char\2c\20UErrorCode&\29\20const 8439:icu_73::DecomposeNormalizer2::spanQuickCheckYes\28char16_t\20const*\2c\20char16_t\20const*\2c\20UErrorCode&\29\20const 8440:icu_73::DecomposeNormalizer2::normalize\28char16_t\20const*\2c\20char16_t\20const*\2c\20icu_73::ReorderingBuffer&\2c\20UErrorCode&\29\20const 8441:icu_73::DecomposeNormalizer2::normalizeUTF8\28unsigned\20int\2c\20icu_73::StringPiece\2c\20icu_73::ByteSink&\2c\20icu_73::Edits*\2c\20UErrorCode&\29\20const 8442:icu_73::DecomposeNormalizer2::normalizeAndAppend\28char16_t\20const*\2c\20char16_t\20const*\2c\20signed\20char\2c\20icu_73::UnicodeString&\2c\20icu_73::ReorderingBuffer&\2c\20UErrorCode&\29\20const 8443:icu_73::DecomposeNormalizer2::isNormalizedUTF8\28icu_73::StringPiece\2c\20UErrorCode&\29\20const 8444:icu_73::DecomposeNormalizer2::isInert\28int\29\20const 8445:icu_73::DecomposeNormalizer2::getQuickCheck\28int\29\20const 8446:icu_73::ConstArray2D::get\28int\2c\20int\29\20const 8447:icu_73::ConstArray1D::get\28int\29\20const 8448:icu_73::ComposeNormalizer2::spanQuickCheckYes\28char16_t\20const*\2c\20char16_t\20const*\2c\20UErrorCode&\29\20const 8449:icu_73::ComposeNormalizer2::quickCheck\28icu_73::UnicodeString\20const&\2c\20UErrorCode&\29\20const 8450:icu_73::ComposeNormalizer2::normalize\28char16_t\20const*\2c\20char16_t\20const*\2c\20icu_73::ReorderingBuffer&\2c\20UErrorCode&\29\20const 8451:icu_73::ComposeNormalizer2::normalizeUTF8\28unsigned\20int\2c\20icu_73::StringPiece\2c\20icu_73::ByteSink&\2c\20icu_73::Edits*\2c\20UErrorCode&\29\20const 8452:icu_73::ComposeNormalizer2::normalizeAndAppend\28char16_t\20const*\2c\20char16_t\20const*\2c\20signed\20char\2c\20icu_73::UnicodeString&\2c\20icu_73::ReorderingBuffer&\2c\20UErrorCode&\29\20const 8453:icu_73::ComposeNormalizer2::isNormalized\28icu_73::UnicodeString\20const&\2c\20UErrorCode&\29\20const 8454:icu_73::ComposeNormalizer2::isNormalizedUTF8\28icu_73::StringPiece\2c\20UErrorCode&\29\20const 8455:icu_73::ComposeNormalizer2::isInert\28int\29\20const 8456:icu_73::ComposeNormalizer2::hasBoundaryBefore\28int\29\20const 8457:icu_73::ComposeNormalizer2::hasBoundaryAfter\28int\29\20const 8458:icu_73::ComposeNormalizer2::getQuickCheck\28int\29\20const 8459:icu_73::CodePointsVectorizer::vectorize\28UText*\2c\20int\2c\20int\2c\20icu_73::UVector32&\2c\20icu_73::UVector32&\2c\20UErrorCode&\29\20const 8460:icu_73::CjkBreakEngine::~CjkBreakEngine\28\29.1 8461:icu_73::CjkBreakEngine::divideUpDictionaryRange\28UText*\2c\20int\2c\20int\2c\20icu_73::UVector32&\2c\20signed\20char\2c\20UErrorCode&\29\20const 8462:icu_73::CheckedArrayByteSink::Reset\28\29 8463:icu_73::CheckedArrayByteSink::GetAppendBuffer\28int\2c\20int\2c\20char*\2c\20int\2c\20int*\29 8464:icu_73::CheckedArrayByteSink::Append\28char\20const*\2c\20int\29 8465:icu_73::CharacterIterator::firstPostInc\28\29 8466:icu_73::CharacterIterator::first32PostInc\28\29 8467:icu_73::CharStringByteSink::GetAppendBuffer\28int\2c\20int\2c\20char*\2c\20int\2c\20int*\29 8468:icu_73::CharStringByteSink::Append\28char\20const*\2c\20int\29 8469:icu_73::BytesDictionaryMatcher::~BytesDictionaryMatcher\28\29.1 8470:icu_73::BytesDictionaryMatcher::~BytesDictionaryMatcher\28\29 8471:icu_73::BytesDictionaryMatcher::matches\28UText*\2c\20int\2c\20int\2c\20int*\2c\20int*\2c\20int*\2c\20int*\29\20const 8472:icu_73::BurmeseBreakEngine::~BurmeseBreakEngine\28\29.1 8473:icu_73::BurmeseBreakEngine::~BurmeseBreakEngine\28\29 8474:icu_73::BreakIterator::getRuleStatusVec\28int*\2c\20int\2c\20UErrorCode&\29 8475:icu_73::BMPSet::contains\28int\29\20const 8476:icu_73::Array1D::~Array1D\28\29.1 8477:icu_73::Array1D::~Array1D\28\29 8478:icu_73::Array1D::get\28int\29\20const 8479:hit_compare_y\28SkOpRayHit\20const*\2c\20SkOpRayHit\20const*\29 8480:hit_compare_x\28SkOpRayHit\20const*\2c\20SkOpRayHit\20const*\29 8481:hb_unicode_script_nil\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20void*\29 8482:hb_unicode_general_category_nil\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20void*\29 8483:hb_ucd_script\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20void*\29 8484:hb_ucd_mirroring\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20void*\29 8485:hb_ucd_general_category\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20void*\29 8486:hb_ucd_decompose\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int*\2c\20void*\29 8487:hb_ucd_compose\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 8488:hb_ucd_combining_class\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20void*\29 8489:hb_syllabic_clear_var\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 8490:hb_paint_sweep_gradient_nil\28hb_paint_funcs_t*\2c\20void*\2c\20hb_color_line_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 8491:hb_paint_push_transform_nil\28hb_paint_funcs_t*\2c\20void*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 8492:hb_paint_push_clip_rectangle_nil\28hb_paint_funcs_t*\2c\20void*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 8493:hb_paint_image_nil\28hb_paint_funcs_t*\2c\20void*\2c\20hb_blob_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20float\2c\20hb_glyph_extents_t*\2c\20void*\29 8494:hb_paint_extents_push_transform\28hb_paint_funcs_t*\2c\20void*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 8495:hb_paint_extents_push_group\28hb_paint_funcs_t*\2c\20void*\2c\20void*\29 8496:hb_paint_extents_push_clip_rectangle\28hb_paint_funcs_t*\2c\20void*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 8497:hb_paint_extents_push_clip_glyph\28hb_paint_funcs_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_font_t*\2c\20void*\29 8498:hb_paint_extents_pop_transform\28hb_paint_funcs_t*\2c\20void*\2c\20void*\29 8499:hb_paint_extents_pop_group\28hb_paint_funcs_t*\2c\20void*\2c\20hb_paint_composite_mode_t\2c\20void*\29 8500:hb_paint_extents_pop_clip\28hb_paint_funcs_t*\2c\20void*\2c\20void*\29 8501:hb_paint_extents_paint_sweep_gradient\28hb_paint_funcs_t*\2c\20void*\2c\20hb_color_line_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 8502:hb_paint_extents_paint_image\28hb_paint_funcs_t*\2c\20void*\2c\20hb_blob_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20float\2c\20hb_glyph_extents_t*\2c\20void*\29 8503:hb_paint_extents_paint_color\28hb_paint_funcs_t*\2c\20void*\2c\20int\2c\20unsigned\20int\2c\20void*\29 8504:hb_outline_recording_pen_quadratic_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 8505:hb_outline_recording_pen_move_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20void*\29 8506:hb_outline_recording_pen_line_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20void*\29 8507:hb_outline_recording_pen_cubic_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 8508:hb_outline_recording_pen_close_path\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20void*\29 8509:hb_ot_paint_glyph\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_paint_funcs_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void*\29 8510:hb_ot_map_t::lookup_map_t::cmp\28void\20const*\2c\20void\20const*\29 8511:hb_ot_map_t::feature_map_t::cmp\28void\20const*\2c\20void\20const*\29 8512:hb_ot_map_builder_t::feature_info_t::cmp\28void\20const*\2c\20void\20const*\29 8513:hb_ot_get_variation_glyph\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 8514:hb_ot_get_nominal_glyphs\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int\2c\20void*\29 8515:hb_ot_get_nominal_glyph\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 8516:hb_ot_get_glyph_v_origin\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20void*\29 8517:hb_ot_get_glyph_v_advances\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20int*\2c\20unsigned\20int\2c\20void*\29 8518:hb_ot_get_glyph_name\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20char*\2c\20unsigned\20int\2c\20void*\29 8519:hb_ot_get_glyph_h_advances\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20int*\2c\20unsigned\20int\2c\20void*\29 8520:hb_ot_get_glyph_from_name\28hb_font_t*\2c\20void*\2c\20char\20const*\2c\20int\2c\20unsigned\20int*\2c\20void*\29 8521:hb_ot_get_glyph_extents\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_glyph_extents_t*\2c\20void*\29 8522:hb_ot_get_font_v_extents\28hb_font_t*\2c\20void*\2c\20hb_font_extents_t*\2c\20void*\29 8523:hb_ot_get_font_h_extents\28hb_font_t*\2c\20void*\2c\20hb_font_extents_t*\2c\20void*\29 8524:hb_ot_draw_glyph\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_draw_funcs_t*\2c\20void*\2c\20void*\29 8525:hb_font_paint_glyph_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_paint_funcs_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void*\29 8526:hb_font_get_variation_glyph_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 8527:hb_font_get_nominal_glyphs_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int\2c\20void*\29 8528:hb_font_get_nominal_glyph_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 8529:hb_font_get_nominal_glyph_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 8530:hb_font_get_glyph_v_origin_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20void*\29 8531:hb_font_get_glyph_v_origin_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20void*\29 8532:hb_font_get_glyph_v_kerning_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void*\29 8533:hb_font_get_glyph_v_advances_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20int*\2c\20unsigned\20int\2c\20void*\29 8534:hb_font_get_glyph_v_advance_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20void*\29 8535:hb_font_get_glyph_v_advance_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20void*\29 8536:hb_font_get_glyph_name_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20char*\2c\20unsigned\20int\2c\20void*\29 8537:hb_font_get_glyph_name_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20char*\2c\20unsigned\20int\2c\20void*\29 8538:hb_font_get_glyph_h_origin_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20void*\29 8539:hb_font_get_glyph_h_origin_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20void*\29 8540:hb_font_get_glyph_h_kerning_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void*\29 8541:hb_font_get_glyph_h_advances_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20int*\2c\20unsigned\20int\2c\20void*\29 8542:hb_font_get_glyph_h_advance_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20void*\29 8543:hb_font_get_glyph_h_advance_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20void*\29 8544:hb_font_get_glyph_from_name_default\28hb_font_t*\2c\20void*\2c\20char\20const*\2c\20int\2c\20unsigned\20int*\2c\20void*\29 8545:hb_font_get_glyph_extents_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_glyph_extents_t*\2c\20void*\29 8546:hb_font_get_glyph_extents_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_glyph_extents_t*\2c\20void*\29 8547:hb_font_get_glyph_contour_point_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20void*\29 8548:hb_font_get_glyph_contour_point_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20void*\29 8549:hb_font_get_font_v_extents_default\28hb_font_t*\2c\20void*\2c\20hb_font_extents_t*\2c\20void*\29 8550:hb_font_get_font_h_extents_default\28hb_font_t*\2c\20void*\2c\20hb_font_extents_t*\2c\20void*\29 8551:hb_font_draw_glyph_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_draw_funcs_t*\2c\20void*\2c\20void*\29 8552:hb_draw_quadratic_to_nil\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 8553:hb_draw_quadratic_to_default\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 8554:hb_draw_move_to_default\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20void*\29 8555:hb_draw_line_to_default\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20void*\29 8556:hb_draw_extents_quadratic_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 8557:hb_draw_extents_cubic_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 8558:hb_draw_cubic_to_default\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 8559:hb_draw_close_path_default\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20void*\29 8560:hb_blob_t*\20hb_sanitize_context_t::sanitize_blob\28hb_blob_t*\29 8561:hb_aat_map_builder_t::feature_info_t::cmp\28void\20const*\2c\20void\20const*\29 8562:hb_aat_map_builder_t::feature_event_t::cmp\28void\20const*\2c\20void\20const*\29 8563:hashStringTrieNode\28UElement\29 8564:hashEntry\28UElement\29 8565:hasFullCompositionExclusion\28BinaryProperty\20const&\2c\20int\2c\20UProperty\29 8566:hasEmojiProperty\28BinaryProperty\20const&\2c\20int\2c\20UProperty\29 8567:h2v2_upsample 8568:h2v2_merged_upsample_565D 8569:h2v2_merged_upsample_565 8570:h2v2_merged_upsample 8571:h2v2_fancy_upsample 8572:h2v1_upsample 8573:h2v1_merged_upsample_565D 8574:h2v1_merged_upsample_565 8575:h2v1_merged_upsample 8576:h2v1_fancy_upsample 8577:grayscale_convert 8578:gray_rgb_convert 8579:gray_rgb565_convert 8580:gray_rgb565D_convert 8581:gray_raster_render 8582:gray_raster_new 8583:gray_raster_done 8584:gray_move_to 8585:gray_line_to 8586:gray_cubic_to 8587:gray_conic_to 8588:get_sk_marker_list\28jpeg_decompress_struct*\29 8589:get_sfnt_table 8590:get_interesting_appn 8591:getVo\28IntProperty\20const&\2c\20int\2c\20UProperty\29 8592:getTrailCombiningClass\28IntProperty\20const&\2c\20int\2c\20UProperty\29 8593:getScript\28IntProperty\20const&\2c\20int\2c\20UProperty\29 8594:getNumericType\28IntProperty\20const&\2c\20int\2c\20UProperty\29 8595:getNormQuickCheck\28IntProperty\20const&\2c\20int\2c\20UProperty\29 8596:getLeadCombiningClass\28IntProperty\20const&\2c\20int\2c\20UProperty\29 8597:getJoiningType\28IntProperty\20const&\2c\20int\2c\20UProperty\29 8598:getJoiningGroup\28IntProperty\20const&\2c\20int\2c\20UProperty\29 8599:getInSC\28IntProperty\20const&\2c\20int\2c\20UProperty\29 8600:getInPC\28IntProperty\20const&\2c\20int\2c\20UProperty\29 8601:getHangulSyllableType\28IntProperty\20const&\2c\20int\2c\20UProperty\29 8602:getGeneralCategory\28IntProperty\20const&\2c\20int\2c\20UProperty\29 8603:getCombiningClass\28IntProperty\20const&\2c\20int\2c\20UProperty\29 8604:getBiDiPairedBracketType\28IntProperty\20const&\2c\20int\2c\20UProperty\29 8605:getBiDiClass\28IntProperty\20const&\2c\20int\2c\20UProperty\29 8606:fullsize_upsample 8607:ft_smooth_transform 8608:ft_smooth_set_mode 8609:ft_smooth_render 8610:ft_smooth_overlap_spans 8611:ft_smooth_lcd_spans 8612:ft_smooth_init 8613:ft_smooth_get_cbox 8614:ft_gzip_free 8615:ft_gzip_alloc 8616:ft_ansi_stream_io 8617:ft_ansi_stream_close 8618:fquad_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 8619:format_message 8620:fmt_fp 8621:fline_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 8622:first_axis_intersection\28double\20const*\2c\20bool\2c\20double\2c\20double*\29 8623:finish_pass1 8624:finish_output_pass 8625:finish_input_pass 8626:final_reordering_indic\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 8627:fcubic_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 8628:fconic_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 8629:fast_swizzle_rgba_to_rgba_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 8630:fast_swizzle_rgba_to_bgra_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 8631:fast_swizzle_rgba_to_bgra_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 8632:fast_swizzle_rgb_to_rgba\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 8633:fast_swizzle_rgb_to_bgra\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 8634:fast_swizzle_grayalpha_to_n32_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 8635:fast_swizzle_grayalpha_to_n32_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 8636:fast_swizzle_gray_to_n32\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 8637:fast_swizzle_cmyk_to_rgba\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 8638:fast_swizzle_cmyk_to_bgra\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 8639:error_exit 8640:error_callback 8641:equalStringTrieNodes\28UElement\2c\20UElement\29 8642:emscripten::internal::MethodInvoker\20const&\2c\20float\2c\20float\2c\20SkPaint\20const&\29\2c\20void\2c\20SkCanvas*\2c\20sk_sp\20const&\2c\20float\2c\20float\2c\20SkPaint\20const&>::invoke\28void\20\28SkCanvas::*\20const&\29\28sk_sp\20const&\2c\20float\2c\20float\2c\20SkPaint\20const&\29\2c\20SkCanvas*\2c\20sk_sp*\2c\20float\2c\20float\2c\20SkPaint*\29 8643:emscripten::internal::MethodInvoker::invoke\28void\20\28SkCanvas::*\20const&\29\28float\2c\20float\2c\20float\2c\20float\2c\20SkPaint\20const&\29\2c\20SkCanvas*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20SkPaint*\29 8644:emscripten::internal::MethodInvoker::invoke\28void\20\28SkCanvas::*\20const&\29\28float\2c\20float\2c\20float\2c\20SkPaint\20const&\29\2c\20SkCanvas*\2c\20float\2c\20float\2c\20float\2c\20SkPaint*\29 8645:emscripten::internal::MethodInvoker::invoke\28void\20\28SkCanvas::*\20const&\29\28float\2c\20float\2c\20float\29\2c\20SkCanvas*\2c\20float\2c\20float\2c\20float\29 8646:emscripten::internal::MethodInvoker::invoke\28void\20\28SkCanvas::*\20const&\29\28float\2c\20float\29\2c\20SkCanvas*\2c\20float\2c\20float\29 8647:emscripten::internal::MethodInvoker::invoke\28void\20\28SkCanvas::*\20const&\29\28SkPath\20const&\2c\20SkPaint\20const&\29\2c\20SkCanvas*\2c\20SkPath*\2c\20SkPaint*\29 8648:emscripten::internal::MethodInvoker\20\28skia::textlayout::Paragraph::*\29\28unsigned\20int\29\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::Paragraph*\2c\20unsigned\20int>::invoke\28skia::textlayout::SkRange\20\28skia::textlayout::Paragraph::*\20const&\29\28unsigned\20int\29\2c\20skia::textlayout::Paragraph*\2c\20unsigned\20int\29 8649:emscripten::internal::MethodInvoker::invoke\28skia::textlayout::PositionWithAffinity\20\28skia::textlayout::Paragraph::*\20const&\29\28float\2c\20float\29\2c\20skia::textlayout::Paragraph*\2c\20float\2c\20float\29 8650:emscripten::internal::MethodInvoker::invoke\28int\20\28skia::textlayout::Paragraph::*\20const&\29\28unsigned\20long\29\20const\2c\20skia::textlayout::Paragraph\20const*\2c\20unsigned\20long\29 8651:emscripten::internal::MethodInvoker::invoke\28bool\20\28SkPath::*\20const&\29\28float\2c\20float\29\20const\2c\20SkPath\20const*\2c\20float\2c\20float\29 8652:emscripten::internal::MethodInvoker::invoke\28SkPath&\20\28SkPath::*\20const&\29\28bool\29\2c\20SkPath*\2c\20bool\29 8653:emscripten::internal::Invoker::invoke\28void\20\28*\29\28unsigned\20long\2c\20unsigned\20long\29\2c\20unsigned\20long\2c\20unsigned\20long\29 8654:emscripten::internal::Invoker::invoke\28void\20\28*\29\28emscripten::val\29\2c\20emscripten::_EM_VAL*\29 8655:emscripten::internal::Invoker::invoke\28unsigned\20long\20\28*\29\28unsigned\20long\29\2c\20unsigned\20long\29 8656:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFont\20const&>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFont\20const&\29\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFont*\29 8657:emscripten::internal::Invoker\2c\20sk_sp\2c\20int\2c\20int\2c\20sk_sp\2c\20int\2c\20int>::invoke\28sk_sp\20\28*\29\28sk_sp\2c\20int\2c\20int\2c\20sk_sp\2c\20int\2c\20int\29\2c\20sk_sp*\2c\20int\2c\20int\2c\20sk_sp*\2c\20int\2c\20int\29 8658:emscripten::internal::Invoker\2c\20sk_sp\2c\20int\2c\20int\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28sk_sp\2c\20int\2c\20int\2c\20sk_sp\29\2c\20sk_sp*\2c\20int\2c\20int\2c\20sk_sp*\29 8659:emscripten::internal::Invoker\2c\20sk_sp\2c\20int\2c\20int>::invoke\28sk_sp\20\28*\29\28sk_sp\2c\20int\2c\20int\29\2c\20sk_sp*\2c\20int\2c\20int\29 8660:emscripten::internal::Invoker\2c\20sk_sp\2c\20SimpleImageInfo>::invoke\28sk_sp\20\28*\29\28sk_sp\2c\20SimpleImageInfo\29\2c\20sk_sp*\2c\20SimpleImageInfo*\29 8661:emscripten::internal::Invoker\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long>::invoke\28sk_sp\20\28*\29\28SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\29\2c\20SimpleImageInfo*\2c\20unsigned\20long\2c\20unsigned\20long\29 8662:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp\29\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp*\29 8663:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20sk_sp\29\2c\20unsigned\20long\2c\20sk_sp*\29 8664:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp\29\2c\20unsigned\20long\2c\20float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp*\29 8665:emscripten::internal::Invoker\2c\20float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20float\2c\20float\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20float\2c\20float\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp\29\2c\20float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20float\2c\20float\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp*\29 8666:emscripten::internal::Invoker\2c\20float\2c\20float\2c\20int\2c\20float\2c\20int\2c\20int>::invoke\28sk_sp\20\28*\29\28float\2c\20float\2c\20int\2c\20float\2c\20int\2c\20int\29\2c\20float\2c\20float\2c\20int\2c\20float\2c\20int\2c\20int\29 8667:emscripten::internal::Invoker\2c\20float\2c\20float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28float\2c\20float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp\29\2c\20float\2c\20float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp*\29 8668:emscripten::internal::Invoker\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20emscripten::val>::invoke\28sk_sp\20\28*\29\28std::__2::basic_string\2c\20std::__2::allocator>\2c\20emscripten::val\29\2c\20emscripten::internal::BindingType\2c\20std::__2::allocator>\2c\20void>::'unnamed'*\2c\20emscripten::_EM_VAL*\29 8669:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20int\2c\20float>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20int\2c\20float\29\2c\20unsigned\20long\2c\20int\2c\20float\29 8670:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20SkPath>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20SkPath\29\2c\20unsigned\20long\2c\20SkPath*\29 8671:emscripten::internal::Invoker\2c\20float\2c\20unsigned\20long>::invoke\28sk_sp\20\28*\29\28float\2c\20unsigned\20long\29\2c\20float\2c\20unsigned\20long\29 8672:emscripten::internal::Invoker\2c\20float\2c\20float\2c\20unsigned\20int>::invoke\28sk_sp\20\28*\29\28float\2c\20float\2c\20unsigned\20int\29\2c\20float\2c\20float\2c\20unsigned\20int\29 8673:emscripten::internal::Invoker\2c\20float>::invoke\28sk_sp\20\28*\29\28float\29\2c\20float\29 8674:emscripten::internal::Invoker\2c\20SkPath\20const&\2c\20float\2c\20float\2c\20SkPath1DPathEffect::Style>::invoke\28sk_sp\20\28*\29\28SkPath\20const&\2c\20float\2c\20float\2c\20SkPath1DPathEffect::Style\29\2c\20SkPath*\2c\20float\2c\20float\2c\20SkPath1DPathEffect::Style\29 8675:emscripten::internal::Invoker\2c\20SkBlurStyle\2c\20float\2c\20bool>::invoke\28sk_sp\20\28*\29\28SkBlurStyle\2c\20float\2c\20bool\29\2c\20SkBlurStyle\2c\20float\2c\20bool\29 8676:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20float\2c\20float\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20float\2c\20float\2c\20sk_sp\29\2c\20unsigned\20long\2c\20float\2c\20float\2c\20sk_sp*\29 8677:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20sk_sp\29\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20sk_sp*\29 8678:emscripten::internal::Invoker\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28sk_sp\29\2c\20sk_sp*\29 8679:emscripten::internal::Invoker\2c\20sk_sp\2c\20float\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long>::invoke\28sk_sp\20\28*\29\28sk_sp\2c\20float\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\29\2c\20sk_sp*\2c\20float\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\29 8680:emscripten::internal::Invoker\2c\20sk_sp\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20unsigned\20long\2c\20unsigned\20long>::invoke\28sk_sp\20\28*\29\28sk_sp\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20unsigned\20long\2c\20unsigned\20long\29\2c\20sk_sp*\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20unsigned\20long\2c\20unsigned\20long\29 8681:emscripten::internal::Invoker\2c\20float\2c\20float\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28float\2c\20float\2c\20sk_sp\29\2c\20float\2c\20float\2c\20sk_sp*\29 8682:emscripten::internal::Invoker\2c\20float\2c\20float\2c\20float\2c\20float\2c\20unsigned\20long\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28float\2c\20float\2c\20float\2c\20float\2c\20unsigned\20long\2c\20sk_sp\29\2c\20float\2c\20float\2c\20float\2c\20float\2c\20unsigned\20long\2c\20sk_sp*\29 8683:emscripten::internal::Invoker\2c\20float\2c\20float\2c\20SkTileMode\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28float\2c\20float\2c\20SkTileMode\2c\20sk_sp\29\2c\20float\2c\20float\2c\20SkTileMode\2c\20sk_sp*\29 8684:emscripten::internal::Invoker\2c\20SkColorChannel\2c\20SkColorChannel\2c\20float\2c\20sk_sp\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28SkColorChannel\2c\20SkColorChannel\2c\20float\2c\20sk_sp\2c\20sk_sp\29\2c\20SkColorChannel\2c\20SkColorChannel\2c\20float\2c\20sk_sp*\2c\20sk_sp*\29 8685:emscripten::internal::Invoker\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long>::invoke\28sk_sp\20\28*\29\28SimpleImageInfo\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long\29\2c\20SimpleImageInfo*\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long\29 8686:emscripten::internal::Invoker\2c\20SimpleImageInfo\2c\20emscripten::val>::invoke\28sk_sp\20\28*\29\28SimpleImageInfo\2c\20emscripten::val\29\2c\20SimpleImageInfo*\2c\20emscripten::_EM_VAL*\29 8687:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20SkBlendMode\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20SkBlendMode\2c\20sk_sp\29\2c\20unsigned\20long\2c\20SkBlendMode\2c\20sk_sp*\29 8688:emscripten::internal::Invoker\2c\20sk_sp\20const&\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28sk_sp\20const&\2c\20sk_sp\29\2c\20sk_sp*\2c\20sk_sp*\29 8689:emscripten::internal::Invoker\2c\20float\2c\20sk_sp\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28float\2c\20sk_sp\2c\20sk_sp\29\2c\20float\2c\20sk_sp*\2c\20sk_sp*\29 8690:emscripten::internal::Invoker::invoke\28emscripten::val\20\28*\29\28unsigned\20long\2c\20int\29\2c\20unsigned\20long\2c\20int\29 8691:emscripten::internal::Invoker\2c\20std::__2::allocator>>::invoke\28emscripten::val\20\28*\29\28std::__2::basic_string\2c\20std::__2::allocator>\29\2c\20emscripten::internal::BindingType\2c\20std::__2::allocator>\2c\20void>::'unnamed'*\29 8692:emscripten::internal::Invoker::invoke\28emscripten::val\20\28*\29\28emscripten::val\2c\20emscripten::val\2c\20float\29\2c\20emscripten::_EM_VAL*\2c\20emscripten::_EM_VAL*\2c\20float\29 8693:emscripten::internal::Invoker::invoke\28emscripten::val\20\28*\29\28SkPath\20const&\2c\20SkPath\20const&\2c\20float\29\2c\20SkPath*\2c\20SkPath*\2c\20float\29 8694:emscripten::internal::Invoker::invoke\28emscripten::val\20\28*\29\28SkPath\20const&\2c\20SkPath\20const&\2c\20SkPathOp\29\2c\20SkPath*\2c\20SkPath*\2c\20SkPathOp\29 8695:emscripten::internal::Invoker::invoke\28bool\20\28*\29\28unsigned\20long\2c\20SkPath\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20unsigned\20int\2c\20unsigned\20long\29\2c\20unsigned\20long\2c\20SkPath*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20unsigned\20int\2c\20unsigned\20long\29 8696:emscripten::internal::Invoker\2c\20sk_sp>::invoke\28bool\20\28*\29\28sk_sp\2c\20sk_sp\29\2c\20sk_sp*\2c\20sk_sp*\29 8697:emscripten::internal::Invoker::invoke\28bool\20\28*\29\28SkPath\20const&\2c\20SkPath\20const&\29\2c\20SkPath*\2c\20SkPath*\29 8698:emscripten::internal::Invoker::invoke\28SkVertices::Builder*\20\28*\29\28SkVertices::VertexMode&&\2c\20int&&\2c\20int&&\2c\20unsigned\20int&&\29\2c\20SkVertices::VertexMode\2c\20int\2c\20int\2c\20unsigned\20int\29 8699:emscripten::internal::Invoker\2c\20int\2c\20int>::invoke\28SkRuntimeEffect::TracedShader\20\28*\29\28sk_sp\2c\20int\2c\20int\29\2c\20sk_sp*\2c\20int\2c\20int\29 8700:emscripten::internal::Invoker::invoke\28SkPath\20\28*\29\28unsigned\20long\2c\20int\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long\2c\20int\29\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long\2c\20int\29 8701:emscripten::internal::Invoker&&\2c\20float&&\2c\20float&&\2c\20float&&>::invoke\28SkFont*\20\28*\29\28sk_sp&&\2c\20float&&\2c\20float&&\2c\20float&&\29\2c\20sk_sp*\2c\20float\2c\20float\2c\20float\29 8702:emscripten::internal::Invoker&&\2c\20float&&>::invoke\28SkFont*\20\28*\29\28sk_sp&&\2c\20float&&\29\2c\20sk_sp*\2c\20float\29 8703:emscripten::internal::Invoker&&>::invoke\28SkFont*\20\28*\29\28sk_sp&&\29\2c\20sk_sp*\29 8704:emscripten::internal::Invoker::invoke\28SkContourMeasureIter*\20\28*\29\28SkPath\20const&\2c\20bool&&\2c\20float&&\29\2c\20SkPath*\2c\20bool\2c\20float\29 8705:emscripten::internal::Invoker::invoke\28SkCanvas*\20\28*\29\28float&&\2c\20float&&\29\2c\20float\2c\20float\29 8706:emscripten::internal::FunctionInvoker\2c\20unsigned\20long\29\2c\20void\2c\20skia::textlayout::TypefaceFontProvider&\2c\20sk_sp\2c\20unsigned\20long>::invoke\28void\20\28**\29\28skia::textlayout::TypefaceFontProvider&\2c\20sk_sp\2c\20unsigned\20long\29\2c\20skia::textlayout::TypefaceFontProvider*\2c\20sk_sp*\2c\20unsigned\20long\29 8707:emscripten::internal::FunctionInvoker\2c\20std::__2::allocator>\29\2c\20void\2c\20skia::textlayout::ParagraphBuilderImpl&\2c\20std::__2::basic_string\2c\20std::__2::allocator>>::invoke\28void\20\28**\29\28skia::textlayout::ParagraphBuilderImpl&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29\2c\20skia::textlayout::ParagraphBuilderImpl*\2c\20emscripten::internal::BindingType\2c\20std::__2::allocator>\2c\20void>::'unnamed'*\29 8708:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28skia::textlayout::ParagraphBuilderImpl&\2c\20float\2c\20float\2c\20skia::textlayout::PlaceholderAlignment\2c\20skia::textlayout::TextBaseline\2c\20float\29\2c\20skia::textlayout::ParagraphBuilderImpl*\2c\20float\2c\20float\2c\20skia::textlayout::PlaceholderAlignment\2c\20skia::textlayout::TextBaseline\2c\20float\29 8709:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28skia::textlayout::ParagraphBuilderImpl&\2c\20SimpleTextStyle\2c\20SkPaint\2c\20SkPaint\29\2c\20skia::textlayout::ParagraphBuilderImpl*\2c\20SimpleTextStyle*\2c\20SkPaint*\2c\20SkPaint*\29 8710:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28skia::textlayout::ParagraphBuilderImpl&\2c\20SimpleTextStyle\29\2c\20skia::textlayout::ParagraphBuilderImpl*\2c\20SimpleTextStyle*\29 8711:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29\2c\20SkPath*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 8712:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29\2c\20SkPath*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 8713:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29\2c\20SkPath*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 8714:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20bool\2c\20bool\2c\20float\2c\20float\29\2c\20SkPath*\2c\20float\2c\20float\2c\20float\2c\20bool\2c\20bool\2c\20float\2c\20float\29 8715:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20bool\29\2c\20SkPath*\2c\20float\2c\20float\2c\20float\2c\20bool\29 8716:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkPath&\2c\20SkPath\20const&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20bool\29\2c\20SkPath*\2c\20SkPath*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20bool\29 8717:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkContourMeasure&\2c\20float\2c\20unsigned\20long\29\2c\20SkContourMeasure*\2c\20float\2c\20unsigned\20long\29 8718:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkCanvas&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkFont\20const&\2c\20SkPaint\20const&\29\2c\20SkCanvas*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkFont*\2c\20SkPaint*\29 8719:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkCanvas&\2c\20unsigned\20long\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29\2c\20SkCanvas*\2c\20unsigned\20long\2c\20float\2c\20float\2c\20bool\2c\20SkPaint*\29 8720:emscripten::internal::FunctionInvoker\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20SkBlendMode\2c\20float\2c\20float\2c\20SkPaint\20const*\29\2c\20void\2c\20SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20SkBlendMode\2c\20float\2c\20float\2c\20SkPaint\20const*>::invoke\28void\20\28**\29\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20SkBlendMode\2c\20float\2c\20float\2c\20SkPaint\20const*\29\2c\20SkCanvas*\2c\20sk_sp*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20SkBlendMode\2c\20float\2c\20float\2c\20SkPaint\20const*\29 8721:emscripten::internal::FunctionInvoker\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkPaint\20const*\29\2c\20void\2c\20SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkPaint\20const*>::invoke\28void\20\28**\29\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkPaint\20const*\29\2c\20SkCanvas*\2c\20sk_sp*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkPaint\20const*\29 8722:emscripten::internal::FunctionInvoker\20const&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20SkPaint\20const*\29\2c\20void\2c\20SkCanvas&\2c\20sk_sp\20const&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20SkPaint\20const*>::invoke\28void\20\28**\29\28SkCanvas&\2c\20sk_sp\20const&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20SkPaint\20const*\29\2c\20SkCanvas*\2c\20sk_sp*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20SkPaint\20const*\29 8723:emscripten::internal::FunctionInvoker\20const&\2c\20float\2c\20float\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29\2c\20void\2c\20SkCanvas&\2c\20sk_sp\20const&\2c\20float\2c\20float\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*>::invoke\28void\20\28**\29\28SkCanvas&\2c\20sk_sp\20const&\2c\20float\2c\20float\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29\2c\20SkCanvas*\2c\20sk_sp*\2c\20float\2c\20float\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29 8724:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkCanvas&\2c\20int\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkFont\20const&\2c\20SkPaint\20const&\29\2c\20SkCanvas*\2c\20int\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkFont*\2c\20SkPaint*\29 8725:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkCanvas&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20SkPaint\20const&\29\2c\20SkCanvas*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20SkPaint*\29 8726:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkCanvas&\2c\20SkPath\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20int\29\2c\20SkCanvas*\2c\20SkPath*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20int\29 8727:emscripten::internal::FunctionInvoker\2c\20std::__2::allocator>\20\28*\29\28SkSL::DebugTrace&\29\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20SkSL::DebugTrace&>::invoke\28std::__2::basic_string\2c\20std::__2::allocator>\20\28**\29\28SkSL::DebugTrace&\29\2c\20SkSL::DebugTrace*\29 8728:emscripten::internal::FunctionInvoker\20\28*\29\28SkFontMgr&\2c\20unsigned\20long\2c\20int\29\2c\20sk_sp\2c\20SkFontMgr&\2c\20unsigned\20long\2c\20int>::invoke\28sk_sp\20\28**\29\28SkFontMgr&\2c\20unsigned\20long\2c\20int\29\2c\20SkFontMgr*\2c\20unsigned\20long\2c\20int\29 8729:emscripten::internal::FunctionInvoker\20\28*\29\28SkFontMgr&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20emscripten::val\29\2c\20sk_sp\2c\20SkFontMgr&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20emscripten::val>::invoke\28sk_sp\20\28**\29\28SkFontMgr&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20emscripten::val\29\2c\20SkFontMgr*\2c\20emscripten::internal::BindingType\2c\20std::__2::allocator>\2c\20void>::'unnamed'*\2c\20emscripten::_EM_VAL*\29 8730:emscripten::internal::FunctionInvoker\20\28*\29\28sk_sp\2c\20SkTileMode\2c\20SkTileMode\2c\20float\2c\20float\2c\20unsigned\20long\29\2c\20sk_sp\2c\20sk_sp\2c\20SkTileMode\2c\20SkTileMode\2c\20float\2c\20float\2c\20unsigned\20long>::invoke\28sk_sp\20\28**\29\28sk_sp\2c\20SkTileMode\2c\20SkTileMode\2c\20float\2c\20float\2c\20unsigned\20long\29\2c\20sk_sp*\2c\20SkTileMode\2c\20SkTileMode\2c\20float\2c\20float\2c\20unsigned\20long\29 8731:emscripten::internal::FunctionInvoker\20\28*\29\28sk_sp\2c\20SkTileMode\2c\20SkTileMode\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20unsigned\20long\29\2c\20sk_sp\2c\20sk_sp\2c\20SkTileMode\2c\20SkTileMode\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20unsigned\20long>::invoke\28sk_sp\20\28**\29\28sk_sp\2c\20SkTileMode\2c\20SkTileMode\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20unsigned\20long\29\2c\20sk_sp*\2c\20SkTileMode\2c\20SkTileMode\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20unsigned\20long\29 8732:emscripten::internal::FunctionInvoker\20\28*\29\28SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29\2c\20sk_sp\2c\20SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long>::invoke\28sk_sp\20\28**\29\28SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29\2c\20SkRuntimeEffect*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29 8733:emscripten::internal::FunctionInvoker\20\28*\29\28SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\29\2c\20sk_sp\2c\20SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long>::invoke\28sk_sp\20\28**\29\28SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\29\2c\20SkRuntimeEffect*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\29 8734:emscripten::internal::FunctionInvoker\20\28*\29\28SkPicture&\2c\20SkTileMode\2c\20SkTileMode\2c\20SkFilterMode\2c\20unsigned\20long\2c\20unsigned\20long\29\2c\20sk_sp\2c\20SkPicture&\2c\20SkTileMode\2c\20SkTileMode\2c\20SkFilterMode\2c\20unsigned\20long\2c\20unsigned\20long>::invoke\28sk_sp\20\28**\29\28SkPicture&\2c\20SkTileMode\2c\20SkTileMode\2c\20SkFilterMode\2c\20unsigned\20long\2c\20unsigned\20long\29\2c\20SkPicture*\2c\20SkTileMode\2c\20SkTileMode\2c\20SkFilterMode\2c\20unsigned\20long\2c\20unsigned\20long\29 8735:emscripten::internal::FunctionInvoker\20\28*\29\28SkPictureRecorder&\29\2c\20sk_sp\2c\20SkPictureRecorder&>::invoke\28sk_sp\20\28**\29\28SkPictureRecorder&\29\2c\20SkPictureRecorder*\29 8736:emscripten::internal::FunctionInvoker\20\28*\29\28SkSurface&\2c\20unsigned\20long\29\2c\20sk_sp\2c\20SkSurface&\2c\20unsigned\20long>::invoke\28sk_sp\20\28**\29\28SkSurface&\2c\20unsigned\20long\29\2c\20SkSurface*\2c\20unsigned\20long\29 8737:emscripten::internal::FunctionInvoker\20\28*\29\28SkSurface&\2c\20unsigned\20int\2c\20unsigned\20int\2c\20SimpleImageInfo\29\2c\20sk_sp\2c\20SkSurface&\2c\20unsigned\20int\2c\20unsigned\20int\2c\20SimpleImageInfo>::invoke\28sk_sp\20\28**\29\28SkSurface&\2c\20unsigned\20int\2c\20unsigned\20int\2c\20SimpleImageInfo\29\2c\20SkSurface*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20SimpleImageInfo*\29 8738:emscripten::internal::FunctionInvoker\20\28*\29\28SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\29\2c\20sk_sp\2c\20SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool>::invoke\28sk_sp\20\28**\29\28SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\29\2c\20SkRuntimeEffect*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\29 8739:emscripten::internal::FunctionInvoker::invoke\28int\20\28**\29\28SkCanvas&\2c\20SkPaint\29\2c\20SkCanvas*\2c\20SkPaint*\29 8740:emscripten::internal::FunctionInvoker::invoke\28emscripten::val\20\28**\29\28skia::textlayout::Paragraph&\2c\20unsigned\20int\2c\20unsigned\20int\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\29\2c\20skia::textlayout::Paragraph*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\29 8741:emscripten::internal::FunctionInvoker::invoke\28emscripten::val\20\28**\29\28skia::textlayout::Paragraph&\2c\20float\2c\20float\29\2c\20skia::textlayout::Paragraph*\2c\20float\2c\20float\29 8742:emscripten::internal::FunctionInvoker\2c\20SkEncodedImageFormat\2c\20int\2c\20GrDirectContext*\29\2c\20emscripten::val\2c\20sk_sp\2c\20SkEncodedImageFormat\2c\20int\2c\20GrDirectContext*>::invoke\28emscripten::val\20\28**\29\28sk_sp\2c\20SkEncodedImageFormat\2c\20int\2c\20GrDirectContext*\29\2c\20sk_sp*\2c\20SkEncodedImageFormat\2c\20int\2c\20GrDirectContext*\29 8743:emscripten::internal::FunctionInvoker\2c\20SkEncodedImageFormat\2c\20int\29\2c\20emscripten::val\2c\20sk_sp\2c\20SkEncodedImageFormat\2c\20int>::invoke\28emscripten::val\20\28**\29\28sk_sp\2c\20SkEncodedImageFormat\2c\20int\29\2c\20sk_sp*\2c\20SkEncodedImageFormat\2c\20int\29 8744:emscripten::internal::FunctionInvoker\29\2c\20emscripten::val\2c\20sk_sp>::invoke\28emscripten::val\20\28**\29\28sk_sp\29\2c\20sk_sp*\29 8745:emscripten::internal::FunctionInvoker::invoke\28emscripten::val\20\28**\29\28SkFont&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20float\2c\20float\29\2c\20SkFont*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20float\2c\20float\29 8746:emscripten::internal::FunctionInvoker\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\2c\20GrDirectContext*\29\2c\20bool\2c\20sk_sp\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\2c\20GrDirectContext*>::invoke\28bool\20\28**\29\28sk_sp\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\2c\20GrDirectContext*\29\2c\20sk_sp*\2c\20SimpleImageInfo*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\2c\20GrDirectContext*\29 8747:emscripten::internal::FunctionInvoker\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\29\2c\20bool\2c\20sk_sp\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int>::invoke\28bool\20\28**\29\28sk_sp\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\29\2c\20sk_sp*\2c\20SimpleImageInfo*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\29 8748:emscripten::internal::FunctionInvoker::invoke\28bool\20\28**\29\28SkPath&\2c\20float\2c\20float\2c\20float\29\2c\20SkPath*\2c\20float\2c\20float\2c\20float\29 8749:emscripten::internal::FunctionInvoker::invoke\28bool\20\28**\29\28SkPath&\2c\20float\2c\20float\2c\20bool\29\2c\20SkPath*\2c\20float\2c\20float\2c\20bool\29 8750:emscripten::internal::FunctionInvoker::invoke\28bool\20\28**\29\28SkPath&\2c\20StrokeOpts\29\2c\20SkPath*\2c\20StrokeOpts*\29 8751:emscripten::internal::FunctionInvoker::invoke\28bool\20\28**\29\28SkCanvas&\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\29\2c\20SkCanvas*\2c\20SimpleImageInfo*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\29 8752:emscripten::internal::FunctionInvoker::invoke\28SkPath\20\28**\29\28SkPath\20const&\29\2c\20SkPath*\29 8753:emscripten::internal::FunctionInvoker::invoke\28SkPath\20\28**\29\28SkContourMeasure&\2c\20float\2c\20float\2c\20bool\29\2c\20SkContourMeasure*\2c\20float\2c\20float\2c\20bool\29 8754:emscripten::internal::FunctionInvoker::invoke\28SkPaint\20\28**\29\28SkPaint\20const&\29\2c\20SkPaint*\29 8755:emscripten::internal::FunctionInvoker::invoke\28SimpleImageInfo\20\28**\29\28SkSurface&\29\2c\20SkSurface*\29 8756:emscripten::internal::FunctionInvoker::invoke\28RuntimeEffectUniform\20\28**\29\28SkRuntimeEffect&\2c\20int\29\2c\20SkRuntimeEffect*\2c\20int\29 8757:emit_message 8758:embind_init_Skia\28\29::$_9::__invoke\28SkAnimatedImage&\29 8759:embind_init_Skia\28\29::$_99::__invoke\28SkPath&\2c\20unsigned\20long\2c\20bool\29 8760:embind_init_Skia\28\29::$_98::__invoke\28SkPath&\2c\20unsigned\20long\2c\20int\2c\20bool\29 8761:embind_init_Skia\28\29::$_97::__invoke\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20bool\29 8762:embind_init_Skia\28\29::$_96::__invoke\28SkPath&\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20int\29 8763:embind_init_Skia\28\29::$_95::__invoke\28SkPath&\2c\20unsigned\20long\2c\20float\2c\20float\29 8764:embind_init_Skia\28\29::$_94::__invoke\28unsigned\20long\2c\20SkPath\29 8765:embind_init_Skia\28\29::$_93::__invoke\28float\2c\20unsigned\20long\29 8766:embind_init_Skia\28\29::$_92::__invoke\28unsigned\20long\2c\20int\2c\20float\29 8767:embind_init_Skia\28\29::$_91::__invoke\28\29 8768:embind_init_Skia\28\29::$_90::__invoke\28\29 8769:embind_init_Skia\28\29::$_8::__invoke\28emscripten::val\29 8770:embind_init_Skia\28\29::$_89::__invoke\28sk_sp\2c\20sk_sp\29 8771:embind_init_Skia\28\29::$_88::__invoke\28SkPaint&\2c\20unsigned\20int\2c\20sk_sp\29 8772:embind_init_Skia\28\29::$_87::__invoke\28SkPaint&\2c\20unsigned\20int\29 8773:embind_init_Skia\28\29::$_86::__invoke\28SkPaint&\2c\20unsigned\20long\2c\20sk_sp\29 8774:embind_init_Skia\28\29::$_85::__invoke\28SkPaint&\2c\20unsigned\20long\29 8775:embind_init_Skia\28\29::$_84::__invoke\28SkPaint\20const&\29 8776:embind_init_Skia\28\29::$_83::__invoke\28SkBlurStyle\2c\20float\2c\20bool\29 8777:embind_init_Skia\28\29::$_82::__invoke\28float\2c\20float\2c\20sk_sp\29 8778:embind_init_Skia\28\29::$_81::__invoke\28unsigned\20long\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20sk_sp\29 8779:embind_init_Skia\28\29::$_80::__invoke\28unsigned\20long\2c\20float\2c\20float\2c\20sk_sp\29 8780:embind_init_Skia\28\29::$_7::__invoke\28GrDirectContext&\2c\20unsigned\20long\29 8781:embind_init_Skia\28\29::$_79::__invoke\28sk_sp\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20unsigned\20long\2c\20unsigned\20long\29 8782:embind_init_Skia\28\29::$_78::__invoke\28sk_sp\2c\20float\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\29 8783:embind_init_Skia\28\29::$_77::__invoke\28float\2c\20float\2c\20sk_sp\29 8784:embind_init_Skia\28\29::$_76::__invoke\28float\2c\20float\2c\20float\2c\20float\2c\20unsigned\20long\2c\20sk_sp\29 8785:embind_init_Skia\28\29::$_75::__invoke\28float\2c\20float\2c\20float\2c\20float\2c\20unsigned\20long\2c\20sk_sp\29 8786:embind_init_Skia\28\29::$_74::__invoke\28sk_sp\29 8787:embind_init_Skia\28\29::$_73::__invoke\28SkColorChannel\2c\20SkColorChannel\2c\20float\2c\20sk_sp\2c\20sk_sp\29 8788:embind_init_Skia\28\29::$_72::__invoke\28float\2c\20float\2c\20sk_sp\29 8789:embind_init_Skia\28\29::$_71::__invoke\28sk_sp\2c\20sk_sp\29 8790:embind_init_Skia\28\29::$_70::__invoke\28float\2c\20float\2c\20SkTileMode\2c\20sk_sp\29 8791:embind_init_Skia\28\29::$_6::__invoke\28GrDirectContext&\29 8792:embind_init_Skia\28\29::$_69::__invoke\28SkBlendMode\2c\20sk_sp\2c\20sk_sp\29 8793:embind_init_Skia\28\29::$_68::__invoke\28SkImageFilter\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29 8794:embind_init_Skia\28\29::$_67::__invoke\28sk_sp\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\29 8795:embind_init_Skia\28\29::$_66::__invoke\28sk_sp\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\2c\20GrDirectContext*\29 8796:embind_init_Skia\28\29::$_65::__invoke\28sk_sp\2c\20SkTileMode\2c\20SkTileMode\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20unsigned\20long\29 8797:embind_init_Skia\28\29::$_64::__invoke\28sk_sp\2c\20SkTileMode\2c\20SkTileMode\2c\20float\2c\20float\2c\20unsigned\20long\29 8798:embind_init_Skia\28\29::$_63::__invoke\28sk_sp\29 8799:embind_init_Skia\28\29::$_62::__invoke\28sk_sp\2c\20SkEncodedImageFormat\2c\20int\2c\20GrDirectContext*\29 8800:embind_init_Skia\28\29::$_61::__invoke\28sk_sp\2c\20SkEncodedImageFormat\2c\20int\29 8801:embind_init_Skia\28\29::$_60::__invoke\28sk_sp\29 8802:embind_init_Skia\28\29::$_5::__invoke\28GrDirectContext&\29 8803:embind_init_Skia\28\29::$_59::__invoke\28sk_sp\29 8804:embind_init_Skia\28\29::$_58::__invoke\28SkFontMgr&\2c\20unsigned\20long\2c\20int\29 8805:embind_init_Skia\28\29::$_57::__invoke\28SkFontMgr&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20emscripten::val\29 8806:embind_init_Skia\28\29::$_56::__invoke\28SkFontMgr&\2c\20int\29 8807:embind_init_Skia\28\29::$_55::__invoke\28unsigned\20long\2c\20unsigned\20long\2c\20int\29 8808:embind_init_Skia\28\29::$_54::__invoke\28SkFont&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20float\2c\20float\29 8809:embind_init_Skia\28\29::$_53::__invoke\28SkFont&\29 8810:embind_init_Skia\28\29::$_52::__invoke\28SkFont&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29 8811:embind_init_Skia\28\29::$_51::__invoke\28SkFont&\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkPaint*\29 8812:embind_init_Skia\28\29::$_50::__invoke\28SkContourMeasure&\2c\20float\2c\20float\2c\20bool\29 8813:embind_init_Skia\28\29::$_4::__invoke\28unsigned\20long\2c\20unsigned\20long\29 8814:embind_init_Skia\28\29::$_49::__invoke\28SkContourMeasure&\2c\20float\2c\20unsigned\20long\29 8815:embind_init_Skia\28\29::$_48::__invoke\28unsigned\20long\29 8816:embind_init_Skia\28\29::$_47::__invoke\28unsigned\20long\2c\20SkBlendMode\2c\20sk_sp\29 8817:embind_init_Skia\28\29::$_46::__invoke\28SkCanvas&\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\29 8818:embind_init_Skia\28\29::$_45::__invoke\28SkCanvas&\2c\20SkPaint\29 8819:embind_init_Skia\28\29::$_44::__invoke\28SkCanvas&\2c\20SkPaint\20const*\2c\20unsigned\20long\2c\20SkImageFilter\20const*\2c\20unsigned\20int\29 8820:embind_init_Skia\28\29::$_43::__invoke\28SkCanvas&\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\29 8821:embind_init_Skia\28\29::$_42::__invoke\28SkCanvas&\2c\20SimpleImageInfo\29 8822:embind_init_Skia\28\29::$_41::__invoke\28SkCanvas\20const&\2c\20unsigned\20long\29 8823:embind_init_Skia\28\29::$_40::__invoke\28SkCanvas\20const&\2c\20unsigned\20long\29 8824:embind_init_Skia\28\29::$_3::__invoke\28unsigned\20long\2c\20SkPath\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20unsigned\20int\2c\20unsigned\20long\29 8825:embind_init_Skia\28\29::$_39::__invoke\28SkCanvas\20const&\2c\20unsigned\20long\29 8826:embind_init_Skia\28\29::$_38::__invoke\28SkCanvas&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkFont\20const&\2c\20SkPaint\20const&\29 8827:embind_init_Skia\28\29::$_37::__invoke\28SkCanvas&\2c\20SkPath\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20int\29 8828:embind_init_Skia\28\29::$_36::__invoke\28SkCanvas&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20SkPaint\20const&\29 8829:embind_init_Skia\28\29::$_35::__invoke\28SkCanvas&\2c\20unsigned\20long\2c\20SkPaint\20const&\29 8830:embind_init_Skia\28\29::$_34::__invoke\28SkCanvas&\2c\20unsigned\20long\2c\20SkPaint\20const&\29 8831:embind_init_Skia\28\29::$_33::__invoke\28SkCanvas&\2c\20SkCanvas::PointMode\2c\20unsigned\20long\2c\20int\2c\20SkPaint&\29 8832:embind_init_Skia\28\29::$_32::__invoke\28SkCanvas&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkBlendMode\2c\20SkPaint\20const&\29 8833:embind_init_Skia\28\29::$_31::__invoke\28SkCanvas&\2c\20skia::textlayout::Paragraph*\2c\20float\2c\20float\29 8834:embind_init_Skia\28\29::$_30::__invoke\28SkCanvas&\2c\20unsigned\20long\2c\20SkPaint\20const&\29 8835:embind_init_Skia\28\29::$_2::__invoke\28SimpleImageInfo\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long\29 8836:embind_init_Skia\28\29::$_29::__invoke\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29 8837:embind_init_Skia\28\29::$_28::__invoke\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkPaint\20const*\29 8838:embind_init_Skia\28\29::$_27::__invoke\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkPaint\20const*\2c\20bool\29 8839:embind_init_Skia\28\29::$_26::__invoke\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkPaint\20const*\29 8840:embind_init_Skia\28\29::$_25::__invoke\28SkCanvas&\2c\20sk_sp\20const&\2c\20float\2c\20float\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29 8841:embind_init_Skia\28\29::$_24::__invoke\28SkCanvas&\2c\20sk_sp\20const&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20SkPaint\20const*\29 8842:embind_init_Skia\28\29::$_23::__invoke\28SkCanvas&\2c\20sk_sp\20const&\2c\20float\2c\20float\2c\20SkPaint\20const*\29 8843:embind_init_Skia\28\29::$_22::__invoke\28SkCanvas&\2c\20int\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkFont\20const&\2c\20SkPaint\20const&\29 8844:embind_init_Skia\28\29::$_21::__invoke\28SkCanvas&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkPaint\20const&\29 8845:embind_init_Skia\28\29::$_20::__invoke\28SkCanvas&\2c\20unsigned\20int\2c\20SkBlendMode\29 8846:embind_init_Skia\28\29::$_1::__invoke\28unsigned\20long\2c\20unsigned\20long\29 8847:embind_init_Skia\28\29::$_19::__invoke\28SkCanvas&\2c\20unsigned\20long\2c\20SkBlendMode\29 8848:embind_init_Skia\28\29::$_18::__invoke\28SkCanvas&\2c\20unsigned\20long\29 8849:embind_init_Skia\28\29::$_17::__invoke\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20SkBlendMode\2c\20float\2c\20float\2c\20SkPaint\20const*\29 8850:embind_init_Skia\28\29::$_16::__invoke\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20SkBlendMode\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29 8851:embind_init_Skia\28\29::$_15::__invoke\28SkCanvas&\2c\20unsigned\20long\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 8852:embind_init_Skia\28\29::$_14::__invoke\28SkCanvas&\2c\20unsigned\20long\29 8853:embind_init_Skia\28\29::$_148::__invoke\28SkVertices::Builder&\29 8854:embind_init_Skia\28\29::$_147::__invoke\28SkVertices::Builder&\29 8855:embind_init_Skia\28\29::$_146::__invoke\28SkVertices::Builder&\29 8856:embind_init_Skia\28\29::$_145::__invoke\28SkVertices::Builder&\29 8857:embind_init_Skia\28\29::$_144::__invoke\28SkVertices&\2c\20unsigned\20long\29 8858:embind_init_Skia\28\29::$_143::__invoke\28SkTypeface&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29 8859:embind_init_Skia\28\29::$_142::__invoke\28unsigned\20long\2c\20int\29 8860:embind_init_Skia\28\29::$_141::__invoke\28\29 8861:embind_init_Skia\28\29::$_140::__invoke\28unsigned\20long\2c\20unsigned\20long\2c\20SkFont\20const&\29 8862:embind_init_Skia\28\29::$_13::__invoke\28SkCanvas&\2c\20unsigned\20long\2c\20SkClipOp\2c\20bool\29 8863:embind_init_Skia\28\29::$_139::__invoke\28unsigned\20long\2c\20unsigned\20long\2c\20SkFont\20const&\29 8864:embind_init_Skia\28\29::$_138::__invoke\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFont\20const&\29 8865:embind_init_Skia\28\29::$_137::__invoke\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFont\20const&\29 8866:embind_init_Skia\28\29::$_136::__invoke\28SkSurface&\29 8867:embind_init_Skia\28\29::$_135::__invoke\28SkSurface&\29 8868:embind_init_Skia\28\29::$_134::__invoke\28SkSurface&\29 8869:embind_init_Skia\28\29::$_133::__invoke\28SkSurface&\2c\20SimpleImageInfo\29 8870:embind_init_Skia\28\29::$_132::__invoke\28SkSurface&\2c\20unsigned\20long\29 8871:embind_init_Skia\28\29::$_131::__invoke\28SkSurface&\2c\20unsigned\20int\2c\20unsigned\20int\2c\20SimpleImageInfo\29 8872:embind_init_Skia\28\29::$_130::__invoke\28SkSurface&\29 8873:embind_init_Skia\28\29::$_12::__invoke\28SkCanvas&\2c\20unsigned\20long\2c\20SkClipOp\2c\20bool\29 8874:embind_init_Skia\28\29::$_129::__invoke\28SkSurface&\29 8875:embind_init_Skia\28\29::$_128::__invoke\28SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\29 8876:embind_init_Skia\28\29::$_127::__invoke\28SkRuntimeEffect&\2c\20int\29 8877:embind_init_Skia\28\29::$_126::__invoke\28SkRuntimeEffect&\2c\20int\29 8878:embind_init_Skia\28\29::$_125::__invoke\28SkRuntimeEffect&\29 8879:embind_init_Skia\28\29::$_124::__invoke\28SkRuntimeEffect&\29 8880:embind_init_Skia\28\29::$_123::__invoke\28SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\29 8881:embind_init_Skia\28\29::$_122::__invoke\28SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29 8882:embind_init_Skia\28\29::$_121::__invoke\28SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\29 8883:embind_init_Skia\28\29::$_120::__invoke\28sk_sp\2c\20int\2c\20int\29 8884:embind_init_Skia\28\29::$_11::__invoke\28SkCanvas&\2c\20unsigned\20long\29 8885:embind_init_Skia\28\29::$_119::__invoke\28std::__2::basic_string\2c\20std::__2::allocator>\2c\20emscripten::val\29 8886:embind_init_Skia\28\29::$_118::__invoke\28std::__2::basic_string\2c\20std::__2::allocator>\2c\20emscripten::val\29 8887:embind_init_Skia\28\29::$_117::__invoke\28SkSL::DebugTrace&\29 8888:embind_init_Skia\28\29::$_116::__invoke\28unsigned\20long\2c\20float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp\29 8889:embind_init_Skia\28\29::$_115::__invoke\28float\2c\20float\2c\20int\2c\20float\2c\20int\2c\20int\29 8890:embind_init_Skia\28\29::$_114::__invoke\28float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20float\2c\20float\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp\29 8891:embind_init_Skia\28\29::$_113::__invoke\28float\2c\20float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp\29 8892:embind_init_Skia\28\29::$_112::__invoke\28unsigned\20long\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp\29 8893:embind_init_Skia\28\29::$_111::__invoke\28float\2c\20float\2c\20int\2c\20float\2c\20int\2c\20int\29 8894:embind_init_Skia\28\29::$_110::__invoke\28unsigned\20long\2c\20sk_sp\29 8895:embind_init_Skia\28\29::$_10::__invoke\28SkAnimatedImage&\29 8896:embind_init_Skia\28\29::$_109::operator\28\29\28SkPicture&\29\20const::'lambda'\28SkImage*\2c\20void*\29::__invoke\28SkImage*\2c\20void*\29 8897:embind_init_Skia\28\29::$_109::__invoke\28SkPicture&\29 8898:embind_init_Skia\28\29::$_108::__invoke\28SkPicture&\2c\20unsigned\20long\29 8899:embind_init_Skia\28\29::$_107::__invoke\28SkPicture&\2c\20SkTileMode\2c\20SkTileMode\2c\20SkFilterMode\2c\20unsigned\20long\2c\20unsigned\20long\29 8900:embind_init_Skia\28\29::$_106::__invoke\28SkPictureRecorder&\29 8901:embind_init_Skia\28\29::$_105::__invoke\28SkPictureRecorder&\2c\20unsigned\20long\2c\20bool\29 8902:embind_init_Skia\28\29::$_104::__invoke\28SkPath&\2c\20unsigned\20long\29 8903:embind_init_Skia\28\29::$_103::__invoke\28SkPath&\2c\20unsigned\20long\29 8904:embind_init_Skia\28\29::$_102::__invoke\28SkPath&\2c\20int\2c\20unsigned\20long\29 8905:embind_init_Skia\28\29::$_101::__invoke\28SkPath&\2c\20unsigned\20long\2c\20float\2c\20float\2c\20bool\29 8906:embind_init_Skia\28\29::$_100::__invoke\28SkPath&\2c\20unsigned\20long\2c\20bool\29 8907:embind_init_Skia\28\29::$_0::__invoke\28unsigned\20long\2c\20unsigned\20long\29 8908:embind_init_Paragraph\28\29::$_9::__invoke\28skia::textlayout::ParagraphBuilderImpl&\2c\20unsigned\20long\2c\20unsigned\20long\29 8909:embind_init_Paragraph\28\29::$_8::__invoke\28skia::textlayout::ParagraphBuilderImpl&\29 8910:embind_init_Paragraph\28\29::$_7::__invoke\28skia::textlayout::ParagraphBuilderImpl&\2c\20float\2c\20float\2c\20skia::textlayout::PlaceholderAlignment\2c\20skia::textlayout::TextBaseline\2c\20float\29 8911:embind_init_Paragraph\28\29::$_6::__invoke\28skia::textlayout::ParagraphBuilderImpl&\2c\20SimpleTextStyle\2c\20SkPaint\2c\20SkPaint\29 8912:embind_init_Paragraph\28\29::$_5::__invoke\28skia::textlayout::ParagraphBuilderImpl&\2c\20SimpleTextStyle\29 8913:embind_init_Paragraph\28\29::$_4::__invoke\28skia::textlayout::ParagraphBuilderImpl&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 8914:embind_init_Paragraph\28\29::$_3::__invoke\28emscripten::val\2c\20emscripten::val\2c\20float\29 8915:embind_init_Paragraph\28\29::$_2::__invoke\28SimpleParagraphStyle\2c\20sk_sp\29 8916:embind_init_Paragraph\28\29::$_18::__invoke\28skia::textlayout::FontCollection&\2c\20sk_sp\20const&\29 8917:embind_init_Paragraph\28\29::$_17::__invoke\28\29 8918:embind_init_Paragraph\28\29::$_16::__invoke\28skia::textlayout::TypefaceFontProvider&\2c\20sk_sp\2c\20unsigned\20long\29 8919:embind_init_Paragraph\28\29::$_15::__invoke\28\29 8920:embind_init_Paragraph\28\29::$_14::__invoke\28skia::textlayout::ParagraphBuilderImpl&\2c\20unsigned\20long\2c\20unsigned\20long\29 8921:embind_init_Paragraph\28\29::$_13::__invoke\28skia::textlayout::ParagraphBuilderImpl&\2c\20unsigned\20long\2c\20unsigned\20long\29 8922:embind_init_Paragraph\28\29::$_12::__invoke\28skia::textlayout::ParagraphBuilderImpl&\2c\20unsigned\20long\2c\20unsigned\20long\29 8923:embind_init_Paragraph\28\29::$_11::__invoke\28skia::textlayout::ParagraphBuilderImpl&\2c\20unsigned\20long\2c\20unsigned\20long\29 8924:embind_init_Paragraph\28\29::$_10::__invoke\28skia::textlayout::ParagraphBuilderImpl&\2c\20unsigned\20long\2c\20unsigned\20long\29 8925:dispose_external_texture\28void*\29 8926:deleteJSTexture\28void*\29 8927:deflate_slow 8928:deflate_fast 8929:defaultGetValue\28IntProperty\20const&\2c\20int\2c\20UProperty\29 8930:defaultGetMaxValue\28IntProperty\20const&\2c\20UProperty\29 8931:defaultContains\28BinaryProperty\20const&\2c\20int\2c\20UProperty\29 8932:decompress_smooth_data 8933:decompress_onepass 8934:decompress_data 8935:decompose_unicode\28hb_ot_shape_normalize_context_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int*\29 8936:decompose_khmer\28hb_ot_shape_normalize_context_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int*\29 8937:decompose_indic\28hb_ot_shape_normalize_context_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int*\29 8938:decode_mcu_DC_refine 8939:decode_mcu_DC_first 8940:decode_mcu_AC_refine 8941:decode_mcu_AC_first 8942:decode_mcu 8943:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28skgpu::ganesh::\28anonymous\20namespace\29::QuadEdgeEffect::Make\28SkArenaAlloc*\2c\20SkMatrix\20const&\2c\20bool\2c\20bool\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 8944:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make&\2c\20GrShaderCaps\20const&>\28SkMatrix\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>&\2c\20GrShaderCaps\20const&\29::'lambda'\28void*\29>\28skgpu::ganesh::\28anonymous\20namespace\29::HullShader&&\29::'lambda'\28char*\29::__invoke\28char*\29 8945:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28skgpu::ganesh::StrokeTessellator::PathStrokeList&&\29::'lambda'\28void*\29>\28skgpu::ganesh::StrokeTessellator::PathStrokeList&&\29::'lambda'\28char*\29::__invoke\28char*\29 8946:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28skgpu::tess::PatchAttribs&\29::'lambda'\28void*\29>\28skgpu::ganesh::StrokeTessellator&&\29::'lambda'\28char*\29::__invoke\28char*\29 8947:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\20const&>\28SkMatrix\20const&\2c\20SkPath\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\29::'lambda'\28void*\29>\28skgpu::ganesh::PathTessellator::PathDrawList&&\29::'lambda'\28char*\29::__invoke\28char*\29 8948:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Processor::Make\28SkArenaAlloc*\2c\20GrAAType\2c\20skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::ProcessorFlags\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 8949:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28int&\2c\20int&\29::'lambda'\28void*\29>\28skgpu::RectanizerSkyline&&\29::'lambda'\28char*\29::__invoke\28char*\29 8950:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28int&\2c\20int&\29::'lambda'\28void*\29>\28skgpu::RectanizerPow2&&\29::'lambda'\28char*\29::__invoke\28char*\29 8951:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make*\20SkArenaAlloc::make>\28\29::'lambda'\28void*\29>\28sk_sp&&\29::'lambda'\28char*\29::__invoke\28char*\29 8952:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::TextureOpImpl::Desc*\20SkArenaAlloc::make<\28anonymous\20namespace\29::TextureOpImpl::Desc>\28\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::TextureOpImpl::Desc&&\29::'lambda'\28char*\29::__invoke\28char*\29 8953:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::TentPass*\20SkArenaAlloc::make<\28anonymous\20namespace\29::TentPass\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20int&\2c\20int&>\28skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20int&\2c\20int&\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::TentPass&&\29::'lambda'\28char*\29::__invoke\28char*\29 8954:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::SimpleTriangleShader*\20SkArenaAlloc::make<\28anonymous\20namespace\29::SimpleTriangleShader\2c\20SkMatrix\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&>\28SkMatrix\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::SimpleTriangleShader&&\29::'lambda'\28char*\29::__invoke\28char*\29 8955:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::GaussPass*\20SkArenaAlloc::make<\28anonymous\20namespace\29::GaussPass\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20int&\2c\20int&>\28skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20int&\2c\20int&\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::GaussPass&&\29::'lambda'\28char*\29::__invoke\28char*\29 8956:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::DrawAtlasPathShader*\20SkArenaAlloc::make<\28anonymous\20namespace\29::DrawAtlasPathShader\2c\20bool&\2c\20skgpu::ganesh::AtlasInstancedHelper*\2c\20GrShaderCaps\20const&>\28bool&\2c\20skgpu::ganesh::AtlasInstancedHelper*&&\2c\20GrShaderCaps\20const&\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::DrawAtlasPathShader&&\29::'lambda'\28char*\29::__invoke\28char*\29 8957:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::BoundingBoxShader*\20SkArenaAlloc::make<\28anonymous\20namespace\29::BoundingBoxShader\2c\20SkRGBA4f<\28SkAlphaType\292>&\2c\20GrShaderCaps\20const&>\28SkRGBA4f<\28SkAlphaType\292>&\2c\20GrShaderCaps\20const&\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::BoundingBoxShader&&\29::'lambda'\28char*\29::__invoke\28char*\29 8958:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkPixmap\20const&\2c\20unsigned\20char&&\29::'lambda'\28void*\29>\28Sprite_D32_S32&&\29::'lambda'\28char*\29::__invoke\28char*\29 8959:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28bool&&\2c\20bool\20const&\29::'lambda'\28void*\29>\28SkTriColorShader&&\29::'lambda'\28char*\29::__invoke\28char*\29 8960:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28\29::'lambda'\28void*\29>\28SkTCubic&&\29::'lambda'\28char*\29::__invoke\28char*\29 8961:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28\29::'lambda'\28void*\29>\28SkTConic&&\29::'lambda'\28char*\29::__invoke\28char*\29 8962:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkPixmap\20const&\29::'lambda'\28void*\29>\28SkSpriteBlitter_Memcpy&&\29::'lambda'\28char*\29::__invoke\28char*\29 8963:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make&>\28SkPixmap\20const&\2c\20SkArenaAlloc*&\2c\20sk_sp&\29::'lambda'\28void*\29>\28SkRasterPipelineSpriteBlitter&&\29::'lambda'\28char*\29::__invoke\28char*\29 8964:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkPixmap\20const&\2c\20SkArenaAlloc*&\29::'lambda'\28void*\29>\28SkRasterPipelineBlitter&&\29::'lambda'\28char*\29::__invoke\28char*\29 8965:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28\29::'lambda'\28void*\29>\28SkNullBlitter&&\29::'lambda'\28char*\29::__invoke\28char*\29 8966:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkImage_Base\20const*&&\2c\20SkMatrix\20const&\2c\20SkMipmapMode&\29::'lambda'\28void*\29>\28SkMipmapAccessor&&\29::'lambda'\28char*\29::__invoke\28char*\29 8967:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28\29::'lambda'\28void*\29>\28SkGlyph::PathData&&\29::'lambda'\28char*\29::__invoke\28char*\29 8968:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28\29::'lambda'\28void*\29>\28SkGlyph::DrawableData&&\29::'lambda'\28char*\29::__invoke\28char*\29 8969:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkGlyph&&\29::'lambda'\28void*\29>\28SkGlyph&&\29::'lambda'\28char*\29::__invoke\28char*\29 8970:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make&\29>>::Node*\20SkArenaAlloc::make&\29>>::Node\2c\20std::__2::function&\29>>\28std::__2::function&\29>&&\29::'lambda'\28void*\29>\28SkArenaAllocList&\29>>::Node&&\29::'lambda'\28char*\29::__invoke\28char*\29 8971:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make::Node*\20SkArenaAlloc::make::Node\2c\20std::__2::function&\29>\2c\20skgpu::AtlasToken>\28std::__2::function&\29>&&\2c\20skgpu::AtlasToken&&\29::'lambda'\28void*\29>\28SkArenaAllocList::Node&&\29::'lambda'\28char*\29::__invoke\28char*\29 8972:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make::Node*\20SkArenaAlloc::make::Node>\28\29::'lambda'\28void*\29>\28SkArenaAllocList::Node&&\29::'lambda'\28char*\29::__invoke\28char*\29 8973:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkPixmap\20const&\2c\20SkPaint\20const&\29::'lambda'\28void*\29>\28SkA8_Coverage_Blitter&&\29::'lambda'\28char*\29::__invoke\28char*\29 8974:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28\29::'lambda'\28void*\29>\28GrSimpleMesh&&\29::'lambda'\28char*\29::__invoke\28char*\29 8975:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28GrSurfaceProxy*&\2c\20skgpu::ScratchKey&&\2c\20GrResourceProvider*&\29::'lambda'\28void*\29>\28GrResourceAllocator::Register&&\29::'lambda'\28char*\29::__invoke\28char*\29 8976:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkPath\20const&\2c\20SkArenaAlloc*\20const&\29::'lambda'\28void*\29>\28GrInnerFanTriangulator&&\29::'lambda'\28char*\29::__invoke\28char*\29 8977:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28GrDistanceFieldLCDTextGeoProc::Make\28SkArenaAlloc*\2c\20GrShaderCaps\20const&\2c\20GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\2c\20GrDistanceFieldLCDTextGeoProc::DistanceAdjust\2c\20unsigned\20int\2c\20SkMatrix\20const&\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 8978:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\20const&\2c\20bool\2c\20sk_sp\2c\20GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\2c\20skgpu::MaskFormat\2c\20SkMatrix\20const&\2c\20bool\29::'lambda'\28void*\29>\28GrBitmapTextGeoProc::Make\28SkArenaAlloc*\2c\20GrShaderCaps\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20bool\2c\20sk_sp\2c\20GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\2c\20skgpu::MaskFormat\2c\20SkMatrix\20const&\2c\20bool\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 8979:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28GrAppliedClip&&\29::'lambda'\28void*\29>\28GrAppliedClip&&\29::'lambda'\28char*\29::__invoke\28char*\29 8980:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28EllipseGeometryProcessor::Make\28SkArenaAlloc*\2c\20bool\2c\20bool\2c\20bool\2c\20SkMatrix\20const&\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 8981:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul\2c\201ul>::__dispatch\5babi:v160004\5d>::__generic_construct\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&>\28std::__2::__variant_detail::__ctor>&\2c\20std::__2::__variant_detail::__copy_constructor\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\29::'lambda'\28std::__2::__variant_detail::__copy_constructor\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__copy_constructor\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 8982:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul\2c\201ul>::__dispatch\5babi:v160004\5d>::__generic_assign\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>>\28std::__2::__variant_detail::__move_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>&&\29::'lambda'\28std::__2::__variant_detail::__move_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&&>\28std::__2::__variant_detail::__move_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&&\29 8983:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul\2c\201ul>::__dispatch\5babi:v160004\5d>::__generic_assign\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&>\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\29::'lambda'\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 8984:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul\2c\201ul>::__dispatch\5babi:v160004\5d>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__visitation::__variant::__value_visitor>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 8985:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul>::__dispatch\5babi:v160004\5d\2c\20std::__2::unique_ptr>>\2c\20\28std::__2::__variant_detail::_Trait\291>::__destroy\5babi:v160004\5d\28\29::'lambda'\28auto&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&>\28auto\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&\29 8986:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul\2c\200ul>::__dispatch\5babi:v160004\5d>::__generic_construct\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&>\28std::__2::__variant_detail::__ctor>&\2c\20std::__2::__variant_detail::__copy_constructor\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\29::'lambda'\28std::__2::__variant_detail::__copy_constructor\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__copy_constructor\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 8987:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul\2c\200ul>::__dispatch\5babi:v160004\5d>::__generic_assign\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>>\28std::__2::__variant_detail::__move_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>&&\29::'lambda'\28std::__2::__variant_detail::__move_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&&>\28std::__2::__variant_detail::__move_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&&\29 8988:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul\2c\200ul>::__dispatch\5babi:v160004\5d>::__generic_assign\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&>\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\29::'lambda'\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 8989:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul\2c\200ul>::__dispatch\5babi:v160004\5d>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__visitation::__variant::__value_visitor>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 8990:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul\2c\200ul>::__dispatch\5babi:v160004\5d>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__visitation::__variant::__value_visitor>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 8991:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul>::__dispatch\5babi:v160004\5d\2c\20std::__2::unique_ptr>>\2c\20\28std::__2::__variant_detail::_Trait\291>::__destroy\5babi:v160004\5d\28\29::'lambda'\28auto&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&>\28auto\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&\29 8992:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul>::__dispatch\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>::__destroy\5babi:v160004\5d\28\29::'lambda'\28auto&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&>\28auto\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\29 8993:deallocate_buffer_var\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 8994:ddquad_xy_at_t\28SkDCurve\20const&\2c\20double\29 8995:ddquad_dxdy_at_t\28SkDCurve\20const&\2c\20double\29 8996:ddline_xy_at_t\28SkDCurve\20const&\2c\20double\29 8997:ddline_dxdy_at_t\28SkDCurve\20const&\2c\20double\29 8998:ddcubic_xy_at_t\28SkDCurve\20const&\2c\20double\29 8999:ddcubic_dxdy_at_t\28SkDCurve\20const&\2c\20double\29 9000:ddconic_xy_at_t\28SkDCurve\20const&\2c\20double\29 9001:ddconic_dxdy_at_t\28SkDCurve\20const&\2c\20double\29 9002:data_destroy_use\28void*\29 9003:data_create_use\28hb_ot_shape_plan_t\20const*\29 9004:data_create_khmer\28hb_ot_shape_plan_t\20const*\29 9005:data_create_indic\28hb_ot_shape_plan_t\20const*\29 9006:data_create_hangul\28hb_ot_shape_plan_t\20const*\29 9007:copy\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 9008:convert_bytes_to_data 9009:consume_markers 9010:consume_data 9011:computeTonalColors\28unsigned\20long\2c\20unsigned\20long\29 9012:compose_unicode\28hb_ot_shape_normalize_context_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\29 9013:compose_indic\28hb_ot_shape_normalize_context_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\29 9014:compose_hebrew\28hb_ot_shape_normalize_context_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\29 9015:compare_ppem 9016:compare_offsets 9017:compare_myanmar_order\28hb_glyph_info_t\20const*\2c\20hb_glyph_info_t\20const*\29 9018:compare_combining_class\28hb_glyph_info_t\20const*\2c\20hb_glyph_info_t\20const*\29 9019:compareKeywordStructs\28void\20const*\2c\20void\20const*\2c\20void\20const*\29 9020:compareEntries\28UElement\2c\20UElement\29 9021:color_quantize3 9022:color_quantize 9023:collect_features_use\28hb_ot_shape_planner_t*\29 9024:collect_features_myanmar\28hb_ot_shape_planner_t*\29 9025:collect_features_khmer\28hb_ot_shape_planner_t*\29 9026:collect_features_indic\28hb_ot_shape_planner_t*\29 9027:collect_features_hangul\28hb_ot_shape_planner_t*\29 9028:collect_features_arabic\28hb_ot_shape_planner_t*\29 9029:clip\28SkPath\20const&\2c\20SkHalfPlane\20const&\29::$_0::__invoke\28SkEdgeClipper*\2c\20bool\2c\20void*\29 9030:check_for_passthrough_local_coords_and_dead_varyings\28SkSL::Program\20const&\2c\20unsigned\20int*\29::Visitor::visitStatement\28SkSL::Statement\20const&\29 9031:check_for_passthrough_local_coords_and_dead_varyings\28SkSL::Program\20const&\2c\20unsigned\20int*\29::Visitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 9032:check_for_passthrough_local_coords_and_dead_varyings\28SkSL::Program\20const&\2c\20unsigned\20int*\29::Visitor::visitExpression\28SkSL::Expression\20const&\29 9033:charIterTextLength\28UText*\29 9034:charIterTextExtract\28UText*\2c\20long\20long\2c\20long\20long\2c\20char16_t*\2c\20int\2c\20UErrorCode*\29 9035:charIterTextClose\28UText*\29 9036:charIterTextClone\28UText*\2c\20UText\20const*\2c\20signed\20char\2c\20UErrorCode*\29 9037:changesWhenNFKC_Casefolded\28BinaryProperty\20const&\2c\20int\2c\20UProperty\29 9038:changesWhenCasefolded\28BinaryProperty\20const&\2c\20int\2c\20UProperty\29 9039:cff_slot_init 9040:cff_slot_done 9041:cff_size_request 9042:cff_size_init 9043:cff_size_done 9044:cff_sid_to_glyph_name 9045:cff_set_var_design 9046:cff_set_mm_weightvector 9047:cff_set_mm_blend 9048:cff_set_instance 9049:cff_random 9050:cff_ps_has_glyph_names 9051:cff_ps_get_font_info 9052:cff_ps_get_font_extra 9053:cff_parse_vsindex 9054:cff_parse_private_dict 9055:cff_parse_multiple_master 9056:cff_parse_maxstack 9057:cff_parse_font_matrix 9058:cff_parse_font_bbox 9059:cff_parse_cid_ros 9060:cff_parse_blend 9061:cff_metrics_adjust 9062:cff_hadvance_adjust 9063:cff_glyph_load 9064:cff_get_var_design 9065:cff_get_var_blend 9066:cff_get_standard_encoding 9067:cff_get_ros 9068:cff_get_ps_name 9069:cff_get_name_index 9070:cff_get_mm_weightvector 9071:cff_get_mm_var 9072:cff_get_mm_blend 9073:cff_get_is_cid 9074:cff_get_interface 9075:cff_get_glyph_name 9076:cff_get_glyph_data 9077:cff_get_cmap_info 9078:cff_get_cid_from_glyph_index 9079:cff_get_advances 9080:cff_free_glyph_data 9081:cff_fd_select_get 9082:cff_face_init 9083:cff_face_done 9084:cff_driver_init 9085:cff_done_blend 9086:cff_decoder_prepare 9087:cff_decoder_init 9088:cff_cmap_unicode_init 9089:cff_cmap_unicode_char_next 9090:cff_cmap_unicode_char_index 9091:cff_cmap_encoding_init 9092:cff_cmap_encoding_done 9093:cff_cmap_encoding_char_next 9094:cff_cmap_encoding_char_index 9095:cff_builder_start_point 9096:cff_builder_init 9097:cff_builder_add_point1 9098:cff_builder_add_point 9099:cff_builder_add_contour 9100:cff_blend_check_vector 9101:cf2_free_instance 9102:cf2_decoder_parse_charstrings 9103:cf2_builder_moveTo 9104:cf2_builder_lineTo 9105:cf2_builder_cubeTo 9106:caseBinaryPropertyContains\28BinaryProperty\20const&\2c\20int\2c\20UProperty\29 9107:bw_to_a8\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29 9108:bw_square_proc\28PtProcRec\20const&\2c\20SkPoint\20const*\2c\20int\2c\20SkBlitter*\29 9109:bw_pt_hair_proc\28PtProcRec\20const&\2c\20SkPoint\20const*\2c\20int\2c\20SkBlitter*\29 9110:bw_poly_hair_proc\28PtProcRec\20const&\2c\20SkPoint\20const*\2c\20int\2c\20SkBlitter*\29 9111:bw_line_hair_proc\28PtProcRec\20const&\2c\20SkPoint\20const*\2c\20int\2c\20SkBlitter*\29 9112:breakiterator_cleanup\28\29 9113:bool\20\28anonymous\20namespace\29::FindVisitor<\28anonymous\20namespace\29::SpotVerticesFactory>\28SkResourceCache::Rec\20const&\2c\20void*\29 9114:bool\20\28anonymous\20namespace\29::FindVisitor<\28anonymous\20namespace\29::AmbientVerticesFactory>\28SkResourceCache::Rec\20const&\2c\20void*\29 9115:bool\20OT::hb_accelerate_subtables_context_t::apply_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 9116:bool\20OT::hb_accelerate_subtables_context_t::apply_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 9117:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 9118:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 9119:bool\20OT::cmap::accelerator_t::get_glyph_from_symbol\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\29 9120:bool\20OT::cmap::accelerator_t::get_glyph_from_symbol\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\29 9121:bool\20OT::cmap::accelerator_t::get_glyph_from_symbol\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\29 9122:bool\20OT::cmap::accelerator_t::get_glyph_from\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\29 9123:bool\20OT::cmap::accelerator_t::get_glyph_from\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\29 9124:blur_y_radius_4\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 9125:blur_y_radius_3\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 9126:blur_y_radius_2\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 9127:blur_y_radius_1\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 9128:blur_x_radius_4\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 9129:blur_x_radius_3\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 9130:blur_x_radius_2\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 9131:blur_x_radius_1\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 9132:blit_row_s32a_blend\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int\29 9133:blit_row_s32_opaque\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int\29 9134:blit_row_s32_blend\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int\29 9135:biDiGetMaxValue\28IntProperty\20const&\2c\20UProperty\29 9136:argb32_to_a8\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29 9137:arabic_fallback_shape\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 9138:alwaysSaveTypefaceBytes\28SkTypeface*\2c\20void*\29 9139:alloc_sarray 9140:alloc_barray 9141:afm_parser_parse 9142:afm_parser_init 9143:afm_parser_done 9144:afm_compare_kern_pairs 9145:af_property_set 9146:af_property_get 9147:af_latin_metrics_scale 9148:af_latin_metrics_init 9149:af_latin_hints_init 9150:af_latin_hints_apply 9151:af_latin_get_standard_widths 9152:af_indic_metrics_init 9153:af_indic_hints_apply 9154:af_get_interface 9155:af_face_globals_free 9156:af_dummy_hints_init 9157:af_dummy_hints_apply 9158:af_cjk_metrics_init 9159:af_autofitter_load_glyph 9160:af_autofitter_init 9161:access_virt_sarray 9162:access_virt_barray 9163:aa_square_proc\28PtProcRec\20const&\2c\20SkPoint\20const*\2c\20int\2c\20SkBlitter*\29 9164:aa_poly_hair_proc\28PtProcRec\20const&\2c\20SkPoint\20const*\2c\20int\2c\20SkBlitter*\29 9165:aa_line_hair_proc\28PtProcRec\20const&\2c\20SkPoint\20const*\2c\20int\2c\20SkBlitter*\29 9166:_hb_ot_font_destroy\28void*\29 9167:_hb_glyph_info_is_default_ignorable\28hb_glyph_info_t\20const*\29 9168:_hb_face_for_data_reference_table\28hb_face_t*\2c\20unsigned\20int\2c\20void*\29 9169:_hb_face_for_data_closure_destroy\28void*\29 9170:_hb_clear_substitution_flags\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 9171:_embind_initialize_bindings 9172:__wasm_call_ctors 9173:__stdio_write 9174:__stdio_seek 9175:__stdio_read 9176:__stdio_close 9177:__getTypeName 9178:__cxxabiv1::__vmi_class_type_info::search_below_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 9179:__cxxabiv1::__vmi_class_type_info::search_above_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 9180:__cxxabiv1::__vmi_class_type_info::has_unambiguous_public_base\28__cxxabiv1::__dynamic_cast_info*\2c\20void*\2c\20int\29\20const 9181:__cxxabiv1::__si_class_type_info::search_below_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 9182:__cxxabiv1::__si_class_type_info::search_above_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 9183:__cxxabiv1::__si_class_type_info::has_unambiguous_public_base\28__cxxabiv1::__dynamic_cast_info*\2c\20void*\2c\20int\29\20const 9184:__cxxabiv1::__class_type_info::search_below_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 9185:__cxxabiv1::__class_type_info::search_above_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 9186:__cxxabiv1::__class_type_info::has_unambiguous_public_base\28__cxxabiv1::__dynamic_cast_info*\2c\20void*\2c\20int\29\20const 9187:__cxxabiv1::__class_type_info::can_catch\28__cxxabiv1::__shim_type_info\20const*\2c\20void*&\29\20const 9188:__cxx_global_array_dtor.87 9189:__cxx_global_array_dtor.72 9190:__cxx_global_array_dtor.6 9191:__cxx_global_array_dtor.57 9192:__cxx_global_array_dtor.5 9193:__cxx_global_array_dtor.44 9194:__cxx_global_array_dtor.42 9195:__cxx_global_array_dtor.40 9196:__cxx_global_array_dtor.4 9197:__cxx_global_array_dtor.38 9198:__cxx_global_array_dtor.36 9199:__cxx_global_array_dtor.34 9200:__cxx_global_array_dtor.32 9201:__cxx_global_array_dtor.2 9202:__cxx_global_array_dtor.17 9203:__cxx_global_array_dtor.16 9204:__cxx_global_array_dtor.15 9205:__cxx_global_array_dtor.138 9206:__cxx_global_array_dtor.135 9207:__cxx_global_array_dtor.111 9208:__cxx_global_array_dtor.11 9209:__cxx_global_array_dtor.10 9210:__cxx_global_array_dtor.1.2 9211:__cxx_global_array_dtor.1.1 9212:__cxx_global_array_dtor.1 9213:__cxx_global_array_dtor 9214:__cxa_pure_virtual 9215:__cxa_is_pointer_type 9216:\28anonymous\20namespace\29::uprops_cleanup\28\29 9217:\28anonymous\20namespace\29::ulayout_isAcceptable\28void*\2c\20char\20const*\2c\20char\20const*\2c\20UDataInfo\20const*\29 9218:\28anonymous\20namespace\29::skhb_nominal_glyphs\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int\2c\20void*\29 9219:\28anonymous\20namespace\29::skhb_nominal_glyph\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 9220:\28anonymous\20namespace\29::skhb_glyph_h_advances\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20int*\2c\20unsigned\20int\2c\20void*\29 9221:\28anonymous\20namespace\29::skhb_glyph_h_advance\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20void*\29 9222:\28anonymous\20namespace\29::skhb_glyph_extents\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_glyph_extents_t*\2c\20void*\29 9223:\28anonymous\20namespace\29::skhb_glyph\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 9224:\28anonymous\20namespace\29::skhb_get_table\28hb_face_t*\2c\20unsigned\20int\2c\20void*\29::$_0::__invoke\28void*\29 9225:\28anonymous\20namespace\29::skhb_get_table\28hb_face_t*\2c\20unsigned\20int\2c\20void*\29 9226:\28anonymous\20namespace\29::make_morphology\28\28anonymous\20namespace\29::MorphType\2c\20SkSize\2c\20sk_sp\2c\20SkImageFilters::CropRect\20const&\29 9227:\28anonymous\20namespace\29::make_drop_shadow_graph\28SkPoint\2c\20SkSize\2c\20unsigned\20int\2c\20bool\2c\20sk_sp\2c\20std::__2::optional\20const&\29 9228:\28anonymous\20namespace\29::extension_compare\28SkString\20const&\2c\20SkString\20const&\29 9229:\28anonymous\20namespace\29::characterproperties_cleanup\28\29 9230:\28anonymous\20namespace\29::_set_add\28USet*\2c\20int\29 9231:\28anonymous\20namespace\29::_set_addString\28USet*\2c\20char16_t\20const*\2c\20int\29 9232:\28anonymous\20namespace\29::_set_addRange\28USet*\2c\20int\2c\20int\29 9233:\28anonymous\20namespace\29::YUVPlanesRec::~YUVPlanesRec\28\29.1 9234:\28anonymous\20namespace\29::YUVPlanesRec::getCategory\28\29\20const 9235:\28anonymous\20namespace\29::YUVPlanesRec::diagnostic_only_getDiscardable\28\29\20const 9236:\28anonymous\20namespace\29::YUVPlanesRec::bytesUsed\28\29\20const 9237:\28anonymous\20namespace\29::YUVPlanesRec::Visitor\28SkResourceCache::Rec\20const&\2c\20void*\29 9238:\28anonymous\20namespace\29::UniqueKeyInvalidator::~UniqueKeyInvalidator\28\29.1 9239:\28anonymous\20namespace\29::UniqueKeyInvalidator::~UniqueKeyInvalidator\28\29 9240:\28anonymous\20namespace\29::TriangulatingPathOp::~TriangulatingPathOp\28\29.1 9241:\28anonymous\20namespace\29::TriangulatingPathOp::visitProxies\28std::__2::function\20const&\29\20const 9242:\28anonymous\20namespace\29::TriangulatingPathOp::programInfo\28\29 9243:\28anonymous\20namespace\29::TriangulatingPathOp::onPrepareDraws\28GrMeshDrawTarget*\29 9244:\28anonymous\20namespace\29::TriangulatingPathOp::onPrePrepareDraws\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 9245:\28anonymous\20namespace\29::TriangulatingPathOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 9246:\28anonymous\20namespace\29::TriangulatingPathOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 9247:\28anonymous\20namespace\29::TriangulatingPathOp::name\28\29\20const 9248:\28anonymous\20namespace\29::TriangulatingPathOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 9249:\28anonymous\20namespace\29::TransformedMaskSubRun::unflattenSize\28\29\20const 9250:\28anonymous\20namespace\29::TransformedMaskSubRun::regenerateAtlas\28int\2c\20int\2c\20std::__2::function\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>\29\20const 9251:\28anonymous\20namespace\29::TransformedMaskSubRun::instanceFlags\28\29\20const 9252:\28anonymous\20namespace\29::TransformedMaskSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 9253:\28anonymous\20namespace\29::TransformedMaskSubRun::draw\28SkCanvas*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20std::__2::function\2c\20sktext::gpu::RendererData\29>\20const&\29\20const 9254:\28anonymous\20namespace\29::TransformedMaskSubRun::doFlatten\28SkWriteBuffer&\29\20const 9255:\28anonymous\20namespace\29::TransformedMaskSubRun::canReuse\28SkPaint\20const&\2c\20SkMatrix\20const&\29\20const 9256:\28anonymous\20namespace\29::TextureOpImpl::~TextureOpImpl\28\29.1 9257:\28anonymous\20namespace\29::TextureOpImpl::~TextureOpImpl\28\29 9258:\28anonymous\20namespace\29::TextureOpImpl::visitProxies\28std::__2::function\20const&\29\20const 9259:\28anonymous\20namespace\29::TextureOpImpl::programInfo\28\29 9260:\28anonymous\20namespace\29::TextureOpImpl::onPrepareDraws\28GrMeshDrawTarget*\29 9261:\28anonymous\20namespace\29::TextureOpImpl::onPrePrepareDraws\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 9262:\28anonymous\20namespace\29::TextureOpImpl::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 9263:\28anonymous\20namespace\29::TextureOpImpl::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 9264:\28anonymous\20namespace\29::TextureOpImpl::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 9265:\28anonymous\20namespace\29::TextureOpImpl::name\28\29\20const 9266:\28anonymous\20namespace\29::TextureOpImpl::fixedFunctionFlags\28\29\20const 9267:\28anonymous\20namespace\29::TextureOpImpl::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 9268:\28anonymous\20namespace\29::TentPass::startBlur\28\29 9269:\28anonymous\20namespace\29::TentPass::blurSegment\28int\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int*\2c\20int\29 9270:\28anonymous\20namespace\29::TentPass::MakeMaker\28double\2c\20SkArenaAlloc*\29::Maker::makePass\28void*\2c\20SkArenaAlloc*\29\20const 9271:\28anonymous\20namespace\29::TentPass::MakeMaker\28double\2c\20SkArenaAlloc*\29::Maker::bufferSizeBytes\28\29\20const 9272:\28anonymous\20namespace\29::StaticVertexAllocator::~StaticVertexAllocator\28\29.1 9273:\28anonymous\20namespace\29::StaticVertexAllocator::~StaticVertexAllocator\28\29 9274:\28anonymous\20namespace\29::StaticVertexAllocator::unlock\28int\29 9275:\28anonymous\20namespace\29::StaticVertexAllocator::lock\28unsigned\20long\2c\20int\29 9276:\28anonymous\20namespace\29::SkUnicodeHbScriptRunIterator::currentScript\28\29\20const 9277:\28anonymous\20namespace\29::SkUnicodeHbScriptRunIterator::consume\28\29 9278:\28anonymous\20namespace\29::SkUbrkGetLocaleByType::getLocaleByType\28UBreakIterator\20const*\2c\20ULocDataLocaleType\2c\20UErrorCode*\29 9279:\28anonymous\20namespace\29::SkUbrkClone::clone\28UBreakIterator\20const*\2c\20UErrorCode*\29 9280:\28anonymous\20namespace\29::SkShaderImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 9281:\28anonymous\20namespace\29::SkShaderImageFilter::onFilterImage\28skif::Context\20const&\29\20const 9282:\28anonymous\20namespace\29::SkShaderImageFilter::getTypeName\28\29\20const 9283:\28anonymous\20namespace\29::SkShaderImageFilter::flatten\28SkWriteBuffer&\29\20const 9284:\28anonymous\20namespace\29::SkShaderImageFilter::computeFastBounds\28SkRect\20const&\29\20const 9285:\28anonymous\20namespace\29::SkMorphologyImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 9286:\28anonymous\20namespace\29::SkMorphologyImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 9287:\28anonymous\20namespace\29::SkMorphologyImageFilter::onFilterImage\28skif::Context\20const&\29\20const 9288:\28anonymous\20namespace\29::SkMorphologyImageFilter::getTypeName\28\29\20const 9289:\28anonymous\20namespace\29::SkMorphologyImageFilter::flatten\28SkWriteBuffer&\29\20const 9290:\28anonymous\20namespace\29::SkMorphologyImageFilter::computeFastBounds\28SkRect\20const&\29\20const 9291:\28anonymous\20namespace\29::SkMergeImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 9292:\28anonymous\20namespace\29::SkMergeImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 9293:\28anonymous\20namespace\29::SkMergeImageFilter::onFilterImage\28skif::Context\20const&\29\20const 9294:\28anonymous\20namespace\29::SkMergeImageFilter::getTypeName\28\29\20const 9295:\28anonymous\20namespace\29::SkMergeImageFilter::computeFastBounds\28SkRect\20const&\29\20const 9296:\28anonymous\20namespace\29::SkMatrixTransformImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 9297:\28anonymous\20namespace\29::SkMatrixTransformImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 9298:\28anonymous\20namespace\29::SkMatrixTransformImageFilter::onFilterImage\28skif::Context\20const&\29\20const 9299:\28anonymous\20namespace\29::SkMatrixTransformImageFilter::getTypeName\28\29\20const 9300:\28anonymous\20namespace\29::SkMatrixTransformImageFilter::flatten\28SkWriteBuffer&\29\20const 9301:\28anonymous\20namespace\29::SkMatrixTransformImageFilter::computeFastBounds\28SkRect\20const&\29\20const 9302:\28anonymous\20namespace\29::SkImageImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 9303:\28anonymous\20namespace\29::SkImageImageFilter::onFilterImage\28skif::Context\20const&\29\20const 9304:\28anonymous\20namespace\29::SkImageImageFilter::getTypeName\28\29\20const 9305:\28anonymous\20namespace\29::SkImageImageFilter::flatten\28SkWriteBuffer&\29\20const 9306:\28anonymous\20namespace\29::SkImageImageFilter::computeFastBounds\28SkRect\20const&\29\20const 9307:\28anonymous\20namespace\29::SkFTGeometrySink::Quad\28FT_Vector_\20const*\2c\20FT_Vector_\20const*\2c\20void*\29 9308:\28anonymous\20namespace\29::SkFTGeometrySink::Move\28FT_Vector_\20const*\2c\20void*\29 9309:\28anonymous\20namespace\29::SkFTGeometrySink::Line\28FT_Vector_\20const*\2c\20void*\29 9310:\28anonymous\20namespace\29::SkFTGeometrySink::Cubic\28FT_Vector_\20const*\2c\20FT_Vector_\20const*\2c\20FT_Vector_\20const*\2c\20void*\29 9311:\28anonymous\20namespace\29::SkEmptyTypeface::onGetFontDescriptor\28SkFontDescriptor*\2c\20bool*\29\20const 9312:\28anonymous\20namespace\29::SkEmptyTypeface::onGetFamilyName\28SkString*\29\20const 9313:\28anonymous\20namespace\29::SkEmptyTypeface::onCreateScalerContext\28SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29\20const 9314:\28anonymous\20namespace\29::SkEmptyTypeface::onCreateFamilyNameIterator\28\29\20const 9315:\28anonymous\20namespace\29::SkEmptyTypeface::onCharsToGlyphs\28int\20const*\2c\20int\2c\20unsigned\20short*\29\20const 9316:\28anonymous\20namespace\29::SkEmptyTypeface::MakeFromStream\28std::__2::unique_ptr>\2c\20SkFontArguments\20const&\29 9317:\28anonymous\20namespace\29::SkDisplacementMapImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 9318:\28anonymous\20namespace\29::SkDisplacementMapImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 9319:\28anonymous\20namespace\29::SkDisplacementMapImageFilter::onFilterImage\28skif::Context\20const&\29\20const 9320:\28anonymous\20namespace\29::SkDisplacementMapImageFilter::getTypeName\28\29\20const 9321:\28anonymous\20namespace\29::SkDisplacementMapImageFilter::flatten\28SkWriteBuffer&\29\20const 9322:\28anonymous\20namespace\29::SkDisplacementMapImageFilter::computeFastBounds\28SkRect\20const&\29\20const 9323:\28anonymous\20namespace\29::SkCropImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 9324:\28anonymous\20namespace\29::SkCropImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 9325:\28anonymous\20namespace\29::SkCropImageFilter::onFilterImage\28skif::Context\20const&\29\20const 9326:\28anonymous\20namespace\29::SkCropImageFilter::onAffectsTransparentBlack\28\29\20const 9327:\28anonymous\20namespace\29::SkCropImageFilter::getTypeName\28\29\20const 9328:\28anonymous\20namespace\29::SkCropImageFilter::flatten\28SkWriteBuffer&\29\20const 9329:\28anonymous\20namespace\29::SkCropImageFilter::computeFastBounds\28SkRect\20const&\29\20const 9330:\28anonymous\20namespace\29::SkComposeImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 9331:\28anonymous\20namespace\29::SkComposeImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 9332:\28anonymous\20namespace\29::SkComposeImageFilter::onFilterImage\28skif::Context\20const&\29\20const 9333:\28anonymous\20namespace\29::SkComposeImageFilter::getTypeName\28\29\20const 9334:\28anonymous\20namespace\29::SkComposeImageFilter::computeFastBounds\28SkRect\20const&\29\20const 9335:\28anonymous\20namespace\29::SkColorFilterImageFilter::onIsColorFilterNode\28SkColorFilter**\29\20const 9336:\28anonymous\20namespace\29::SkColorFilterImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 9337:\28anonymous\20namespace\29::SkColorFilterImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 9338:\28anonymous\20namespace\29::SkColorFilterImageFilter::onFilterImage\28skif::Context\20const&\29\20const 9339:\28anonymous\20namespace\29::SkColorFilterImageFilter::onAffectsTransparentBlack\28\29\20const 9340:\28anonymous\20namespace\29::SkColorFilterImageFilter::getTypeName\28\29\20const 9341:\28anonymous\20namespace\29::SkColorFilterImageFilter::flatten\28SkWriteBuffer&\29\20const 9342:\28anonymous\20namespace\29::SkColorFilterImageFilter::computeFastBounds\28SkRect\20const&\29\20const 9343:\28anonymous\20namespace\29::SkBlurImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 9344:\28anonymous\20namespace\29::SkBlurImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 9345:\28anonymous\20namespace\29::SkBlurImageFilter::onFilterImage\28skif::Context\20const&\29\20const 9346:\28anonymous\20namespace\29::SkBlurImageFilter::getTypeName\28\29\20const 9347:\28anonymous\20namespace\29::SkBlurImageFilter::flatten\28SkWriteBuffer&\29\20const 9348:\28anonymous\20namespace\29::SkBlurImageFilter::computeFastBounds\28SkRect\20const&\29\20const 9349:\28anonymous\20namespace\29::SkBlendImageFilter::~SkBlendImageFilter\28\29.1 9350:\28anonymous\20namespace\29::SkBlendImageFilter::~SkBlendImageFilter\28\29 9351:\28anonymous\20namespace\29::SkBlendImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 9352:\28anonymous\20namespace\29::SkBlendImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 9353:\28anonymous\20namespace\29::SkBlendImageFilter::onFilterImage\28skif::Context\20const&\29\20const 9354:\28anonymous\20namespace\29::SkBlendImageFilter::onAffectsTransparentBlack\28\29\20const 9355:\28anonymous\20namespace\29::SkBlendImageFilter::getTypeName\28\29\20const 9356:\28anonymous\20namespace\29::SkBlendImageFilter::flatten\28SkWriteBuffer&\29\20const 9357:\28anonymous\20namespace\29::SkBlendImageFilter::computeFastBounds\28SkRect\20const&\29\20const 9358:\28anonymous\20namespace\29::SkBidiIterator_icu::~SkBidiIterator_icu\28\29.1 9359:\28anonymous\20namespace\29::SkBidiIterator_icu::~SkBidiIterator_icu\28\29 9360:\28anonymous\20namespace\29::SkBidiIterator_icu::getLevelAt\28int\29 9361:\28anonymous\20namespace\29::SkBidiIterator_icu::getLength\28\29 9362:\28anonymous\20namespace\29::SimpleTriangleShader::name\28\29\20const 9363:\28anonymous\20namespace\29::SimpleTriangleShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::emitVertexCode\28GrShaderCaps\20const&\2c\20GrPathTessellationShader\20const&\2c\20GrGLSLVertexBuilder*\2c\20GrGLSLVaryingHandler*\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 9364:\28anonymous\20namespace\29::SimpleTriangleShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 9365:\28anonymous\20namespace\29::ShaperHarfBuzz::~ShaperHarfBuzz\28\29.1 9366:\28anonymous\20namespace\29::ShaperHarfBuzz::shape\28char\20const*\2c\20unsigned\20long\2c\20SkShaper::FontRunIterator&\2c\20SkShaper::BiDiRunIterator&\2c\20SkShaper::ScriptRunIterator&\2c\20SkShaper::LanguageRunIterator&\2c\20float\2c\20SkShaper::RunHandler*\29\20const 9367:\28anonymous\20namespace\29::ShaperHarfBuzz::shape\28char\20const*\2c\20unsigned\20long\2c\20SkShaper::FontRunIterator&\2c\20SkShaper::BiDiRunIterator&\2c\20SkShaper::ScriptRunIterator&\2c\20SkShaper::LanguageRunIterator&\2c\20SkShaper::Feature\20const*\2c\20unsigned\20long\2c\20float\2c\20SkShaper::RunHandler*\29\20const 9368:\28anonymous\20namespace\29::ShaperHarfBuzz::shape\28char\20const*\2c\20unsigned\20long\2c\20SkFont\20const&\2c\20bool\2c\20float\2c\20SkShaper::RunHandler*\29\20const 9369:\28anonymous\20namespace\29::ShapeDontWrapOrReorder::~ShapeDontWrapOrReorder\28\29 9370:\28anonymous\20namespace\29::ShapeDontWrapOrReorder::wrap\28char\20const*\2c\20unsigned\20long\2c\20SkShaper::BiDiRunIterator\20const&\2c\20SkShaper::LanguageRunIterator\20const&\2c\20SkShaper::ScriptRunIterator\20const&\2c\20SkShaper::FontRunIterator\20const&\2c\20\28anonymous\20namespace\29::RunIteratorQueue&\2c\20SkShaper::Feature\20const*\2c\20unsigned\20long\2c\20float\2c\20SkShaper::RunHandler*\29\20const 9371:\28anonymous\20namespace\29::ShadowInvalidator::~ShadowInvalidator\28\29.1 9372:\28anonymous\20namespace\29::ShadowInvalidator::~ShadowInvalidator\28\29 9373:\28anonymous\20namespace\29::ShadowInvalidator::changed\28\29 9374:\28anonymous\20namespace\29::ShadowCircularRRectOp::~ShadowCircularRRectOp\28\29.1 9375:\28anonymous\20namespace\29::ShadowCircularRRectOp::~ShadowCircularRRectOp\28\29 9376:\28anonymous\20namespace\29::ShadowCircularRRectOp::visitProxies\28std::__2::function\20const&\29\20const 9377:\28anonymous\20namespace\29::ShadowCircularRRectOp::programInfo\28\29 9378:\28anonymous\20namespace\29::ShadowCircularRRectOp::onPrepareDraws\28GrMeshDrawTarget*\29 9379:\28anonymous\20namespace\29::ShadowCircularRRectOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 9380:\28anonymous\20namespace\29::ShadowCircularRRectOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 9381:\28anonymous\20namespace\29::ShadowCircularRRectOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 9382:\28anonymous\20namespace\29::ShadowCircularRRectOp::name\28\29\20const 9383:\28anonymous\20namespace\29::ShadowCircularRRectOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 9384:\28anonymous\20namespace\29::SDFTSubRun::~SDFTSubRun\28\29.1 9385:\28anonymous\20namespace\29::SDFTSubRun::~SDFTSubRun\28\29 9386:\28anonymous\20namespace\29::SDFTSubRun::vertexStride\28SkMatrix\20const&\29\20const 9387:\28anonymous\20namespace\29::SDFTSubRun::vertexFiller\28\29\20const 9388:\28anonymous\20namespace\29::SDFTSubRun::unflattenSize\28\29\20const 9389:\28anonymous\20namespace\29::SDFTSubRun::testingOnly_packedGlyphIDToGlyph\28sktext::gpu::StrikeCache*\29\20const 9390:\28anonymous\20namespace\29::SDFTSubRun::regenerateAtlas\28int\2c\20int\2c\20std::__2::function\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>\29\20const 9391:\28anonymous\20namespace\29::SDFTSubRun::glyphs\28\29\20const 9392:\28anonymous\20namespace\29::SDFTSubRun::glyphCount\28\29\20const 9393:\28anonymous\20namespace\29::SDFTSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 9394:\28anonymous\20namespace\29::SDFTSubRun::draw\28SkCanvas*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20std::__2::function\2c\20sktext::gpu::RendererData\29>\20const&\29\20const 9395:\28anonymous\20namespace\29::SDFTSubRun::doFlatten\28SkWriteBuffer&\29\20const 9396:\28anonymous\20namespace\29::SDFTSubRun::canReuse\28SkPaint\20const&\2c\20SkMatrix\20const&\29\20const 9397:\28anonymous\20namespace\29::RectsBlurRec::~RectsBlurRec\28\29.1 9398:\28anonymous\20namespace\29::RectsBlurRec::~RectsBlurRec\28\29 9399:\28anonymous\20namespace\29::RectsBlurRec::getCategory\28\29\20const 9400:\28anonymous\20namespace\29::RectsBlurRec::diagnostic_only_getDiscardable\28\29\20const 9401:\28anonymous\20namespace\29::RectsBlurRec::bytesUsed\28\29\20const 9402:\28anonymous\20namespace\29::RectsBlurRec::Visitor\28SkResourceCache::Rec\20const&\2c\20void*\29 9403:\28anonymous\20namespace\29::RRectBlurRec::~RRectBlurRec\28\29.1 9404:\28anonymous\20namespace\29::RRectBlurRec::~RRectBlurRec\28\29 9405:\28anonymous\20namespace\29::RRectBlurRec::getCategory\28\29\20const 9406:\28anonymous\20namespace\29::RRectBlurRec::diagnostic_only_getDiscardable\28\29\20const 9407:\28anonymous\20namespace\29::RRectBlurRec::bytesUsed\28\29\20const 9408:\28anonymous\20namespace\29::RRectBlurRec::Visitor\28SkResourceCache::Rec\20const&\2c\20void*\29 9409:\28anonymous\20namespace\29::PathSubRun::~PathSubRun\28\29.1 9410:\28anonymous\20namespace\29::PathSubRun::~PathSubRun\28\29 9411:\28anonymous\20namespace\29::PathSubRun::unflattenSize\28\29\20const 9412:\28anonymous\20namespace\29::PathSubRun::draw\28SkCanvas*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20std::__2::function\2c\20sktext::gpu::RendererData\29>\20const&\29\20const 9413:\28anonymous\20namespace\29::PathSubRun::doFlatten\28SkWriteBuffer&\29\20const 9414:\28anonymous\20namespace\29::MipMapRec::~MipMapRec\28\29.1 9415:\28anonymous\20namespace\29::MipMapRec::~MipMapRec\28\29 9416:\28anonymous\20namespace\29::MipMapRec::getCategory\28\29\20const 9417:\28anonymous\20namespace\29::MipMapRec::diagnostic_only_getDiscardable\28\29\20const 9418:\28anonymous\20namespace\29::MipMapRec::bytesUsed\28\29\20const 9419:\28anonymous\20namespace\29::MipMapRec::Finder\28SkResourceCache::Rec\20const&\2c\20void*\29 9420:\28anonymous\20namespace\29::MiddleOutShader::~MiddleOutShader\28\29.1 9421:\28anonymous\20namespace\29::MiddleOutShader::~MiddleOutShader\28\29 9422:\28anonymous\20namespace\29::MiddleOutShader::name\28\29\20const 9423:\28anonymous\20namespace\29::MiddleOutShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::emitVertexCode\28GrShaderCaps\20const&\2c\20GrPathTessellationShader\20const&\2c\20GrGLSLVertexBuilder*\2c\20GrGLSLVaryingHandler*\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 9424:\28anonymous\20namespace\29::MiddleOutShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 9425:\28anonymous\20namespace\29::MiddleOutShader::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 9426:\28anonymous\20namespace\29::MeshOp::~MeshOp\28\29.1 9427:\28anonymous\20namespace\29::MeshOp::visitProxies\28std::__2::function\20const&\29\20const 9428:\28anonymous\20namespace\29::MeshOp::programInfo\28\29 9429:\28anonymous\20namespace\29::MeshOp::onPrepareDraws\28GrMeshDrawTarget*\29 9430:\28anonymous\20namespace\29::MeshOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 9431:\28anonymous\20namespace\29::MeshOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 9432:\28anonymous\20namespace\29::MeshOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 9433:\28anonymous\20namespace\29::MeshOp::name\28\29\20const 9434:\28anonymous\20namespace\29::MeshOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 9435:\28anonymous\20namespace\29::MeshGP::~MeshGP\28\29.1 9436:\28anonymous\20namespace\29::MeshGP::onTextureSampler\28int\29\20const 9437:\28anonymous\20namespace\29::MeshGP::name\28\29\20const 9438:\28anonymous\20namespace\29::MeshGP::makeProgramImpl\28GrShaderCaps\20const&\29\20const 9439:\28anonymous\20namespace\29::MeshGP::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 9440:\28anonymous\20namespace\29::MeshGP::Impl::~Impl\28\29.1 9441:\28anonymous\20namespace\29::MeshGP::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 9442:\28anonymous\20namespace\29::MeshGP::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 9443:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::toLinearSrgb\28std::__2::basic_string\2c\20std::__2::allocator>\29 9444:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::sampleShader\28int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 9445:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::sampleColorFilter\28int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 9446:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::sampleBlender\28int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 9447:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::getMangledName\28char\20const*\29 9448:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::getMainName\28\29 9449:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::fromLinearSrgb\28std::__2::basic_string\2c\20std::__2::allocator>\29 9450:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::defineFunction\28char\20const*\2c\20char\20const*\2c\20bool\29 9451:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::declareUniform\28SkSL::VarDeclaration\20const*\29 9452:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::declareFunction\28char\20const*\29 9453:\28anonymous\20namespace\29::ImageFromPictureRec::~ImageFromPictureRec\28\29.1 9454:\28anonymous\20namespace\29::ImageFromPictureRec::~ImageFromPictureRec\28\29 9455:\28anonymous\20namespace\29::ImageFromPictureRec::getCategory\28\29\20const 9456:\28anonymous\20namespace\29::ImageFromPictureRec::bytesUsed\28\29\20const 9457:\28anonymous\20namespace\29::ImageFromPictureRec::Visitor\28SkResourceCache::Rec\20const&\2c\20void*\29 9458:\28anonymous\20namespace\29::HQDownSampler::buildLevel\28SkPixmap\20const&\2c\20SkPixmap\20const&\29 9459:\28anonymous\20namespace\29::GaussPass::startBlur\28\29 9460:\28anonymous\20namespace\29::GaussPass::blurSegment\28int\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int*\2c\20int\29 9461:\28anonymous\20namespace\29::GaussPass::MakeMaker\28double\2c\20SkArenaAlloc*\29::Maker::makePass\28void*\2c\20SkArenaAlloc*\29\20const 9462:\28anonymous\20namespace\29::GaussPass::MakeMaker\28double\2c\20SkArenaAlloc*\29::Maker::bufferSizeBytes\28\29\20const 9463:\28anonymous\20namespace\29::FillRectOpImpl::~FillRectOpImpl\28\29.1 9464:\28anonymous\20namespace\29::FillRectOpImpl::~FillRectOpImpl\28\29 9465:\28anonymous\20namespace\29::FillRectOpImpl::visitProxies\28std::__2::function\20const&\29\20const 9466:\28anonymous\20namespace\29::FillRectOpImpl::programInfo\28\29 9467:\28anonymous\20namespace\29::FillRectOpImpl::onPrepareDraws\28GrMeshDrawTarget*\29 9468:\28anonymous\20namespace\29::FillRectOpImpl::onPrePrepareDraws\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 9469:\28anonymous\20namespace\29::FillRectOpImpl::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 9470:\28anonymous\20namespace\29::FillRectOpImpl::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 9471:\28anonymous\20namespace\29::FillRectOpImpl::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 9472:\28anonymous\20namespace\29::FillRectOpImpl::name\28\29\20const 9473:\28anonymous\20namespace\29::FillRectOpImpl::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 9474:\28anonymous\20namespace\29::EllipticalRRectEffect::onMakeProgramImpl\28\29\20const 9475:\28anonymous\20namespace\29::EllipticalRRectEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 9476:\28anonymous\20namespace\29::EllipticalRRectEffect::name\28\29\20const 9477:\28anonymous\20namespace\29::EllipticalRRectEffect::clone\28\29\20const 9478:\28anonymous\20namespace\29::EllipticalRRectEffect::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 9479:\28anonymous\20namespace\29::EllipticalRRectEffect::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 9480:\28anonymous\20namespace\29::DrawableSubRun::~DrawableSubRun\28\29.1 9481:\28anonymous\20namespace\29::DrawableSubRun::~DrawableSubRun\28\29 9482:\28anonymous\20namespace\29::DrawableSubRun::unflattenSize\28\29\20const 9483:\28anonymous\20namespace\29::DrawableSubRun::draw\28SkCanvas*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20std::__2::function\2c\20sktext::gpu::RendererData\29>\20const&\29\20const 9484:\28anonymous\20namespace\29::DrawableSubRun::doFlatten\28SkWriteBuffer&\29\20const 9485:\28anonymous\20namespace\29::DrawAtlasPathShader::~DrawAtlasPathShader\28\29.1 9486:\28anonymous\20namespace\29::DrawAtlasPathShader::~DrawAtlasPathShader\28\29 9487:\28anonymous\20namespace\29::DrawAtlasPathShader::onTextureSampler\28int\29\20const 9488:\28anonymous\20namespace\29::DrawAtlasPathShader::name\28\29\20const 9489:\28anonymous\20namespace\29::DrawAtlasPathShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 9490:\28anonymous\20namespace\29::DrawAtlasPathShader::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 9491:\28anonymous\20namespace\29::DrawAtlasPathShader::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 9492:\28anonymous\20namespace\29::DrawAtlasPathShader::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 9493:\28anonymous\20namespace\29::DrawAtlasOpImpl::~DrawAtlasOpImpl\28\29.1 9494:\28anonymous\20namespace\29::DrawAtlasOpImpl::~DrawAtlasOpImpl\28\29 9495:\28anonymous\20namespace\29::DrawAtlasOpImpl::onPrepareDraws\28GrMeshDrawTarget*\29 9496:\28anonymous\20namespace\29::DrawAtlasOpImpl::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 9497:\28anonymous\20namespace\29::DrawAtlasOpImpl::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 9498:\28anonymous\20namespace\29::DrawAtlasOpImpl::name\28\29\20const 9499:\28anonymous\20namespace\29::DrawAtlasOpImpl::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 9500:\28anonymous\20namespace\29::DirectMaskSubRun::vertexStride\28SkMatrix\20const&\29\20const 9501:\28anonymous\20namespace\29::DirectMaskSubRun::unflattenSize\28\29\20const 9502:\28anonymous\20namespace\29::DirectMaskSubRun::regenerateAtlas\28int\2c\20int\2c\20std::__2::function\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>\29\20const 9503:\28anonymous\20namespace\29::DirectMaskSubRun::instanceFlags\28\29\20const 9504:\28anonymous\20namespace\29::DirectMaskSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 9505:\28anonymous\20namespace\29::DirectMaskSubRun::draw\28SkCanvas*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20std::__2::function\2c\20sktext::gpu::RendererData\29>\20const&\29\20const 9506:\28anonymous\20namespace\29::DirectMaskSubRun::doFlatten\28SkWriteBuffer&\29\20const 9507:\28anonymous\20namespace\29::DirectMaskSubRun::canReuse\28SkPaint\20const&\2c\20SkMatrix\20const&\29\20const 9508:\28anonymous\20namespace\29::DefaultPathOp::~DefaultPathOp\28\29.1 9509:\28anonymous\20namespace\29::DefaultPathOp::~DefaultPathOp\28\29 9510:\28anonymous\20namespace\29::DefaultPathOp::visitProxies\28std::__2::function\20const&\29\20const 9511:\28anonymous\20namespace\29::DefaultPathOp::onPrepareDraws\28GrMeshDrawTarget*\29 9512:\28anonymous\20namespace\29::DefaultPathOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 9513:\28anonymous\20namespace\29::DefaultPathOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 9514:\28anonymous\20namespace\29::DefaultPathOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 9515:\28anonymous\20namespace\29::DefaultPathOp::name\28\29\20const 9516:\28anonymous\20namespace\29::DefaultPathOp::fixedFunctionFlags\28\29\20const 9517:\28anonymous\20namespace\29::DefaultPathOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 9518:\28anonymous\20namespace\29::CircularRRectEffect::onMakeProgramImpl\28\29\20const 9519:\28anonymous\20namespace\29::CircularRRectEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 9520:\28anonymous\20namespace\29::CircularRRectEffect::name\28\29\20const 9521:\28anonymous\20namespace\29::CircularRRectEffect::clone\28\29\20const 9522:\28anonymous\20namespace\29::CircularRRectEffect::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 9523:\28anonymous\20namespace\29::CircularRRectEffect::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 9524:\28anonymous\20namespace\29::CachedTessellationsRec::~CachedTessellationsRec\28\29.1 9525:\28anonymous\20namespace\29::CachedTessellationsRec::~CachedTessellationsRec\28\29 9526:\28anonymous\20namespace\29::CachedTessellationsRec::getCategory\28\29\20const 9527:\28anonymous\20namespace\29::CachedTessellationsRec::bytesUsed\28\29\20const 9528:\28anonymous\20namespace\29::CachedTessellations::~CachedTessellations\28\29.1 9529:\28anonymous\20namespace\29::CacheImpl::~CacheImpl\28\29.1 9530:\28anonymous\20namespace\29::CacheImpl::set\28SkImageFilterCacheKey\20const&\2c\20SkImageFilter\20const*\2c\20skif::FilterResult\20const&\29 9531:\28anonymous\20namespace\29::CacheImpl::purge\28\29 9532:\28anonymous\20namespace\29::CacheImpl::purgeByImageFilter\28SkImageFilter\20const*\29 9533:\28anonymous\20namespace\29::CacheImpl::get\28SkImageFilterCacheKey\20const&\2c\20skif::FilterResult*\29\20const 9534:\28anonymous\20namespace\29::BoundingBoxShader::name\28\29\20const 9535:\28anonymous\20namespace\29::BoundingBoxShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 9536:\28anonymous\20namespace\29::BoundingBoxShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 9537:\28anonymous\20namespace\29::BoundingBoxShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 9538:\28anonymous\20namespace\29::AAHairlineOp::~AAHairlineOp\28\29.1 9539:\28anonymous\20namespace\29::AAHairlineOp::~AAHairlineOp\28\29 9540:\28anonymous\20namespace\29::AAHairlineOp::visitProxies\28std::__2::function\20const&\29\20const 9541:\28anonymous\20namespace\29::AAHairlineOp::onPrepareDraws\28GrMeshDrawTarget*\29 9542:\28anonymous\20namespace\29::AAHairlineOp::onPrePrepareDraws\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 9543:\28anonymous\20namespace\29::AAHairlineOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 9544:\28anonymous\20namespace\29::AAHairlineOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 9545:\28anonymous\20namespace\29::AAHairlineOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 9546:\28anonymous\20namespace\29::AAHairlineOp::name\28\29\20const 9547:\28anonymous\20namespace\29::AAHairlineOp::fixedFunctionFlags\28\29\20const 9548:\28anonymous\20namespace\29::AAHairlineOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 9549:YuvToRgbaRow 9550:YuvToRgba4444Row 9551:YuvToRgbRow 9552:YuvToRgb565Row 9553:YuvToBgraRow 9554:YuvToBgrRow 9555:YuvToArgbRow 9556:Write_CVT_Stretched 9557:Write_CVT 9558:WebPYuv444ToRgba_C 9559:WebPYuv444ToRgba4444_C 9560:WebPYuv444ToRgb_C 9561:WebPYuv444ToRgb565_C 9562:WebPYuv444ToBgra_C 9563:WebPYuv444ToBgr_C 9564:WebPYuv444ToArgb_C 9565:WebPRescalerImportRowShrink_C 9566:WebPRescalerImportRowExpand_C 9567:WebPRescalerExportRowShrink_C 9568:WebPRescalerExportRowExpand_C 9569:WebPMultRow_C 9570:WebPMultARGBRow_C 9571:WebPConvertRGBA32ToUV_C 9572:WebPConvertARGBToUV_C 9573:WebGLTextureImageGenerator::~WebGLTextureImageGenerator\28\29.1 9574:WebGLTextureImageGenerator::~WebGLTextureImageGenerator\28\29 9575:WebGLTextureImageGenerator::generateExternalTexture\28GrRecordingContext*\2c\20skgpu::Mipmapped\29 9576:Vertish_SkAntiHairBlitter::drawLine\28int\2c\20int\2c\20int\2c\20int\29 9577:Vertish_SkAntiHairBlitter::drawCap\28int\2c\20int\2c\20int\2c\20int\29 9578:VerticalUnfilter_C 9579:VerticalFilter_C 9580:VertState::Triangles\28VertState*\29 9581:VertState::TrianglesX\28VertState*\29 9582:VertState::TriangleStrip\28VertState*\29 9583:VertState::TriangleStripX\28VertState*\29 9584:VertState::TriangleFan\28VertState*\29 9585:VertState::TriangleFanX\28VertState*\29 9586:VR4_C 9587:VP8LTransformColorInverse_C 9588:VP8LPredictor9_C 9589:VP8LPredictor8_C 9590:VP8LPredictor7_C 9591:VP8LPredictor6_C 9592:VP8LPredictor5_C 9593:VP8LPredictor4_C 9594:VP8LPredictor3_C 9595:VP8LPredictor2_C 9596:VP8LPredictor1_C 9597:VP8LPredictor13_C 9598:VP8LPredictor12_C 9599:VP8LPredictor11_C 9600:VP8LPredictor10_C 9601:VP8LPredictor0_C 9602:VP8LConvertBGRAToRGB_C 9603:VP8LConvertBGRAToRGBA_C 9604:VP8LConvertBGRAToRGBA4444_C 9605:VP8LConvertBGRAToRGB565_C 9606:VP8LConvertBGRAToBGR_C 9607:VP8LAddGreenToBlueAndRed_C 9608:VLine_SkAntiHairBlitter::drawLine\28int\2c\20int\2c\20int\2c\20int\29 9609:VLine_SkAntiHairBlitter::drawCap\28int\2c\20int\2c\20int\2c\20int\29 9610:VL4_C 9611:VFilter8i_C 9612:VFilter8_C 9613:VFilter16i_C 9614:VFilter16_C 9615:VE8uv_C 9616:VE4_C 9617:VE16_C 9618:UpsampleRgbaLinePair_C 9619:UpsampleRgba4444LinePair_C 9620:UpsampleRgbLinePair_C 9621:UpsampleRgb565LinePair_C 9622:UpsampleBgraLinePair_C 9623:UpsampleBgrLinePair_C 9624:UpsampleArgbLinePair_C 9625:UnresolvedCodepoints\28skia::textlayout::Paragraph&\29 9626:UnicodeString_charAt\28int\2c\20void*\29 9627:TransformWHT_C 9628:TransformUV_C 9629:TransformTwo_C 9630:TransformDC_C 9631:TransformDCUV_C 9632:TransformAC3_C 9633:ToSVGString\28SkPath\20const&\29 9634:ToCmds\28SkPath\20const&\29 9635:TT_Set_MM_Blend 9636:TT_RunIns 9637:TT_Load_Simple_Glyph 9638:TT_Load_Glyph_Header 9639:TT_Load_Composite_Glyph 9640:TT_Get_Var_Design 9641:TT_Get_MM_Blend 9642:TT_Forget_Glyph_Frame 9643:TT_Access_Glyph_Frame 9644:TM8uv_C 9645:TM4_C 9646:TM16_C 9647:Sync 9648:SquareCapper\28SkPath*\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPath*\29 9649:Sprite_D32_S32::blitRect\28int\2c\20int\2c\20int\2c\20int\29 9650:SkWuffsFrameHolder::onGetFrame\28int\29\20const 9651:SkWuffsCodec::~SkWuffsCodec\28\29.1 9652:SkWuffsCodec::~SkWuffsCodec\28\29 9653:SkWuffsCodec::onIncrementalDecode\28int*\29 9654:SkWuffsCodec::onGetRepetitionCount\28\29 9655:SkWuffsCodec::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int*\29 9656:SkWuffsCodec::onGetFrameInfo\28int\2c\20SkCodec::FrameInfo*\29\20const 9657:SkWuffsCodec::onGetFrameCount\28\29 9658:SkWuffsCodec::getFrameHolder\28\29\20const 9659:SkWuffsCodec::getEncodedData\28\29\20const 9660:SkWriteICCProfile\28skcms_TransferFunction\20const&\2c\20skcms_Matrix3x3\20const&\29 9661:SkWebpDecoder::Decode\28std::__2::unique_ptr>\2c\20SkCodec::Result*\2c\20void*\29 9662:SkWebpCodec::~SkWebpCodec\28\29.1 9663:SkWebpCodec::~SkWebpCodec\28\29 9664:SkWebpCodec::onGetValidSubset\28SkIRect*\29\20const 9665:SkWebpCodec::onGetRepetitionCount\28\29 9666:SkWebpCodec::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int*\29 9667:SkWebpCodec::onGetFrameInfo\28int\2c\20SkCodec::FrameInfo*\29\20const 9668:SkWebpCodec::onGetFrameCount\28\29 9669:SkWebpCodec::getFrameHolder\28\29\20const 9670:SkWebpCodec::FrameHolder::~FrameHolder\28\29.1 9671:SkWebpCodec::FrameHolder::~FrameHolder\28\29 9672:SkWebpCodec::FrameHolder::onGetFrame\28int\29\20const 9673:SkWeakRefCnt::internal_dispose\28\29\20const 9674:SkWbmpDecoder::Decode\28std::__2::unique_ptr>\2c\20SkCodec::Result*\2c\20void*\29 9675:SkWbmpCodec::~SkWbmpCodec\28\29.1 9676:SkWbmpCodec::~SkWbmpCodec\28\29 9677:SkWbmpCodec::onStartScanlineDecode\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\29 9678:SkWbmpCodec::onSkipScanlines\28int\29 9679:SkWbmpCodec::onRewind\28\29 9680:SkWbmpCodec::onGetScanlines\28void*\2c\20int\2c\20unsigned\20long\29 9681:SkWbmpCodec::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int*\29 9682:SkWbmpCodec::getSampler\28bool\29 9683:SkWbmpCodec::conversionSupported\28SkImageInfo\20const&\2c\20bool\2c\20bool\29 9684:SkVertices::Builder*\20emscripten::internal::operator_new\28SkVertices::VertexMode&&\2c\20int&&\2c\20int&&\2c\20unsigned\20int&&\29 9685:SkUserTypeface::~SkUserTypeface\28\29.1 9686:SkUserTypeface::~SkUserTypeface\28\29 9687:SkUserTypeface::onOpenStream\28int*\29\20const 9688:SkUserTypeface::onGetUPEM\28\29\20const 9689:SkUserTypeface::onGetFontDescriptor\28SkFontDescriptor*\2c\20bool*\29\20const 9690:SkUserTypeface::onGetFamilyName\28SkString*\29\20const 9691:SkUserTypeface::onFilterRec\28SkScalerContextRec*\29\20const 9692:SkUserTypeface::onCreateScalerContext\28SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29\20const 9693:SkUserTypeface::onCountGlyphs\28\29\20const 9694:SkUserTypeface::onComputeBounds\28SkRect*\29\20const 9695:SkUserTypeface::onCharsToGlyphs\28int\20const*\2c\20int\2c\20unsigned\20short*\29\20const 9696:SkUserTypeface::getGlyphToUnicodeMap\28int*\29\20const 9697:SkUserScalerContext::~SkUserScalerContext\28\29 9698:SkUserScalerContext::generatePath\28SkGlyph\20const&\2c\20SkPath*\29 9699:SkUserScalerContext::generateMetrics\28SkGlyph\20const&\2c\20SkArenaAlloc*\29 9700:SkUserScalerContext::generateImage\28SkGlyph\20const&\2c\20void*\29 9701:SkUserScalerContext::generateFontMetrics\28SkFontMetrics*\29 9702:SkUserScalerContext::generateDrawable\28SkGlyph\20const&\29::DrawableMatrixWrapper::~DrawableMatrixWrapper\28\29.1 9703:SkUserScalerContext::generateDrawable\28SkGlyph\20const&\29::DrawableMatrixWrapper::~DrawableMatrixWrapper\28\29 9704:SkUserScalerContext::generateDrawable\28SkGlyph\20const&\29::DrawableMatrixWrapper::onGetBounds\28\29 9705:SkUserScalerContext::generateDrawable\28SkGlyph\20const&\29::DrawableMatrixWrapper::onDraw\28SkCanvas*\29 9706:SkUserScalerContext::generateDrawable\28SkGlyph\20const&\29::DrawableMatrixWrapper::onApproximateBytesUsed\28\29 9707:SkUserScalerContext::generateDrawable\28SkGlyph\20const&\29 9708:SkUnicode_icu::~SkUnicode_icu\28\29.1 9709:SkUnicode_icu::~SkUnicode_icu\28\29 9710:SkUnicode_icu::toUpper\28SkString\20const&\2c\20char\20const*\29 9711:SkUnicode_icu::toUpper\28SkString\20const&\29 9712:SkUnicode_icu::reorderVisual\28unsigned\20char\20const*\2c\20int\2c\20int*\29 9713:SkUnicode_icu::makeBreakIterator\28char\20const*\2c\20SkUnicode::BreakType\29 9714:SkUnicode_icu::makeBreakIterator\28SkUnicode::BreakType\29 9715:SkUnicode_icu::makeBidiIterator\28unsigned\20short\20const*\2c\20int\2c\20SkBidiIterator::Direction\29 9716:SkUnicode_icu::makeBidiIterator\28char\20const*\2c\20int\2c\20SkBidiIterator::Direction\29 9717:SkUnicode_icu::isWhitespace\28int\29 9718:SkUnicode_icu::isTabulation\28int\29 9719:SkUnicode_icu::isSpace\28int\29 9720:SkUnicode_icu::isRegionalIndicator\28int\29 9721:SkUnicode_icu::isIdeographic\28int\29 9722:SkUnicode_icu::isHardBreak\28int\29 9723:SkUnicode_icu::isEmoji\28int\29 9724:SkUnicode_icu::isEmojiModifier\28int\29 9725:SkUnicode_icu::isEmojiModifierBase\28int\29 9726:SkUnicode_icu::isEmojiComponent\28int\29 9727:SkUnicode_icu::isControl\28int\29 9728:SkUnicode_icu::getWords\28char\20const*\2c\20int\2c\20char\20const*\2c\20std::__2::vector>*\29 9729:SkUnicode_icu::getUtf8Words\28char\20const*\2c\20int\2c\20char\20const*\2c\20std::__2::vector>*\29 9730:SkUnicode_icu::getSentences\28char\20const*\2c\20int\2c\20char\20const*\2c\20std::__2::vector>*\29 9731:SkUnicode_icu::getBidiRegions\28char\20const*\2c\20int\2c\20SkUnicode::TextDirection\2c\20std::__2::vector>*\29 9732:SkUnicode_icu::computeCodeUnitFlags\28char16_t*\2c\20int\2c\20bool\2c\20skia_private::TArray*\29 9733:SkUnicode_icu::computeCodeUnitFlags\28char*\2c\20int\2c\20bool\2c\20skia_private::TArray*\29 9734:SkUnicodeBidiRunIterator::~SkUnicodeBidiRunIterator\28\29.1 9735:SkUnicodeBidiRunIterator::~SkUnicodeBidiRunIterator\28\29 9736:SkUnicodeBidiRunIterator::endOfCurrentRun\28\29\20const 9737:SkUnicodeBidiRunIterator::currentLevel\28\29\20const 9738:SkUnicodeBidiRunIterator::consume\28\29 9739:SkUnicodeBidiRunIterator::atEnd\28\29\20const 9740:SkTypeface_FreeTypeStream::~SkTypeface_FreeTypeStream\28\29.1 9741:SkTypeface_FreeTypeStream::~SkTypeface_FreeTypeStream\28\29 9742:SkTypeface_FreeTypeStream::onOpenStream\28int*\29\20const 9743:SkTypeface_FreeTypeStream::onMakeFontData\28\29\20const 9744:SkTypeface_FreeTypeStream::onMakeClone\28SkFontArguments\20const&\29\20const 9745:SkTypeface_FreeTypeStream::onGetFontDescriptor\28SkFontDescriptor*\2c\20bool*\29\20const 9746:SkTypeface_FreeType::onGlyphMaskNeedsCurrentColor\28\29\20const 9747:SkTypeface_FreeType::onGetVariationDesignPosition\28SkFontArguments::VariationPosition::Coordinate*\2c\20int\29\20const 9748:SkTypeface_FreeType::onGetVariationDesignParameters\28SkFontParameters::Variation::Axis*\2c\20int\29\20const 9749:SkTypeface_FreeType::onGetUPEM\28\29\20const 9750:SkTypeface_FreeType::onGetTableTags\28unsigned\20int*\29\20const 9751:SkTypeface_FreeType::onGetTableData\28unsigned\20int\2c\20unsigned\20long\2c\20unsigned\20long\2c\20void*\29\20const 9752:SkTypeface_FreeType::onGetPostScriptName\28SkString*\29\20const 9753:SkTypeface_FreeType::onGetKerningPairAdjustments\28unsigned\20short\20const*\2c\20int\2c\20int*\29\20const 9754:SkTypeface_FreeType::onGetAdvancedMetrics\28\29\20const 9755:SkTypeface_FreeType::onFilterRec\28SkScalerContextRec*\29\20const 9756:SkTypeface_FreeType::onCreateScalerContext\28SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29\20const 9757:SkTypeface_FreeType::onCreateFamilyNameIterator\28\29\20const 9758:SkTypeface_FreeType::onCountGlyphs\28\29\20const 9759:SkTypeface_FreeType::onCopyTableData\28unsigned\20int\29\20const 9760:SkTypeface_FreeType::onCharsToGlyphs\28int\20const*\2c\20int\2c\20unsigned\20short*\29\20const 9761:SkTypeface_FreeType::getPostScriptGlyphNames\28SkString*\29\20const 9762:SkTypeface_FreeType::getGlyphToUnicodeMap\28int*\29\20const 9763:SkTypeface_Empty::~SkTypeface_Empty\28\29 9764:SkTypeface_Custom::~SkTypeface_Custom\28\29.1 9765:SkTypeface_Custom::onGetFontDescriptor\28SkFontDescriptor*\2c\20bool*\29\20const 9766:SkTypeface::onCopyTableData\28unsigned\20int\29\20const 9767:SkTypeface::onComputeBounds\28SkRect*\29\20const 9768:SkTrimPE::onFilterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29\20const 9769:SkTrimPE::getTypeName\28\29\20const 9770:SkTriColorShader::type\28\29\20const 9771:SkTriColorShader::isOpaque\28\29\20const 9772:SkTriColorShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 9773:SkTransformShader::type\28\29\20const 9774:SkTransformShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 9775:SkTQuad::subDivide\28double\2c\20double\2c\20SkTCurve*\29\20const 9776:SkTQuad::setBounds\28SkDRect*\29\20const 9777:SkTQuad::ptAtT\28double\29\20const 9778:SkTQuad::make\28SkArenaAlloc&\29\20const 9779:SkTQuad::intersectRay\28SkIntersections*\2c\20SkDLine\20const&\29\20const 9780:SkTQuad::hullIntersects\28SkTCurve\20const&\2c\20bool*\29\20const 9781:SkTQuad::dxdyAtT\28double\29\20const 9782:SkTQuad::debugInit\28\29 9783:SkTCubic::subDivide\28double\2c\20double\2c\20SkTCurve*\29\20const 9784:SkTCubic::setBounds\28SkDRect*\29\20const 9785:SkTCubic::ptAtT\28double\29\20const 9786:SkTCubic::otherPts\28int\2c\20SkDPoint\20const**\29\20const 9787:SkTCubic::make\28SkArenaAlloc&\29\20const 9788:SkTCubic::intersectRay\28SkIntersections*\2c\20SkDLine\20const&\29\20const 9789:SkTCubic::hullIntersects\28SkTCurve\20const&\2c\20bool*\29\20const 9790:SkTCubic::hullIntersects\28SkDCubic\20const&\2c\20bool*\29\20const 9791:SkTCubic::dxdyAtT\28double\29\20const 9792:SkTCubic::debugInit\28\29 9793:SkTCubic::controlsInside\28\29\20const 9794:SkTCubic::collapsed\28\29\20const 9795:SkTConic::subDivide\28double\2c\20double\2c\20SkTCurve*\29\20const 9796:SkTConic::setBounds\28SkDRect*\29\20const 9797:SkTConic::ptAtT\28double\29\20const 9798:SkTConic::make\28SkArenaAlloc&\29\20const 9799:SkTConic::intersectRay\28SkIntersections*\2c\20SkDLine\20const&\29\20const 9800:SkTConic::hullIntersects\28SkTCurve\20const&\2c\20bool*\29\20const 9801:SkTConic::hullIntersects\28SkDQuad\20const&\2c\20bool*\29\20const 9802:SkTConic::dxdyAtT\28double\29\20const 9803:SkTConic::debugInit\28\29 9804:SkSwizzler::onSetSampleX\28int\29 9805:SkSwizzler::fillWidth\28\29\20const 9806:SkSweepGradient::getTypeName\28\29\20const 9807:SkSweepGradient::flatten\28SkWriteBuffer&\29\20const 9808:SkSweepGradient::asGradient\28SkShaderBase::GradientInfo*\2c\20SkMatrix*\29\20const 9809:SkSweepGradient::appendGradientStages\28SkArenaAlloc*\2c\20SkRasterPipeline*\2c\20SkRasterPipeline*\29\20const 9810:SkSurface_Raster::~SkSurface_Raster\28\29.1 9811:SkSurface_Raster::~SkSurface_Raster\28\29 9812:SkSurface_Raster::onWritePixels\28SkPixmap\20const&\2c\20int\2c\20int\29 9813:SkSurface_Raster::onRestoreBackingMutability\28\29 9814:SkSurface_Raster::onNewSurface\28SkImageInfo\20const&\29 9815:SkSurface_Raster::onNewImageSnapshot\28SkIRect\20const*\29 9816:SkSurface_Raster::onNewCanvas\28\29 9817:SkSurface_Raster::onDraw\28SkCanvas*\2c\20float\2c\20float\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\29 9818:SkSurface_Raster::onCopyOnWrite\28SkSurface::ContentChangeMode\29 9819:SkSurface_Raster::imageInfo\28\29\20const 9820:SkSurface_Ganesh::~SkSurface_Ganesh\28\29.1 9821:SkSurface_Ganesh::~SkSurface_Ganesh\28\29 9822:SkSurface_Ganesh::replaceBackendTexture\28GrBackendTexture\20const&\2c\20GrSurfaceOrigin\2c\20SkSurface::ContentChangeMode\2c\20void\20\28*\29\28void*\29\2c\20void*\29 9823:SkSurface_Ganesh::onWritePixels\28SkPixmap\20const&\2c\20int\2c\20int\29 9824:SkSurface_Ganesh::onWait\28int\2c\20GrBackendSemaphore\20const*\2c\20bool\29 9825:SkSurface_Ganesh::onNewSurface\28SkImageInfo\20const&\29 9826:SkSurface_Ganesh::onNewImageSnapshot\28SkIRect\20const*\29 9827:SkSurface_Ganesh::onNewCanvas\28\29 9828:SkSurface_Ganesh::onIsCompatible\28GrSurfaceCharacterization\20const&\29\20const 9829:SkSurface_Ganesh::onGetRecordingContext\28\29\20const 9830:SkSurface_Ganesh::onDraw\28SkCanvas*\2c\20float\2c\20float\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\29 9831:SkSurface_Ganesh::onDiscard\28\29 9832:SkSurface_Ganesh::onCopyOnWrite\28SkSurface::ContentChangeMode\29 9833:SkSurface_Ganesh::onCharacterize\28GrSurfaceCharacterization*\29\20const 9834:SkSurface_Ganesh::onCapabilities\28\29 9835:SkSurface_Ganesh::onAsyncRescaleAndReadPixels\28SkImageInfo\20const&\2c\20SkIRect\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29 9836:SkSurface_Ganesh::onAsyncRescaleAndReadPixelsYUV420\28SkYUVColorSpace\2c\20bool\2c\20sk_sp\2c\20SkIRect\2c\20SkISize\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29 9837:SkSurface_Ganesh::imageInfo\28\29\20const 9838:SkSurface_Base::onAsyncRescaleAndReadPixels\28SkImageInfo\20const&\2c\20SkIRect\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29 9839:SkSurface::imageInfo\28\29\20const 9840:SkSurface::height\28\29\20const 9841:SkStrikeCache::~SkStrikeCache\28\29.1 9842:SkStrikeCache::~SkStrikeCache\28\29 9843:SkStrikeCache::findOrCreateScopedStrike\28SkStrikeSpec\20const&\29 9844:SkStrike::~SkStrike\28\29.1 9845:SkStrike::~SkStrike\28\29 9846:SkStrike::strikePromise\28\29 9847:SkStrike::roundingSpec\28\29\20const 9848:SkStrike::prepareForPath\28SkGlyph*\29 9849:SkStrike::prepareForImage\28SkGlyph*\29 9850:SkStrike::prepareForDrawable\28SkGlyph*\29 9851:SkStrike::getDescriptor\28\29\20const 9852:SkSpriteBlitter_Memcpy::blitRect\28int\2c\20int\2c\20int\2c\20int\29 9853:SkSpriteBlitter::~SkSpriteBlitter\28\29.1 9854:SkSpriteBlitter::setup\28SkPixmap\20const&\2c\20int\2c\20int\2c\20SkPaint\20const&\29 9855:SkSpriteBlitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 9856:SkSpriteBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 9857:SkSpriteBlitter::blitH\28int\2c\20int\2c\20int\29 9858:SkSpecialImage_Raster::~SkSpecialImage_Raster\28\29.1 9859:SkSpecialImage_Raster::~SkSpecialImage_Raster\28\29 9860:SkSpecialImage_Raster::onMakeBackingStoreSubset\28SkIRect\20const&\29\20const 9861:SkSpecialImage_Raster::getSize\28\29\20const 9862:SkSpecialImage_Raster::backingStoreDimensions\28\29\20const 9863:SkSpecialImage_Raster::asShader\28SkTileMode\2c\20SkSamplingOptions\20const&\2c\20SkMatrix\20const&\2c\20bool\29\20const 9864:SkSpecialImage_Raster::asImage\28\29\20const 9865:SkSpecialImage_Gpu::~SkSpecialImage_Gpu\28\29.1 9866:SkSpecialImage_Gpu::~SkSpecialImage_Gpu\28\29 9867:SkSpecialImage_Gpu::onMakeBackingStoreSubset\28SkIRect\20const&\29\20const 9868:SkSpecialImage_Gpu::getSize\28\29\20const 9869:SkSpecialImage_Gpu::backingStoreDimensions\28\29\20const 9870:SkSpecialImage_Gpu::asImage\28\29\20const 9871:SkSpecialImage::~SkSpecialImage\28\29 9872:SkSpecialImage::asShader\28SkTileMode\2c\20SkSamplingOptions\20const&\2c\20SkMatrix\20const&\2c\20bool\29\20const 9873:SkShaper::TrivialLanguageRunIterator::~TrivialLanguageRunIterator\28\29.1 9874:SkShaper::TrivialLanguageRunIterator::~TrivialLanguageRunIterator\28\29 9875:SkShaper::TrivialLanguageRunIterator::currentLanguage\28\29\20const 9876:SkShaper::TrivialFontRunIterator::~TrivialFontRunIterator\28\29.1 9877:SkShaper::TrivialFontRunIterator::~TrivialFontRunIterator\28\29 9878:SkShaper::TrivialBiDiRunIterator::currentLevel\28\29\20const 9879:SkScan::HairSquarePath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 9880:SkScan::HairRoundPath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 9881:SkScan::HairPath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 9882:SkScan::AntiHairSquarePath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 9883:SkScan::AntiHairRoundPath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 9884:SkScan::AntiHairPath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 9885:SkScan::AntiFillPath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 9886:SkScalingCodec::onGetScaledDimensions\28float\29\20const 9887:SkScalingCodec::onDimensionsSupported\28SkISize\20const&\29 9888:SkScalerContext_FreeType::~SkScalerContext_FreeType\28\29.1 9889:SkScalerContext_FreeType::~SkScalerContext_FreeType\28\29 9890:SkScalerContext_FreeType::generatePath\28SkGlyph\20const&\2c\20SkPath*\29 9891:SkScalerContext_FreeType::generateMetrics\28SkGlyph\20const&\2c\20SkArenaAlloc*\29 9892:SkScalerContext_FreeType::generateImage\28SkGlyph\20const&\2c\20void*\29 9893:SkScalerContext_FreeType::generateFontMetrics\28SkFontMetrics*\29 9894:SkScalerContext_FreeType::generateDrawable\28SkGlyph\20const&\29 9895:SkScalerContext::MakeEmpty\28sk_sp\2c\20SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29::SkScalerContext_Empty::~SkScalerContext_Empty\28\29 9896:SkScalerContext::MakeEmpty\28sk_sp\2c\20SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29::SkScalerContext_Empty::generatePath\28SkGlyph\20const&\2c\20SkPath*\29 9897:SkScalerContext::MakeEmpty\28sk_sp\2c\20SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29::SkScalerContext_Empty::generateMetrics\28SkGlyph\20const&\2c\20SkArenaAlloc*\29 9898:SkScalerContext::MakeEmpty\28sk_sp\2c\20SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29::SkScalerContext_Empty::generateFontMetrics\28SkFontMetrics*\29 9899:SkSampledCodec::onGetSampledDimensions\28int\29\20const 9900:SkSampledCodec::onGetAndroidPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkAndroidCodec::AndroidOptions\20const&\29 9901:SkSRGBColorSpaceLuminance::toLuma\28float\2c\20float\29\20const 9902:SkSRGBColorSpaceLuminance::fromLuma\28float\2c\20float\29\20const 9903:SkSL::simplify_componentwise\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\29::$_3::__invoke\28double\2c\20double\29 9904:SkSL::simplify_componentwise\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\29::$_2::__invoke\28double\2c\20double\29 9905:SkSL::simplify_componentwise\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\29::$_1::__invoke\28double\2c\20double\29 9906:SkSL::simplify_componentwise\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\29::$_0::__invoke\28double\2c\20double\29 9907:SkSL::remove_break_statements\28std::__2::unique_ptr>&\29::RemoveBreaksWriter::visitStatementPtr\28std::__2::unique_ptr>&\29 9908:SkSL::hoist_vardecl_symbols_into_outer_scope\28SkSL::Context\20const&\2c\20SkSL::Block\20const&\2c\20SkSL::SymbolTable*\2c\20SkSL::SymbolTable*\29::SymbolHoister::visitStatement\28SkSL::Statement\20const&\29 9909:SkSL::eliminate_unreachable_code\28SkSpan>>\2c\20SkSL::ProgramUsage*\29::UnreachableCodeEliminator::~UnreachableCodeEliminator\28\29.1 9910:SkSL::eliminate_unreachable_code\28SkSpan>>\2c\20SkSL::ProgramUsage*\29::UnreachableCodeEliminator::~UnreachableCodeEliminator\28\29 9911:SkSL::eliminate_dead_local_variables\28SkSL::Context\20const&\2c\20SkSpan>>\2c\20SkSL::ProgramUsage*\29::DeadLocalVariableEliminator::~DeadLocalVariableEliminator\28\29.1 9912:SkSL::eliminate_dead_local_variables\28SkSL::Context\20const&\2c\20SkSpan>>\2c\20SkSL::ProgramUsage*\29::DeadLocalVariableEliminator::~DeadLocalVariableEliminator\28\29 9913:SkSL::eliminate_dead_local_variables\28SkSL::Context\20const&\2c\20SkSpan>>\2c\20SkSL::ProgramUsage*\29::DeadLocalVariableEliminator::visitStatementPtr\28std::__2::unique_ptr>&\29 9914:SkSL::eliminate_dead_local_variables\28SkSL::Context\20const&\2c\20SkSpan>>\2c\20SkSL::ProgramUsage*\29::DeadLocalVariableEliminator::visitExpressionPtr\28std::__2::unique_ptr>&\29 9915:SkSL::count_returns_at_end_of_control_flow\28SkSL::FunctionDefinition\20const&\29::CountReturnsAtEndOfControlFlow::visitStatement\28SkSL::Statement\20const&\29 9916:SkSL::\28anonymous\20namespace\29::VariableWriteVisitor::visitExpression\28SkSL::Expression\20const&\29 9917:SkSL::\28anonymous\20namespace\29::SampleOutsideMainVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 9918:SkSL::\28anonymous\20namespace\29::SampleOutsideMainVisitor::visitExpression\28SkSL::Expression\20const&\29 9919:SkSL::\28anonymous\20namespace\29::ReturnsNonOpaqueColorVisitor::visitStatement\28SkSL::Statement\20const&\29 9920:SkSL::\28anonymous\20namespace\29::ReturnsInputAlphaVisitor::visitStatement\28SkSL::Statement\20const&\29 9921:SkSL::\28anonymous\20namespace\29::ReturnsInputAlphaVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 9922:SkSL::\28anonymous\20namespace\29::ProgramUsageVisitor::visitStatement\28SkSL::Statement\20const&\29 9923:SkSL::\28anonymous\20namespace\29::NodeCountVisitor::visitStatement\28SkSL::Statement\20const&\29 9924:SkSL::\28anonymous\20namespace\29::NodeCountVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 9925:SkSL::\28anonymous\20namespace\29::NodeCountVisitor::visitExpression\28SkSL::Expression\20const&\29 9926:SkSL::\28anonymous\20namespace\29::MergeSampleUsageVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 9927:SkSL::\28anonymous\20namespace\29::MergeSampleUsageVisitor::visitExpression\28SkSL::Expression\20const&\29 9928:SkSL::\28anonymous\20namespace\29::FinalizationVisitor::~FinalizationVisitor\28\29.1 9929:SkSL::\28anonymous\20namespace\29::FinalizationVisitor::~FinalizationVisitor\28\29 9930:SkSL::\28anonymous\20namespace\29::FinalizationVisitor::visitExpression\28SkSL::Expression\20const&\29 9931:SkSL::\28anonymous\20namespace\29::ES2IndexingVisitor::~ES2IndexingVisitor\28\29.1 9932:SkSL::\28anonymous\20namespace\29::ES2IndexingVisitor::~ES2IndexingVisitor\28\29 9933:SkSL::\28anonymous\20namespace\29::ES2IndexingVisitor::visitStatement\28SkSL::Statement\20const&\29 9934:SkSL::\28anonymous\20namespace\29::ES2IndexingVisitor::visitExpression\28SkSL::Expression\20const&\29 9935:SkSL::VectorType::isAllowedInUniform\28SkSL::Position*\29\20const 9936:SkSL::VectorType::isAllowedInES2\28\29\20const 9937:SkSL::VariableReference::clone\28SkSL::Position\29\20const 9938:SkSL::Variable::~Variable\28\29.1 9939:SkSL::Variable::~Variable\28\29 9940:SkSL::Variable::setInterfaceBlock\28SkSL::InterfaceBlock*\29 9941:SkSL::Variable::mangledName\28\29\20const 9942:SkSL::Variable::layout\28\29\20const 9943:SkSL::Variable::description\28\29\20const 9944:SkSL::VarDeclaration::~VarDeclaration\28\29.1 9945:SkSL::VarDeclaration::~VarDeclaration\28\29 9946:SkSL::VarDeclaration::description\28\29\20const 9947:SkSL::TypeReference::clone\28SkSL::Position\29\20const 9948:SkSL::Type::minimumValue\28\29\20const 9949:SkSL::Type::maximumValue\28\29\20const 9950:SkSL::Type::isAllowedInUniform\28SkSL::Position*\29\20const 9951:SkSL::Type::fields\28\29\20const 9952:SkSL::Transform::HoistSwitchVarDeclarationsAtTopLevel\28SkSL::Context\20const&\2c\20std::__2::unique_ptr>\29::HoistSwitchVarDeclsVisitor::~HoistSwitchVarDeclsVisitor\28\29.1 9953:SkSL::Transform::HoistSwitchVarDeclarationsAtTopLevel\28SkSL::Context\20const&\2c\20std::__2::unique_ptr>\29::HoistSwitchVarDeclsVisitor::~HoistSwitchVarDeclsVisitor\28\29 9954:SkSL::Transform::HoistSwitchVarDeclarationsAtTopLevel\28SkSL::Context\20const&\2c\20std::__2::unique_ptr>\29::HoistSwitchVarDeclsVisitor::visitStatementPtr\28std::__2::unique_ptr>&\29 9955:SkSL::Tracer::var\28int\2c\20int\29 9956:SkSL::Tracer::scope\28int\29 9957:SkSL::Tracer::line\28int\29 9958:SkSL::Tracer::exit\28int\29 9959:SkSL::Tracer::enter\28int\29 9960:SkSL::TextureType::textureAccess\28\29\20const 9961:SkSL::TextureType::isMultisampled\28\29\20const 9962:SkSL::TextureType::isDepth\28\29\20const 9963:SkSL::TextureType::isArrayedTexture\28\29\20const 9964:SkSL::TernaryExpression::~TernaryExpression\28\29.1 9965:SkSL::TernaryExpression::~TernaryExpression\28\29 9966:SkSL::TernaryExpression::description\28SkSL::OperatorPrecedence\29\20const 9967:SkSL::TernaryExpression::clone\28SkSL::Position\29\20const 9968:SkSL::TProgramVisitor::visitExpression\28SkSL::Expression&\29 9969:SkSL::Swizzle::~Swizzle\28\29.1 9970:SkSL::Swizzle::~Swizzle\28\29 9971:SkSL::Swizzle::description\28SkSL::OperatorPrecedence\29\20const 9972:SkSL::Swizzle::clone\28SkSL::Position\29\20const 9973:SkSL::SwitchStatement::description\28\29\20const 9974:SkSL::SwitchCase::description\28\29\20const 9975:SkSL::StructType::slotType\28unsigned\20long\29\20const 9976:SkSL::StructType::isOrContainsUnsizedArray\28\29\20const 9977:SkSL::StructType::isOrContainsAtomic\28\29\20const 9978:SkSL::StructType::isOrContainsArray\28\29\20const 9979:SkSL::StructType::isInterfaceBlock\28\29\20const 9980:SkSL::StructType::isBuiltin\28\29\20const 9981:SkSL::StructType::isAllowedInUniform\28SkSL::Position*\29\20const 9982:SkSL::StructType::isAllowedInES2\28\29\20const 9983:SkSL::StructType::fields\28\29\20const 9984:SkSL::StructDefinition::description\28\29\20const 9985:SkSL::StringStream::~StringStream\28\29.1 9986:SkSL::StringStream::~StringStream\28\29 9987:SkSL::StringStream::write\28void\20const*\2c\20unsigned\20long\29 9988:SkSL::StringStream::writeText\28char\20const*\29 9989:SkSL::StringStream::write8\28unsigned\20char\29 9990:SkSL::SingleArgumentConstructor::~SingleArgumentConstructor\28\29 9991:SkSL::Setting::description\28SkSL::OperatorPrecedence\29\20const 9992:SkSL::Setting::clone\28SkSL::Position\29\20const 9993:SkSL::ScalarType::priority\28\29\20const 9994:SkSL::ScalarType::numberKind\28\29\20const 9995:SkSL::ScalarType::minimumValue\28\29\20const 9996:SkSL::ScalarType::maximumValue\28\29\20const 9997:SkSL::ScalarType::isAllowedInUniform\28SkSL::Position*\29\20const 9998:SkSL::ScalarType::isAllowedInES2\28\29\20const 9999:SkSL::ScalarType::bitWidth\28\29\20const 10000:SkSL::SamplerType::textureAccess\28\29\20const 10001:SkSL::SamplerType::isMultisampled\28\29\20const 10002:SkSL::SamplerType::isDepth\28\29\20const 10003:SkSL::SamplerType::isArrayedTexture\28\29\20const 10004:SkSL::SamplerType::dimensions\28\29\20const 10005:SkSL::ReturnStatement::description\28\29\20const 10006:SkSL::RP::VariableLValue::store\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 10007:SkSL::RP::VariableLValue::push\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 10008:SkSL::RP::VariableLValue::isWritable\28\29\20const 10009:SkSL::RP::VariableLValue::fixedSlotRange\28SkSL::RP::Generator*\29 10010:SkSL::RP::UnownedLValueSlice::store\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 10011:SkSL::RP::UnownedLValueSlice::push\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 10012:SkSL::RP::UnownedLValueSlice::fixedSlotRange\28SkSL::RP::Generator*\29 10013:SkSL::RP::SwizzleLValue::~SwizzleLValue\28\29.1 10014:SkSL::RP::SwizzleLValue::~SwizzleLValue\28\29 10015:SkSL::RP::SwizzleLValue::swizzle\28\29 10016:SkSL::RP::SwizzleLValue::store\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 10017:SkSL::RP::SwizzleLValue::push\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 10018:SkSL::RP::SwizzleLValue::fixedSlotRange\28SkSL::RP::Generator*\29 10019:SkSL::RP::ScratchLValue::~ScratchLValue\28\29.1 10020:SkSL::RP::ScratchLValue::push\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 10021:SkSL::RP::ScratchLValue::fixedSlotRange\28SkSL::RP::Generator*\29 10022:SkSL::RP::LValueSlice::~LValueSlice\28\29.1 10023:SkSL::RP::LValueSlice::~LValueSlice\28\29 10024:SkSL::RP::LValue::~LValue\28\29.1 10025:SkSL::RP::ImmutableLValue::push\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 10026:SkSL::RP::ImmutableLValue::fixedSlotRange\28SkSL::RP::Generator*\29 10027:SkSL::RP::DynamicIndexLValue::~DynamicIndexLValue\28\29.1 10028:SkSL::RP::DynamicIndexLValue::store\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 10029:SkSL::RP::DynamicIndexLValue::push\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 10030:SkSL::RP::DynamicIndexLValue::isWritable\28\29\20const 10031:SkSL::RP::DynamicIndexLValue::fixedSlotRange\28SkSL::RP::Generator*\29 10032:SkSL::ProgramVisitor::visitStatementPtr\28std::__2::unique_ptr>\20const&\29 10033:SkSL::ProgramVisitor::visitExpressionPtr\28std::__2::unique_ptr>\20const&\29 10034:SkSL::PrefixExpression::description\28SkSL::OperatorPrecedence\29\20const 10035:SkSL::PrefixExpression::clone\28SkSL::Position\29\20const 10036:SkSL::PostfixExpression::description\28SkSL::OperatorPrecedence\29\20const 10037:SkSL::PostfixExpression::clone\28SkSL::Position\29\20const 10038:SkSL::Poison::description\28SkSL::OperatorPrecedence\29\20const 10039:SkSL::Poison::clone\28SkSL::Position\29\20const 10040:SkSL::PipelineStage::Callbacks::getMainName\28\29 10041:SkSL::Parser::Checkpoint::ForwardingErrorReporter::~ForwardingErrorReporter\28\29.1 10042:SkSL::Parser::Checkpoint::ForwardingErrorReporter::~ForwardingErrorReporter\28\29 10043:SkSL::Parser::Checkpoint::ForwardingErrorReporter::handleError\28std::__2::basic_string_view>\2c\20SkSL::Position\29 10044:SkSL::Nop::description\28\29\20const 10045:SkSL::MultiArgumentConstructor::~MultiArgumentConstructor\28\29 10046:SkSL::ModifiersDeclaration::description\28\29\20const 10047:SkSL::MethodReference::description\28SkSL::OperatorPrecedence\29\20const 10048:SkSL::MethodReference::clone\28SkSL::Position\29\20const 10049:SkSL::MatrixType::slotCount\28\29\20const 10050:SkSL::MatrixType::rows\28\29\20const 10051:SkSL::MatrixType::isAllowedInES2\28\29\20const 10052:SkSL::LiteralType::minimumValue\28\29\20const 10053:SkSL::LiteralType::maximumValue\28\29\20const 10054:SkSL::Literal::getConstantValue\28int\29\20const 10055:SkSL::Literal::description\28SkSL::OperatorPrecedence\29\20const 10056:SkSL::Literal::compareConstant\28SkSL::Expression\20const&\29\20const 10057:SkSL::Literal::clone\28SkSL::Position\29\20const 10058:SkSL::Intrinsics::\28anonymous\20namespace\29::finalize_distance\28double\29 10059:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_uintBitsToFloat\28double\2c\20double\2c\20double\29 10060:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_trunc\28double\2c\20double\2c\20double\29 10061:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_tanh\28double\2c\20double\2c\20double\29 10062:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_tan\28double\2c\20double\2c\20double\29 10063:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_sub\28double\2c\20double\2c\20double\29 10064:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_step\28double\2c\20double\2c\20double\29 10065:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_sqrt\28double\2c\20double\2c\20double\29 10066:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_smoothstep\28double\2c\20double\2c\20double\29 10067:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_sinh\28double\2c\20double\2c\20double\29 10068:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_sin\28double\2c\20double\2c\20double\29 10069:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_saturate\28double\2c\20double\2c\20double\29 10070:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_radians\28double\2c\20double\2c\20double\29 10071:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_pow\28double\2c\20double\2c\20double\29 10072:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_mod\28double\2c\20double\2c\20double\29 10073:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_mix\28double\2c\20double\2c\20double\29 10074:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_min\28double\2c\20double\2c\20double\29 10075:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_max\28double\2c\20double\2c\20double\29 10076:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_log\28double\2c\20double\2c\20double\29 10077:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_log2\28double\2c\20double\2c\20double\29 10078:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_inversesqrt\28double\2c\20double\2c\20double\29 10079:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_intBitsToFloat\28double\2c\20double\2c\20double\29 10080:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_fract\28double\2c\20double\2c\20double\29 10081:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_fma\28double\2c\20double\2c\20double\29 10082:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_floor\28double\2c\20double\2c\20double\29 10083:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_floatBitsToUint\28double\2c\20double\2c\20double\29 10084:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_floatBitsToInt\28double\2c\20double\2c\20double\29 10085:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_exp\28double\2c\20double\2c\20double\29 10086:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_exp2\28double\2c\20double\2c\20double\29 10087:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_div\28double\2c\20double\2c\20double\29 10088:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_degrees\28double\2c\20double\2c\20double\29 10089:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_cosh\28double\2c\20double\2c\20double\29 10090:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_cos\28double\2c\20double\2c\20double\29 10091:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_clamp\28double\2c\20double\2c\20double\29 10092:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_ceil\28double\2c\20double\2c\20double\29 10093:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_atanh\28double\2c\20double\2c\20double\29 10094:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_atan\28double\2c\20double\2c\20double\29 10095:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_atan2\28double\2c\20double\2c\20double\29 10096:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_asinh\28double\2c\20double\2c\20double\29 10097:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_asin\28double\2c\20double\2c\20double\29 10098:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_add\28double\2c\20double\2c\20double\29 10099:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_acosh\28double\2c\20double\2c\20double\29 10100:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_acos\28double\2c\20double\2c\20double\29 10101:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_abs\28double\2c\20double\2c\20double\29 10102:SkSL::Intrinsics::\28anonymous\20namespace\29::compare_notEqual\28double\2c\20double\29 10103:SkSL::Intrinsics::\28anonymous\20namespace\29::compare_lessThan\28double\2c\20double\29 10104:SkSL::Intrinsics::\28anonymous\20namespace\29::compare_lessThanEqual\28double\2c\20double\29 10105:SkSL::Intrinsics::\28anonymous\20namespace\29::compare_greaterThan\28double\2c\20double\29 10106:SkSL::Intrinsics::\28anonymous\20namespace\29::compare_greaterThanEqual\28double\2c\20double\29 10107:SkSL::Intrinsics::\28anonymous\20namespace\29::compare_equal\28double\2c\20double\29 10108:SkSL::Intrinsics::\28anonymous\20namespace\29::coalesce_dot\28double\2c\20double\2c\20double\29 10109:SkSL::Intrinsics::\28anonymous\20namespace\29::coalesce_distance\28double\2c\20double\2c\20double\29 10110:SkSL::Intrinsics::\28anonymous\20namespace\29::coalesce_any\28double\2c\20double\2c\20double\29 10111:SkSL::Intrinsics::\28anonymous\20namespace\29::coalesce_all\28double\2c\20double\2c\20double\29 10112:SkSL::InterfaceBlock::~InterfaceBlock\28\29.1 10113:SkSL::InterfaceBlock::description\28\29\20const 10114:SkSL::IndexExpression::~IndexExpression\28\29.1 10115:SkSL::IndexExpression::~IndexExpression\28\29 10116:SkSL::IndexExpression::description\28SkSL::OperatorPrecedence\29\20const 10117:SkSL::IndexExpression::clone\28SkSL::Position\29\20const 10118:SkSL::IfStatement::~IfStatement\28\29.1 10119:SkSL::IfStatement::~IfStatement\28\29 10120:SkSL::IfStatement::description\28\29\20const 10121:SkSL::GlobalVarDeclaration::description\28\29\20const 10122:SkSL::GenericType::slotType\28unsigned\20long\29\20const 10123:SkSL::GenericType::coercibleTypes\28\29\20const 10124:SkSL::GLSLCodeGenerator::~GLSLCodeGenerator\28\29.1 10125:SkSL::FunctionReference::description\28SkSL::OperatorPrecedence\29\20const 10126:SkSL::FunctionReference::clone\28SkSL::Position\29\20const 10127:SkSL::FunctionPrototype::description\28\29\20const 10128:SkSL::FunctionDefinition::description\28\29\20const 10129:SkSL::FunctionDefinition::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::FunctionDeclaration\20const&\2c\20std::__2::unique_ptr>\2c\20bool\29::Finalizer::~Finalizer\28\29.1 10130:SkSL::FunctionDefinition::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::FunctionDeclaration\20const&\2c\20std::__2::unique_ptr>\2c\20bool\29::Finalizer::~Finalizer\28\29 10131:SkSL::FunctionCall::description\28SkSL::OperatorPrecedence\29\20const 10132:SkSL::FunctionCall::clone\28SkSL::Position\29\20const 10133:SkSL::ForStatement::~ForStatement\28\29.1 10134:SkSL::ForStatement::~ForStatement\28\29 10135:SkSL::ForStatement::description\28\29\20const 10136:SkSL::FieldSymbol::description\28\29\20const 10137:SkSL::FieldAccess::clone\28SkSL::Position\29\20const 10138:SkSL::Extension::description\28\29\20const 10139:SkSL::ExtendedVariable::~ExtendedVariable\28\29.1 10140:SkSL::ExtendedVariable::~ExtendedVariable\28\29 10141:SkSL::ExtendedVariable::setInterfaceBlock\28SkSL::InterfaceBlock*\29 10142:SkSL::ExtendedVariable::mangledName\28\29\20const 10143:SkSL::ExtendedVariable::layout\28\29\20const 10144:SkSL::ExtendedVariable::interfaceBlock\28\29\20const 10145:SkSL::ExtendedVariable::detachDeadInterfaceBlock\28\29 10146:SkSL::ExpressionStatement::description\28\29\20const 10147:SkSL::Expression::getConstantValue\28int\29\20const 10148:SkSL::EmptyExpression::description\28SkSL::OperatorPrecedence\29\20const 10149:SkSL::EmptyExpression::clone\28SkSL::Position\29\20const 10150:SkSL::DoStatement::description\28\29\20const 10151:SkSL::DiscardStatement::description\28\29\20const 10152:SkSL::DebugTracePriv::~DebugTracePriv\28\29.1 10153:SkSL::DebugTracePriv::writeTrace\28SkWStream*\29\20const 10154:SkSL::DebugTracePriv::dump\28SkWStream*\29\20const 10155:SkSL::CountReturnsWithLimit::visitStatement\28SkSL::Statement\20const&\29 10156:SkSL::ContinueStatement::description\28\29\20const 10157:SkSL::ConstructorStruct::clone\28SkSL::Position\29\20const 10158:SkSL::ConstructorSplat::getConstantValue\28int\29\20const 10159:SkSL::ConstructorSplat::clone\28SkSL::Position\29\20const 10160:SkSL::ConstructorScalarCast::clone\28SkSL::Position\29\20const 10161:SkSL::ConstructorMatrixResize::getConstantValue\28int\29\20const 10162:SkSL::ConstructorMatrixResize::clone\28SkSL::Position\29\20const 10163:SkSL::ConstructorDiagonalMatrix::getConstantValue\28int\29\20const 10164:SkSL::ConstructorDiagonalMatrix::clone\28SkSL::Position\29\20const 10165:SkSL::ConstructorCompoundCast::clone\28SkSL::Position\29\20const 10166:SkSL::ConstructorCompound::clone\28SkSL::Position\29\20const 10167:SkSL::ConstructorArrayCast::clone\28SkSL::Position\29\20const 10168:SkSL::ConstructorArray::clone\28SkSL::Position\29\20const 10169:SkSL::Compiler::CompilerErrorReporter::handleError\28std::__2::basic_string_view>\2c\20SkSL::Position\29 10170:SkSL::CodeGenerator::~CodeGenerator\28\29 10171:SkSL::ChildCall::description\28SkSL::OperatorPrecedence\29\20const 10172:SkSL::ChildCall::clone\28SkSL::Position\29\20const 10173:SkSL::BreakStatement::description\28\29\20const 10174:SkSL::Block::~Block\28\29.1 10175:SkSL::Block::~Block\28\29 10176:SkSL::Block::isEmpty\28\29\20const 10177:SkSL::Block::description\28\29\20const 10178:SkSL::BinaryExpression::~BinaryExpression\28\29.1 10179:SkSL::BinaryExpression::~BinaryExpression\28\29 10180:SkSL::BinaryExpression::description\28SkSL::OperatorPrecedence\29\20const 10181:SkSL::BinaryExpression::clone\28SkSL::Position\29\20const 10182:SkSL::ArrayType::slotType\28unsigned\20long\29\20const 10183:SkSL::ArrayType::slotCount\28\29\20const 10184:SkSL::ArrayType::isUnsizedArray\28\29\20const 10185:SkSL::ArrayType::isOrContainsUnsizedArray\28\29\20const 10186:SkSL::ArrayType::isOrContainsAtomic\28\29\20const 10187:SkSL::ArrayType::isBuiltin\28\29\20const 10188:SkSL::ArrayType::isAllowedInUniform\28SkSL::Position*\29\20const 10189:SkSL::AnyConstructor::getConstantValue\28int\29\20const 10190:SkSL::AnyConstructor::description\28SkSL::OperatorPrecedence\29\20const 10191:SkSL::AnyConstructor::compareConstant\28SkSL::Expression\20const&\29\20const 10192:SkSL::Analysis::IsDynamicallyUniformExpression\28SkSL::Expression\20const&\29::IsDynamicallyUniformExpressionVisitor::visitExpression\28SkSL::Expression\20const&\29 10193:SkSL::Analysis::IsCompileTimeConstant\28SkSL::Expression\20const&\29::IsCompileTimeConstantVisitor::visitExpression\28SkSL::Expression\20const&\29 10194:SkSL::Analysis::HasSideEffects\28SkSL::Expression\20const&\29::HasSideEffectsVisitor::visitExpression\28SkSL::Expression\20const&\29 10195:SkSL::Analysis::ContainsVariable\28SkSL::Expression\20const&\2c\20SkSL::Variable\20const&\29::ContainsVariableVisitor::visitExpression\28SkSL::Expression\20const&\29 10196:SkSL::Analysis::ContainsRTAdjust\28SkSL::Expression\20const&\29::ContainsRTAdjustVisitor::visitExpression\28SkSL::Expression\20const&\29 10197:SkSL::Analysis::CheckProgramStructure\28SkSL::Program\20const&\2c\20bool\29::ProgramSizeVisitor::~ProgramSizeVisitor\28\29.1 10198:SkSL::Analysis::CheckProgramStructure\28SkSL::Program\20const&\2c\20bool\29::ProgramSizeVisitor::~ProgramSizeVisitor\28\29 10199:SkSL::Analysis::CheckProgramStructure\28SkSL::Program\20const&\2c\20bool\29::ProgramSizeVisitor::visitStatement\28SkSL::Statement\20const&\29 10200:SkSL::Analysis::CheckProgramStructure\28SkSL::Program\20const&\2c\20bool\29::ProgramSizeVisitor::visitExpression\28SkSL::Expression\20const&\29 10201:SkSL::AliasType::textureAccess\28\29\20const 10202:SkSL::AliasType::slotType\28unsigned\20long\29\20const 10203:SkSL::AliasType::slotCount\28\29\20const 10204:SkSL::AliasType::rows\28\29\20const 10205:SkSL::AliasType::priority\28\29\20const 10206:SkSL::AliasType::isVector\28\29\20const 10207:SkSL::AliasType::isUnsizedArray\28\29\20const 10208:SkSL::AliasType::isStruct\28\29\20const 10209:SkSL::AliasType::isScalar\28\29\20const 10210:SkSL::AliasType::isMultisampled\28\29\20const 10211:SkSL::AliasType::isMatrix\28\29\20const 10212:SkSL::AliasType::isLiteral\28\29\20const 10213:SkSL::AliasType::isInterfaceBlock\28\29\20const 10214:SkSL::AliasType::isDepth\28\29\20const 10215:SkSL::AliasType::isArrayedTexture\28\29\20const 10216:SkSL::AliasType::isArray\28\29\20const 10217:SkSL::AliasType::dimensions\28\29\20const 10218:SkSL::AliasType::componentType\28\29\20const 10219:SkSL::AliasType::columns\28\29\20const 10220:SkSL::AliasType::coercibleTypes\28\29\20const 10221:SkRuntimeShader::~SkRuntimeShader\28\29.1 10222:SkRuntimeShader::type\28\29\20const 10223:SkRuntimeShader::isOpaque\28\29\20const 10224:SkRuntimeShader::getTypeName\28\29\20const 10225:SkRuntimeShader::flatten\28SkWriteBuffer&\29\20const 10226:SkRuntimeShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 10227:SkRuntimeEffect::~SkRuntimeEffect\28\29.1 10228:SkRuntimeEffect::MakeFromSource\28SkString\2c\20SkRuntimeEffect::Options\20const&\2c\20SkSL::ProgramKind\29 10229:SkRuntimeColorFilter::~SkRuntimeColorFilter\28\29.1 10230:SkRuntimeColorFilter::~SkRuntimeColorFilter\28\29 10231:SkRuntimeColorFilter::onIsAlphaUnchanged\28\29\20const 10232:SkRuntimeColorFilter::getTypeName\28\29\20const 10233:SkRuntimeColorFilter::appendStages\28SkStageRec\20const&\2c\20bool\29\20const 10234:SkRuntimeBlender::~SkRuntimeBlender\28\29.1 10235:SkRuntimeBlender::~SkRuntimeBlender\28\29 10236:SkRuntimeBlender::onAppendStages\28SkStageRec\20const&\29\20const 10237:SkRuntimeBlender::getTypeName\28\29\20const 10238:SkRgnClipBlitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 10239:SkRgnClipBlitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 10240:SkRgnClipBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 10241:SkRgnClipBlitter::blitH\28int\2c\20int\2c\20int\29 10242:SkRgnClipBlitter::blitAntiRect\28int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\29 10243:SkRgnClipBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 10244:SkRgnBuilder::~SkRgnBuilder\28\29.1 10245:SkRgnBuilder::blitH\28int\2c\20int\2c\20int\29 10246:SkResourceCache::SetTotalByteLimit\28unsigned\20long\29 10247:SkResourceCache::GetTotalBytesUsed\28\29 10248:SkResourceCache::GetTotalByteLimit\28\29 10249:SkRescaleAndReadPixels\28SkBitmap\2c\20SkImageInfo\20const&\2c\20SkIRect\20const&\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29::Result::~Result\28\29.1 10250:SkRescaleAndReadPixels\28SkBitmap\2c\20SkImageInfo\20const&\2c\20SkIRect\20const&\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29::Result::~Result\28\29 10251:SkRescaleAndReadPixels\28SkBitmap\2c\20SkImageInfo\20const&\2c\20SkIRect\20const&\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29::Result::data\28int\29\20const 10252:SkRefCntSet::~SkRefCntSet\28\29.1 10253:SkRefCntSet::incPtr\28void*\29 10254:SkRefCntSet::decPtr\28void*\29 10255:SkRectClipBlitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 10256:SkRectClipBlitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 10257:SkRectClipBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 10258:SkRectClipBlitter::blitH\28int\2c\20int\2c\20int\29 10259:SkRectClipBlitter::blitAntiRect\28int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\29 10260:SkRectClipBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 10261:SkRecorder::~SkRecorder\28\29.1 10262:SkRecorder::~SkRecorder\28\29 10263:SkRecorder::willSave\28\29 10264:SkRecorder::onResetClip\28\29 10265:SkRecorder::onDrawVerticesObject\28SkVertices\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 10266:SkRecorder::onDrawTextBlob\28SkTextBlob\20const*\2c\20float\2c\20float\2c\20SkPaint\20const&\29 10267:SkRecorder::onDrawSlug\28sktext::gpu::Slug\20const*\2c\20SkPaint\20const&\29 10268:SkRecorder::onDrawShadowRec\28SkPath\20const&\2c\20SkDrawShadowRec\20const&\29 10269:SkRecorder::onDrawRegion\28SkRegion\20const&\2c\20SkPaint\20const&\29 10270:SkRecorder::onDrawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 10271:SkRecorder::onDrawRRect\28SkRRect\20const&\2c\20SkPaint\20const&\29 10272:SkRecorder::onDrawPoints\28SkCanvas::PointMode\2c\20unsigned\20long\2c\20SkPoint\20const*\2c\20SkPaint\20const&\29 10273:SkRecorder::onDrawPicture\28SkPicture\20const*\2c\20SkMatrix\20const*\2c\20SkPaint\20const*\29 10274:SkRecorder::onDrawPath\28SkPath\20const&\2c\20SkPaint\20const&\29 10275:SkRecorder::onDrawPatch\28SkPoint\20const*\2c\20unsigned\20int\20const*\2c\20SkPoint\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 10276:SkRecorder::onDrawPaint\28SkPaint\20const&\29 10277:SkRecorder::onDrawOval\28SkRect\20const&\2c\20SkPaint\20const&\29 10278:SkRecorder::onDrawMesh\28SkMesh\20const&\2c\20sk_sp\2c\20SkPaint\20const&\29 10279:SkRecorder::onDrawImageRect2\28SkImage\20const*\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 10280:SkRecorder::onDrawImageLattice2\28SkImage\20const*\2c\20SkCanvas::Lattice\20const&\2c\20SkRect\20const&\2c\20SkFilterMode\2c\20SkPaint\20const*\29 10281:SkRecorder::onDrawImage2\28SkImage\20const*\2c\20float\2c\20float\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\29 10282:SkRecorder::onDrawGlyphRunList\28sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\29 10283:SkRecorder::onDrawEdgeAAQuad\28SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkBlendMode\29 10284:SkRecorder::onDrawEdgeAAImageSet2\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 10285:SkRecorder::onDrawDrawable\28SkDrawable*\2c\20SkMatrix\20const*\29 10286:SkRecorder::onDrawDRRect\28SkRRect\20const&\2c\20SkRRect\20const&\2c\20SkPaint\20const&\29 10287:SkRecorder::onDrawBehind\28SkPaint\20const&\29 10288:SkRecorder::onDrawAtlas2\28SkImage\20const*\2c\20SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20SkBlendMode\2c\20SkSamplingOptions\20const&\2c\20SkRect\20const*\2c\20SkPaint\20const*\29 10289:SkRecorder::onDrawArc\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 10290:SkRecorder::onDrawAnnotation\28SkRect\20const&\2c\20char\20const*\2c\20SkData*\29 10291:SkRecorder::onDoSaveBehind\28SkRect\20const*\29 10292:SkRecorder::onClipShader\28sk_sp\2c\20SkClipOp\29 10293:SkRecorder::onClipRegion\28SkRegion\20const&\2c\20SkClipOp\29 10294:SkRecorder::onClipRect\28SkRect\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 10295:SkRecorder::onClipRRect\28SkRRect\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 10296:SkRecorder::onClipPath\28SkPath\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 10297:SkRecorder::getSaveLayerStrategy\28SkCanvas::SaveLayerRec\20const&\29 10298:SkRecorder::didTranslate\28float\2c\20float\29 10299:SkRecorder::didSetM44\28SkM44\20const&\29 10300:SkRecorder::didScale\28float\2c\20float\29 10301:SkRecorder::didRestore\28\29 10302:SkRecorder::didConcat44\28SkM44\20const&\29 10303:SkRecordedDrawable::~SkRecordedDrawable\28\29.1 10304:SkRecordedDrawable::~SkRecordedDrawable\28\29 10305:SkRecordedDrawable::onMakePictureSnapshot\28\29 10306:SkRecordedDrawable::onGetBounds\28\29 10307:SkRecordedDrawable::onDraw\28SkCanvas*\29 10308:SkRecordedDrawable::onApproximateBytesUsed\28\29 10309:SkRecordedDrawable::getTypeName\28\29\20const 10310:SkRecordedDrawable::flatten\28SkWriteBuffer&\29\20const 10311:SkRecord::~SkRecord\28\29.1 10312:SkRecord::~SkRecord\28\29 10313:SkRasterPipelineSpriteBlitter::~SkRasterPipelineSpriteBlitter\28\29.1 10314:SkRasterPipelineSpriteBlitter::~SkRasterPipelineSpriteBlitter\28\29 10315:SkRasterPipelineSpriteBlitter::setup\28SkPixmap\20const&\2c\20int\2c\20int\2c\20SkPaint\20const&\29 10316:SkRasterPipelineSpriteBlitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 10317:SkRasterPipelineBlitter::~SkRasterPipelineBlitter\28\29.1 10318:SkRasterPipelineBlitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 10319:SkRasterPipelineBlitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 10320:SkRasterPipelineBlitter::blitH\28int\2c\20int\2c\20int\29 10321:SkRasterPipelineBlitter::blitAntiV2\28int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 10322:SkRasterPipelineBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 10323:SkRasterPipelineBlitter::blitAntiH2\28int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 10324:SkRasterPipelineBlitter::Create\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkArenaAlloc*\2c\20SkRasterPipeline\20const&\2c\20bool\2c\20bool\2c\20SkShader\20const*\29::$_3::__invoke\28SkPixmap*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20long\20long\29 10325:SkRasterPipelineBlitter::Create\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkArenaAlloc*\2c\20SkRasterPipeline\20const&\2c\20bool\2c\20bool\2c\20SkShader\20const*\29::$_2::__invoke\28SkPixmap*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20long\20long\29 10326:SkRasterPipelineBlitter::Create\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkArenaAlloc*\2c\20SkRasterPipeline\20const&\2c\20bool\2c\20bool\2c\20SkShader\20const*\29::$_1::__invoke\28SkPixmap*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20long\20long\29 10327:SkRasterPipelineBlitter::Create\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkArenaAlloc*\2c\20SkRasterPipeline\20const&\2c\20bool\2c\20bool\2c\20SkShader\20const*\29::$_0::__invoke\28SkPixmap*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20long\20long\29 10328:SkRadialGradient::getTypeName\28\29\20const 10329:SkRadialGradient::flatten\28SkWriteBuffer&\29\20const 10330:SkRadialGradient::asGradient\28SkShaderBase::GradientInfo*\2c\20SkMatrix*\29\20const 10331:SkRadialGradient::appendGradientStages\28SkArenaAlloc*\2c\20SkRasterPipeline*\2c\20SkRasterPipeline*\29\20const 10332:SkRTree::~SkRTree\28\29.1 10333:SkRTree::~SkRTree\28\29 10334:SkRTree::search\28SkRect\20const&\2c\20std::__2::vector>*\29\20const 10335:SkRTree::insert\28SkRect\20const*\2c\20int\29 10336:SkRTree::bytesUsed\28\29\20const 10337:SkPtrSet::~SkPtrSet\28\29 10338:SkPngNormalDecoder::~SkPngNormalDecoder\28\29 10339:SkPngNormalDecoder::setRange\28int\2c\20int\2c\20void*\2c\20unsigned\20long\29 10340:SkPngNormalDecoder::decode\28int*\29 10341:SkPngNormalDecoder::decodeAllRows\28void*\2c\20unsigned\20long\2c\20int*\29 10342:SkPngNormalDecoder::RowCallback\28png_struct_def*\2c\20unsigned\20char*\2c\20unsigned\20int\2c\20int\29 10343:SkPngNormalDecoder::AllRowsCallback\28png_struct_def*\2c\20unsigned\20char*\2c\20unsigned\20int\2c\20int\29 10344:SkPngInterlacedDecoder::~SkPngInterlacedDecoder\28\29.1 10345:SkPngInterlacedDecoder::~SkPngInterlacedDecoder\28\29 10346:SkPngInterlacedDecoder::setRange\28int\2c\20int\2c\20void*\2c\20unsigned\20long\29 10347:SkPngInterlacedDecoder::decode\28int*\29 10348:SkPngInterlacedDecoder::decodeAllRows\28void*\2c\20unsigned\20long\2c\20int*\29 10349:SkPngInterlacedDecoder::InterlacedRowCallback\28png_struct_def*\2c\20unsigned\20char*\2c\20unsigned\20int\2c\20int\29 10350:SkPngEncoderImpl::~SkPngEncoderImpl\28\29.1 10351:SkPngEncoderImpl::~SkPngEncoderImpl\28\29 10352:SkPngEncoderImpl::onEncodeRows\28int\29 10353:SkPngDecoder::Decode\28std::__2::unique_ptr>\2c\20SkCodec::Result*\2c\20void*\29 10354:SkPngCodec::onStartIncrementalDecode\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\29 10355:SkPngCodec::onRewind\28\29 10356:SkPngCodec::onIncrementalDecode\28int*\29 10357:SkPngCodec::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int*\29 10358:SkPngCodec::getSampler\28bool\29 10359:SkPngCodec::createColorTable\28SkImageInfo\20const&\29 10360:SkPixmap::erase\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkIRect\20const*\29\20const::$_2::__invoke\28void*\2c\20unsigned\20long\20long\2c\20int\29 10361:SkPixmap::erase\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkIRect\20const*\29\20const::$_1::__invoke\28void*\2c\20unsigned\20long\20long\2c\20int\29 10362:SkPixmap::erase\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkIRect\20const*\29\20const::$_0::__invoke\28void*\2c\20unsigned\20long\20long\2c\20int\29 10363:SkPixelRef::~SkPixelRef\28\29.1 10364:SkPictureShader::~SkPictureShader\28\29.1 10365:SkPictureShader::~SkPictureShader\28\29 10366:SkPictureShader::type\28\29\20const 10367:SkPictureShader::getTypeName\28\29\20const 10368:SkPictureShader::flatten\28SkWriteBuffer&\29\20const 10369:SkPictureShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 10370:SkPictureRecorder*\20emscripten::internal::operator_new\28\29 10371:SkPictureRecord::~SkPictureRecord\28\29.1 10372:SkPictureRecord::willSave\28\29 10373:SkPictureRecord::willRestore\28\29 10374:SkPictureRecord::onResetClip\28\29 10375:SkPictureRecord::onDrawVerticesObject\28SkVertices\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 10376:SkPictureRecord::onDrawTextBlob\28SkTextBlob\20const*\2c\20float\2c\20float\2c\20SkPaint\20const&\29 10377:SkPictureRecord::onDrawSlug\28sktext::gpu::Slug\20const*\2c\20SkPaint\20const&\29 10378:SkPictureRecord::onDrawShadowRec\28SkPath\20const&\2c\20SkDrawShadowRec\20const&\29 10379:SkPictureRecord::onDrawRegion\28SkRegion\20const&\2c\20SkPaint\20const&\29 10380:SkPictureRecord::onDrawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 10381:SkPictureRecord::onDrawRRect\28SkRRect\20const&\2c\20SkPaint\20const&\29 10382:SkPictureRecord::onDrawPoints\28SkCanvas::PointMode\2c\20unsigned\20long\2c\20SkPoint\20const*\2c\20SkPaint\20const&\29 10383:SkPictureRecord::onDrawPicture\28SkPicture\20const*\2c\20SkMatrix\20const*\2c\20SkPaint\20const*\29 10384:SkPictureRecord::onDrawPath\28SkPath\20const&\2c\20SkPaint\20const&\29 10385:SkPictureRecord::onDrawPatch\28SkPoint\20const*\2c\20unsigned\20int\20const*\2c\20SkPoint\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 10386:SkPictureRecord::onDrawPaint\28SkPaint\20const&\29 10387:SkPictureRecord::onDrawOval\28SkRect\20const&\2c\20SkPaint\20const&\29 10388:SkPictureRecord::onDrawImageRect2\28SkImage\20const*\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 10389:SkPictureRecord::onDrawImageLattice2\28SkImage\20const*\2c\20SkCanvas::Lattice\20const&\2c\20SkRect\20const&\2c\20SkFilterMode\2c\20SkPaint\20const*\29 10390:SkPictureRecord::onDrawImage2\28SkImage\20const*\2c\20float\2c\20float\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\29 10391:SkPictureRecord::onDrawEdgeAAQuad\28SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkBlendMode\29 10392:SkPictureRecord::onDrawEdgeAAImageSet2\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 10393:SkPictureRecord::onDrawDrawable\28SkDrawable*\2c\20SkMatrix\20const*\29 10394:SkPictureRecord::onDrawDRRect\28SkRRect\20const&\2c\20SkRRect\20const&\2c\20SkPaint\20const&\29 10395:SkPictureRecord::onDrawBehind\28SkPaint\20const&\29 10396:SkPictureRecord::onDrawAtlas2\28SkImage\20const*\2c\20SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20SkBlendMode\2c\20SkSamplingOptions\20const&\2c\20SkRect\20const*\2c\20SkPaint\20const*\29 10397:SkPictureRecord::onDrawArc\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 10398:SkPictureRecord::onDrawAnnotation\28SkRect\20const&\2c\20char\20const*\2c\20SkData*\29 10399:SkPictureRecord::onDoSaveBehind\28SkRect\20const*\29 10400:SkPictureRecord::onClipShader\28sk_sp\2c\20SkClipOp\29 10401:SkPictureRecord::onClipRegion\28SkRegion\20const&\2c\20SkClipOp\29 10402:SkPictureRecord::onClipRect\28SkRect\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 10403:SkPictureRecord::onClipRRect\28SkRRect\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 10404:SkPictureRecord::onClipPath\28SkPath\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 10405:SkPictureRecord::getSaveLayerStrategy\28SkCanvas::SaveLayerRec\20const&\29 10406:SkPictureRecord::didTranslate\28float\2c\20float\29 10407:SkPictureRecord::didSetM44\28SkM44\20const&\29 10408:SkPictureRecord::didScale\28float\2c\20float\29 10409:SkPictureRecord::didConcat44\28SkM44\20const&\29 10410:SkPictureData::serialize\28SkWStream*\2c\20SkSerialProcs\20const&\2c\20SkRefCntSet*\2c\20bool\29\20const::DevNull::write\28void\20const*\2c\20unsigned\20long\29 10411:SkPerlinNoiseShader::~SkPerlinNoiseShader\28\29.1 10412:SkPerlinNoiseShader::~SkPerlinNoiseShader\28\29 10413:SkPerlinNoiseShader::type\28\29\20const 10414:SkPerlinNoiseShader::getTypeName\28\29\20const 10415:SkPerlinNoiseShader::flatten\28SkWriteBuffer&\29\20const 10416:SkPerlinNoiseShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 10417:SkPath::setIsVolatile\28bool\29 10418:SkPath::setFillType\28SkPathFillType\29 10419:SkPath::isVolatile\28\29\20const 10420:SkPath::getFillType\28\29\20const 10421:SkPath2DPathEffectImpl::~SkPath2DPathEffectImpl\28\29.1 10422:SkPath2DPathEffectImpl::~SkPath2DPathEffectImpl\28\29 10423:SkPath2DPathEffectImpl::next\28SkPoint\20const&\2c\20int\2c\20int\2c\20SkPath*\29\20const 10424:SkPath2DPathEffectImpl::getTypeName\28\29\20const 10425:SkPath2DPathEffectImpl::getFactory\28\29\20const 10426:SkPath2DPathEffectImpl::flatten\28SkWriteBuffer&\29\20const 10427:SkPath2DPathEffectImpl::CreateProc\28SkReadBuffer&\29 10428:SkPath1DPathEffectImpl::~SkPath1DPathEffectImpl\28\29.1 10429:SkPath1DPathEffectImpl::~SkPath1DPathEffectImpl\28\29 10430:SkPath1DPathEffectImpl::onFilterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29\20const 10431:SkPath1DPathEffectImpl::next\28SkPath*\2c\20float\2c\20SkPathMeasure&\29\20const 10432:SkPath1DPathEffectImpl::getTypeName\28\29\20const 10433:SkPath1DPathEffectImpl::getFactory\28\29\20const 10434:SkPath1DPathEffectImpl::flatten\28SkWriteBuffer&\29\20const 10435:SkPath1DPathEffectImpl::begin\28float\29\20const 10436:SkPath1DPathEffectImpl::CreateProc\28SkReadBuffer&\29 10437:SkPath*\20emscripten::internal::operator_new\28\29 10438:SkPairPathEffect::~SkPairPathEffect\28\29.1 10439:SkPaint::setDither\28bool\29 10440:SkPaint::setAntiAlias\28bool\29 10441:SkPaint::getStrokeMiter\28\29\20const 10442:SkPaint::getStrokeJoin\28\29\20const 10443:SkPaint::getStrokeCap\28\29\20const 10444:SkPaint*\20emscripten::internal::operator_new\28\29 10445:SkOTUtils::LocalizedStrings_SingleName::~LocalizedStrings_SingleName\28\29.1 10446:SkOTUtils::LocalizedStrings_SingleName::~LocalizedStrings_SingleName\28\29 10447:SkOTUtils::LocalizedStrings_SingleName::next\28SkTypeface::LocalizedString*\29 10448:SkOTUtils::LocalizedStrings_NameTable::~LocalizedStrings_NameTable\28\29.1 10449:SkOTUtils::LocalizedStrings_NameTable::~LocalizedStrings_NameTable\28\29 10450:SkOTUtils::LocalizedStrings_NameTable::next\28SkTypeface::LocalizedString*\29 10451:SkNoPixelsDevice::~SkNoPixelsDevice\28\29.1 10452:SkNoPixelsDevice::~SkNoPixelsDevice\28\29 10453:SkNoPixelsDevice::replaceClip\28SkIRect\20const&\29 10454:SkNoPixelsDevice::pushClipStack\28\29 10455:SkNoPixelsDevice::popClipStack\28\29 10456:SkNoPixelsDevice::onClipShader\28sk_sp\29 10457:SkNoPixelsDevice::isClipWideOpen\28\29\20const 10458:SkNoPixelsDevice::isClipRect\28\29\20const 10459:SkNoPixelsDevice::isClipEmpty\28\29\20const 10460:SkNoPixelsDevice::isClipAntiAliased\28\29\20const 10461:SkNoPixelsDevice::devClipBounds\28\29\20const 10462:SkNoPixelsDevice::clipRegion\28SkRegion\20const&\2c\20SkClipOp\29 10463:SkNoPixelsDevice::clipRect\28SkRect\20const&\2c\20SkClipOp\2c\20bool\29 10464:SkNoPixelsDevice::clipRRect\28SkRRect\20const&\2c\20SkClipOp\2c\20bool\29 10465:SkNoPixelsDevice::clipPath\28SkPath\20const&\2c\20SkClipOp\2c\20bool\29 10466:SkNoPixelsDevice::android_utils_clipAsRgn\28SkRegion*\29\20const 10467:SkNoDrawCanvas::onDrawTextBlob\28SkTextBlob\20const*\2c\20float\2c\20float\2c\20SkPaint\20const&\29 10468:SkNoDrawCanvas::onDrawAtlas2\28SkImage\20const*\2c\20SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20SkBlendMode\2c\20SkSamplingOptions\20const&\2c\20SkRect\20const*\2c\20SkPaint\20const*\29 10469:SkMipmap::~SkMipmap\28\29.1 10470:SkMipmap::~SkMipmap\28\29 10471:SkMipmap::onDataChange\28void*\2c\20void*\29 10472:SkMipmap::countLevels\28\29\20const 10473:SkMemoryStream::~SkMemoryStream\28\29.1 10474:SkMemoryStream::~SkMemoryStream\28\29 10475:SkMemoryStream::setMemory\28void\20const*\2c\20unsigned\20long\2c\20bool\29 10476:SkMemoryStream::seek\28unsigned\20long\29 10477:SkMemoryStream::rewind\28\29 10478:SkMemoryStream::read\28void*\2c\20unsigned\20long\29 10479:SkMemoryStream::peek\28void*\2c\20unsigned\20long\29\20const 10480:SkMemoryStream::onFork\28\29\20const 10481:SkMemoryStream::onDuplicate\28\29\20const 10482:SkMemoryStream::move\28long\29 10483:SkMemoryStream::isAtEnd\28\29\20const 10484:SkMemoryStream::getMemoryBase\28\29 10485:SkMemoryStream::getLength\28\29\20const 10486:SkMemoryStream::getData\28\29\20const 10487:SkMatrixColorFilter::onIsAlphaUnchanged\28\29\20const 10488:SkMatrixColorFilter::onAsAColorMatrix\28float*\29\20const 10489:SkMatrixColorFilter::getTypeName\28\29\20const 10490:SkMatrixColorFilter::flatten\28SkWriteBuffer&\29\20const 10491:SkMatrixColorFilter::appendStages\28SkStageRec\20const&\2c\20bool\29\20const 10492:SkMatrix::Trans_xy\28SkMatrix\20const&\2c\20float\2c\20float\2c\20SkPoint*\29 10493:SkMatrix::Trans_pts\28SkMatrix\20const&\2c\20SkPoint*\2c\20SkPoint\20const*\2c\20int\29 10494:SkMatrix::Scale_xy\28SkMatrix\20const&\2c\20float\2c\20float\2c\20SkPoint*\29 10495:SkMatrix::Scale_pts\28SkMatrix\20const&\2c\20SkPoint*\2c\20SkPoint\20const*\2c\20int\29 10496:SkMatrix::ScaleTrans_xy\28SkMatrix\20const&\2c\20float\2c\20float\2c\20SkPoint*\29 10497:SkMatrix::Poly4Proc\28SkPoint\20const*\2c\20SkMatrix*\29 10498:SkMatrix::Poly3Proc\28SkPoint\20const*\2c\20SkMatrix*\29 10499:SkMatrix::Poly2Proc\28SkPoint\20const*\2c\20SkMatrix*\29 10500:SkMatrix::Persp_xy\28SkMatrix\20const&\2c\20float\2c\20float\2c\20SkPoint*\29 10501:SkMatrix::Persp_pts\28SkMatrix\20const&\2c\20SkPoint*\2c\20SkPoint\20const*\2c\20int\29 10502:SkMatrix::Identity_xy\28SkMatrix\20const&\2c\20float\2c\20float\2c\20SkPoint*\29 10503:SkMatrix::Identity_pts\28SkMatrix\20const&\2c\20SkPoint*\2c\20SkPoint\20const*\2c\20int\29 10504:SkMatrix::Affine_vpts\28SkMatrix\20const&\2c\20SkPoint*\2c\20SkPoint\20const*\2c\20int\29 10505:SkMaskSwizzler::onSetSampleX\28int\29 10506:SkMaskFilterBase::filterRectsToNine\28SkRect\20const*\2c\20int\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20SkTLazy*\29\20const 10507:SkMaskFilterBase::filterRRectToNine\28SkRRect\20const&\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20SkTLazy*\29\20const 10508:SkMallocPixelRef::MakeAllocate\28SkImageInfo\20const&\2c\20unsigned\20long\29::PixelRef::~PixelRef\28\29.1 10509:SkMallocPixelRef::MakeAllocate\28SkImageInfo\20const&\2c\20unsigned\20long\29::PixelRef::~PixelRef\28\29 10510:SkMakePixelRefWithProc\28int\2c\20int\2c\20unsigned\20long\2c\20void*\2c\20void\20\28*\29\28void*\2c\20void*\29\2c\20void*\29::PixelRef::~PixelRef\28\29.1 10511:SkMakePixelRefWithProc\28int\2c\20int\2c\20unsigned\20long\2c\20void*\2c\20void\20\28*\29\28void*\2c\20void*\29\2c\20void*\29::PixelRef::~PixelRef\28\29 10512:SkLumaColorFilter::Make\28\29 10513:SkLocalMatrixShader::~SkLocalMatrixShader\28\29.1 10514:SkLocalMatrixShader::~SkLocalMatrixShader\28\29 10515:SkLocalMatrixShader::onIsAImage\28SkMatrix*\2c\20SkTileMode*\29\20const 10516:SkLocalMatrixShader::makeAsALocalMatrixShader\28SkMatrix*\29\20const 10517:SkLocalMatrixShader::isOpaque\28\29\20const 10518:SkLocalMatrixShader::isConstant\28\29\20const 10519:SkLocalMatrixShader::getTypeName\28\29\20const 10520:SkLocalMatrixShader::flatten\28SkWriteBuffer&\29\20const 10521:SkLocalMatrixShader::asGradient\28SkShaderBase::GradientInfo*\2c\20SkMatrix*\29\20const 10522:SkLocalMatrixShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 10523:SkLinearGradient::getTypeName\28\29\20const 10524:SkLinearGradient::flatten\28SkWriteBuffer&\29\20const 10525:SkLinearGradient::asGradient\28SkShaderBase::GradientInfo*\2c\20SkMatrix*\29\20const 10526:SkLine2DPathEffectImpl::onFilterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29\20const 10527:SkLine2DPathEffectImpl::nextSpan\28int\2c\20int\2c\20int\2c\20SkPath*\29\20const 10528:SkLine2DPathEffectImpl::getTypeName\28\29\20const 10529:SkLine2DPathEffectImpl::getFactory\28\29\20const 10530:SkLine2DPathEffectImpl::flatten\28SkWriteBuffer&\29\20const 10531:SkLine2DPathEffectImpl::CreateProc\28SkReadBuffer&\29 10532:SkJpegMetadataDecoderImpl::~SkJpegMetadataDecoderImpl\28\29.1 10533:SkJpegMetadataDecoderImpl::~SkJpegMetadataDecoderImpl\28\29 10534:SkJpegMetadataDecoderImpl::getICCProfileData\28bool\29\20const 10535:SkJpegMetadataDecoderImpl::getExifMetadata\28bool\29\20const 10536:SkJpegMemorySourceMgr::skipInputBytes\28unsigned\20long\2c\20unsigned\20char\20const*&\2c\20unsigned\20long&\29 10537:SkJpegMemorySourceMgr::initSource\28unsigned\20char\20const*&\2c\20unsigned\20long&\29 10538:SkJpegDecoder::Decode\28std::__2::unique_ptr>\2c\20SkCodec::Result*\2c\20void*\29 10539:SkJpegCodec::~SkJpegCodec\28\29.1 10540:SkJpegCodec::~SkJpegCodec\28\29 10541:SkJpegCodec::onStartScanlineDecode\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\29 10542:SkJpegCodec::onSkipScanlines\28int\29 10543:SkJpegCodec::onRewind\28\29 10544:SkJpegCodec::onQueryYUVAInfo\28SkYUVAPixmapInfo::SupportedDataTypes\20const&\2c\20SkYUVAPixmapInfo*\29\20const 10545:SkJpegCodec::onGetYUVAPlanes\28SkYUVAPixmaps\20const&\29 10546:SkJpegCodec::onGetScanlines\28void*\2c\20int\2c\20unsigned\20long\29 10547:SkJpegCodec::onGetScaledDimensions\28float\29\20const 10548:SkJpegCodec::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int*\29 10549:SkJpegCodec::onDimensionsSupported\28SkISize\20const&\29 10550:SkJpegCodec::getSampler\28bool\29 10551:SkJpegCodec::conversionSupported\28SkImageInfo\20const&\2c\20bool\2c\20bool\29 10552:SkJpegBufferedSourceMgr::~SkJpegBufferedSourceMgr\28\29.1 10553:SkJpegBufferedSourceMgr::~SkJpegBufferedSourceMgr\28\29 10554:SkJpegBufferedSourceMgr::skipInputBytes\28unsigned\20long\2c\20unsigned\20char\20const*&\2c\20unsigned\20long&\29 10555:SkJpegBufferedSourceMgr::initSource\28unsigned\20char\20const*&\2c\20unsigned\20long&\29 10556:SkJpegBufferedSourceMgr::fillInputBuffer\28unsigned\20char\20const*&\2c\20unsigned\20long&\29 10557:SkImage_Raster::~SkImage_Raster\28\29.1 10558:SkImage_Raster::~SkImage_Raster\28\29 10559:SkImage_Raster::onReinterpretColorSpace\28sk_sp\29\20const 10560:SkImage_Raster::onReadPixels\28GrDirectContext*\2c\20SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20int\2c\20int\2c\20SkImage::CachingHint\29\20const 10561:SkImage_Raster::onPeekPixels\28SkPixmap*\29\20const 10562:SkImage_Raster::onMakeWithMipmaps\28sk_sp\29\20const 10563:SkImage_Raster::onMakeSubset\28skgpu::graphite::Recorder*\2c\20SkIRect\20const&\2c\20SkImage::RequiredProperties\29\20const 10564:SkImage_Raster::onMakeSubset\28GrDirectContext*\2c\20SkIRect\20const&\29\20const 10565:SkImage_Raster::onMakeColorTypeAndColorSpace\28SkColorType\2c\20sk_sp\2c\20GrDirectContext*\29\20const 10566:SkImage_Raster::onHasMipmaps\28\29\20const 10567:SkImage_Raster::onAsLegacyBitmap\28GrDirectContext*\2c\20SkBitmap*\29\20const 10568:SkImage_Raster::notifyAddedToRasterCache\28\29\20const 10569:SkImage_Raster::getROPixels\28GrDirectContext*\2c\20SkBitmap*\2c\20SkImage::CachingHint\29\20const 10570:SkImage_LazyTexture::readPixelsProxy\28GrDirectContext*\2c\20SkPixmap\20const&\29\20const 10571:SkImage_LazyTexture::onMakeSubset\28GrDirectContext*\2c\20SkIRect\20const&\29\20const 10572:SkImage_Lazy::~SkImage_Lazy\28\29 10573:SkImage_Lazy::onReinterpretColorSpace\28sk_sp\29\20const 10574:SkImage_Lazy::onRefEncoded\28\29\20const 10575:SkImage_Lazy::onReadPixels\28GrDirectContext*\2c\20SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20int\2c\20int\2c\20SkImage::CachingHint\29\20const 10576:SkImage_Lazy::onMakeSubset\28skgpu::graphite::Recorder*\2c\20SkIRect\20const&\2c\20SkImage::RequiredProperties\29\20const 10577:SkImage_Lazy::onMakeSubset\28GrDirectContext*\2c\20SkIRect\20const&\29\20const 10578:SkImage_Lazy::onMakeColorTypeAndColorSpace\28SkColorType\2c\20sk_sp\2c\20GrDirectContext*\29\20const 10579:SkImage_Lazy::onIsProtected\28\29\20const 10580:SkImage_Lazy::isValid\28GrRecordingContext*\29\20const 10581:SkImage_Lazy::getROPixels\28GrDirectContext*\2c\20SkBitmap*\2c\20SkImage::CachingHint\29\20const 10582:SkImage_GaneshBase::~SkImage_GaneshBase\28\29 10583:SkImage_GaneshBase::onReadPixels\28GrDirectContext*\2c\20SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20int\2c\20int\2c\20SkImage::CachingHint\29\20const 10584:SkImage_GaneshBase::onMakeSubset\28skgpu::graphite::Recorder*\2c\20SkIRect\20const&\2c\20SkImage::RequiredProperties\29\20const 10585:SkImage_GaneshBase::makeSubset\28GrDirectContext*\2c\20SkIRect\20const&\29\20const 10586:SkImage_GaneshBase::makeColorTypeAndColorSpace\28skgpu::graphite::Recorder*\2c\20SkColorType\2c\20sk_sp\2c\20SkImage::RequiredProperties\29\20const 10587:SkImage_GaneshBase::makeColorTypeAndColorSpace\28GrDirectContext*\2c\20SkColorType\2c\20sk_sp\29\20const 10588:SkImage_GaneshBase::isValid\28GrRecordingContext*\29\20const 10589:SkImage_GaneshBase::getROPixels\28GrDirectContext*\2c\20SkBitmap*\2c\20SkImage::CachingHint\29\20const 10590:SkImage_GaneshBase::directContext\28\29\20const 10591:SkImage_Ganesh::~SkImage_Ganesh\28\29.1 10592:SkImage_Ganesh::textureSize\28\29\20const 10593:SkImage_Ganesh::onReinterpretColorSpace\28sk_sp\29\20const 10594:SkImage_Ganesh::onMakeColorTypeAndColorSpace\28SkColorType\2c\20sk_sp\2c\20GrDirectContext*\29\20const 10595:SkImage_Ganesh::onIsProtected\28\29\20const 10596:SkImage_Ganesh::onHasMipmaps\28\29\20const 10597:SkImage_Ganesh::onAsyncRescaleAndReadPixels\28SkImageInfo\20const&\2c\20SkIRect\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29\20const 10598:SkImage_Ganesh::onAsyncRescaleAndReadPixelsYUV420\28SkYUVColorSpace\2c\20bool\2c\20sk_sp\2c\20SkIRect\2c\20SkISize\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29\20const 10599:SkImage_Ganesh::generatingSurfaceIsDeleted\28\29 10600:SkImage_Ganesh::flush\28GrDirectContext*\2c\20GrFlushInfo\20const&\29\20const 10601:SkImage_Ganesh::asView\28GrRecordingContext*\2c\20skgpu::Mipmapped\2c\20GrImageTexGenPolicy\29\20const 10602:SkImage_Ganesh::asFragmentProcessor\28GrRecordingContext*\2c\20SkSamplingOptions\2c\20SkTileMode\20const*\2c\20SkMatrix\20const&\2c\20SkRect\20const*\2c\20SkRect\20const*\29\20const 10603:SkImage_Base::onAsyncRescaleAndReadPixels\28SkImageInfo\20const&\2c\20SkIRect\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29\20const 10604:SkImage_Base::notifyAddedToRasterCache\28\29\20const 10605:SkImage_Base::makeSubset\28skgpu::graphite::Recorder*\2c\20SkIRect\20const&\2c\20SkImage::RequiredProperties\29\20const 10606:SkImage_Base::makeSubset\28GrDirectContext*\2c\20SkIRect\20const&\29\20const 10607:SkImage_Base::makeColorTypeAndColorSpace\28skgpu::graphite::Recorder*\2c\20SkColorType\2c\20sk_sp\2c\20SkImage::RequiredProperties\29\20const 10608:SkImage_Base::makeColorTypeAndColorSpace\28GrDirectContext*\2c\20SkColorType\2c\20sk_sp\29\20const 10609:SkImage_Base::makeColorSpace\28skgpu::graphite::Recorder*\2c\20sk_sp\2c\20SkImage::RequiredProperties\29\20const 10610:SkImage_Base::makeColorSpace\28GrDirectContext*\2c\20sk_sp\29\20const 10611:SkImage_Base::isTextureBacked\28\29\20const 10612:SkImage_Base::isLazyGenerated\28\29\20const 10613:SkImageShader::~SkImageShader\28\29.1 10614:SkImageShader::~SkImageShader\28\29 10615:SkImageShader::type\28\29\20const 10616:SkImageShader::onIsAImage\28SkMatrix*\2c\20SkTileMode*\29\20const 10617:SkImageShader::isOpaque\28\29\20const 10618:SkImageShader::getTypeName\28\29\20const 10619:SkImageShader::flatten\28SkWriteBuffer&\29\20const 10620:SkImageShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 10621:SkImageGenerator::~SkImageGenerator\28\29 10622:SkImageFilters::Compose\28sk_sp\2c\20sk_sp\29 10623:SkImage::~SkImage\28\29 10624:SkIcoDecoder::Decode\28std::__2::unique_ptr>\2c\20SkCodec::Result*\2c\20void*\29 10625:SkIcoCodec::~SkIcoCodec\28\29.1 10626:SkIcoCodec::~SkIcoCodec\28\29 10627:SkIcoCodec::onStartScanlineDecode\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\29 10628:SkIcoCodec::onStartIncrementalDecode\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\29 10629:SkIcoCodec::onSkipScanlines\28int\29 10630:SkIcoCodec::onIncrementalDecode\28int*\29 10631:SkIcoCodec::onGetScanlines\28void*\2c\20int\2c\20unsigned\20long\29 10632:SkIcoCodec::onGetScanlineOrder\28\29\20const 10633:SkIcoCodec::onGetScaledDimensions\28float\29\20const 10634:SkIcoCodec::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int*\29 10635:SkIcoCodec::onDimensionsSupported\28SkISize\20const&\29 10636:SkIcoCodec::getSampler\28bool\29 10637:SkIcoCodec::conversionSupported\28SkImageInfo\20const&\2c\20bool\2c\20bool\29 10638:SkGradientBaseShader::onAsLuminanceColor\28SkRGBA4f<\28SkAlphaType\293>*\29\20const 10639:SkGradientBaseShader::isOpaque\28\29\20const 10640:SkGradientBaseShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 10641:SkGifDecoder::Decode\28std::__2::unique_ptr>\2c\20SkCodec::Result*\2c\20void*\29 10642:SkGaussianColorFilter::getTypeName\28\29\20const 10643:SkGaussianColorFilter::appendStages\28SkStageRec\20const&\2c\20bool\29\20const 10644:SkGammaColorSpaceLuminance::toLuma\28float\2c\20float\29\20const 10645:SkGammaColorSpaceLuminance::fromLuma\28float\2c\20float\29\20const 10646:SkFontStyleSet_Custom::~SkFontStyleSet_Custom\28\29.1 10647:SkFontStyleSet_Custom::~SkFontStyleSet_Custom\28\29 10648:SkFontStyleSet_Custom::getStyle\28int\2c\20SkFontStyle*\2c\20SkString*\29 10649:SkFontScanner_FreeType::~SkFontScanner_FreeType\28\29.1 10650:SkFontScanner_FreeType::~SkFontScanner_FreeType\28\29 10651:SkFontScanner_FreeType::scanFile\28SkStreamAsset*\2c\20int*\29\20const 10652:SkFontScanner_FreeType::scanFace\28SkStreamAsset*\2c\20int\2c\20int*\29\20const 10653:SkFontMgr_Custom::~SkFontMgr_Custom\28\29.1 10654:SkFontMgr_Custom::~SkFontMgr_Custom\28\29 10655:SkFontMgr_Custom::onMatchFamily\28char\20const*\29\20const 10656:SkFontMgr_Custom::onMatchFamilyStyle\28char\20const*\2c\20SkFontStyle\20const&\29\20const 10657:SkFontMgr_Custom::onMakeFromStreamIndex\28std::__2::unique_ptr>\2c\20int\29\20const 10658:SkFontMgr_Custom::onMakeFromStreamArgs\28std::__2::unique_ptr>\2c\20SkFontArguments\20const&\29\20const 10659:SkFontMgr_Custom::onMakeFromFile\28char\20const*\2c\20int\29\20const 10660:SkFontMgr_Custom::onMakeFromData\28sk_sp\2c\20int\29\20const 10661:SkFontMgr_Custom::onLegacyMakeTypeface\28char\20const*\2c\20SkFontStyle\29\20const 10662:SkFontMgr_Custom::onGetFamilyName\28int\2c\20SkString*\29\20const 10663:SkFont::setScaleX\28float\29 10664:SkFont::setEmbeddedBitmaps\28bool\29 10665:SkFont::isEmbolden\28\29\20const 10666:SkFont::getSkewX\28\29\20const 10667:SkFont::getSize\28\29\20const 10668:SkFont::getScaleX\28\29\20const 10669:SkFont*\20emscripten::internal::operator_new\2c\20float\2c\20float\2c\20float>\28sk_sp&&\2c\20float&&\2c\20float&&\2c\20float&&\29 10670:SkFont*\20emscripten::internal::operator_new\2c\20float>\28sk_sp&&\2c\20float&&\29 10671:SkFont*\20emscripten::internal::operator_new>\28sk_sp&&\29 10672:SkFont*\20emscripten::internal::operator_new\28\29 10673:SkFILEStream::~SkFILEStream\28\29.1 10674:SkFILEStream::~SkFILEStream\28\29 10675:SkFILEStream::seek\28unsigned\20long\29 10676:SkFILEStream::rewind\28\29 10677:SkFILEStream::read\28void*\2c\20unsigned\20long\29 10678:SkFILEStream::onFork\28\29\20const 10679:SkFILEStream::onDuplicate\28\29\20const 10680:SkFILEStream::move\28long\29 10681:SkFILEStream::isAtEnd\28\29\20const 10682:SkFILEStream::getPosition\28\29\20const 10683:SkFILEStream::getLength\28\29\20const 10684:SkEncoder::~SkEncoder\28\29 10685:SkEmptyShader::getTypeName\28\29\20const 10686:SkEmptyPicture::~SkEmptyPicture\28\29 10687:SkEmptyPicture::cullRect\28\29\20const 10688:SkEmptyFontMgr::onMatchFamily\28char\20const*\29\20const 10689:SkEdgeBuilder::~SkEdgeBuilder\28\29 10690:SkEdgeBuilder::build\28SkPath\20const&\2c\20SkIRect\20const*\2c\20bool\29::$_0::__invoke\28SkEdgeClipper*\2c\20bool\2c\20void*\29 10691:SkDynamicMemoryWStream::~SkDynamicMemoryWStream\28\29.1 10692:SkDrawable::onMakePictureSnapshot\28\29 10693:SkDrawBase::~SkDrawBase\28\29 10694:SkDraw::paintMasks\28SkZip\2c\20SkPaint\20const&\29\20const 10695:SkDiscretePathEffectImpl::onFilterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29\20const 10696:SkDiscretePathEffectImpl::getTypeName\28\29\20const 10697:SkDiscretePathEffectImpl::getFactory\28\29\20const 10698:SkDiscretePathEffectImpl::computeFastBounds\28SkRect*\29\20const 10699:SkDiscretePathEffectImpl::CreateProc\28SkReadBuffer&\29 10700:SkDevice::~SkDevice\28\29 10701:SkDevice::strikeDeviceInfo\28\29\20const 10702:SkDevice::drawSlug\28SkCanvas*\2c\20sktext::gpu::Slug\20const*\2c\20SkPaint\20const&\29 10703:SkDevice::drawRegion\28SkRegion\20const&\2c\20SkPaint\20const&\29 10704:SkDevice::drawPatch\28SkPoint\20const*\2c\20unsigned\20int\20const*\2c\20SkPoint\20const*\2c\20sk_sp\2c\20SkPaint\20const&\29 10705:SkDevice::drawImageLattice\28SkImage\20const*\2c\20SkCanvas::Lattice\20const&\2c\20SkRect\20const&\2c\20SkFilterMode\2c\20SkPaint\20const&\29 10706:SkDevice::drawEdgeAAQuad\28SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkBlendMode\29 10707:SkDevice::drawEdgeAAImageSet\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 10708:SkDevice::drawDRRect\28SkRRect\20const&\2c\20SkRRect\20const&\2c\20SkPaint\20const&\29 10709:SkDevice::drawCoverageMask\28SkSpecialImage\20const*\2c\20SkMatrix\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\29 10710:SkDevice::drawAtlas\28SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20sk_sp\2c\20SkPaint\20const&\29 10711:SkDevice::drawAsTiledImageRect\28SkCanvas*\2c\20SkImage\20const*\2c\20SkRect\20const*\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 10712:SkDevice::createImageFilteringBackend\28SkSurfaceProps\20const&\2c\20SkColorType\29\20const 10713:SkDashImpl::~SkDashImpl\28\29.1 10714:SkDashImpl::~SkDashImpl\28\29 10715:SkDashImpl::onFilterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29\20const 10716:SkDashImpl::onAsPoints\28SkPathEffectBase::PointData*\2c\20SkPath\20const&\2c\20SkStrokeRec\20const&\2c\20SkMatrix\20const&\2c\20SkRect\20const*\29\20const 10717:SkDashImpl::onAsADash\28SkPathEffect::DashInfo*\29\20const 10718:SkDashImpl::getTypeName\28\29\20const 10719:SkDashImpl::flatten\28SkWriteBuffer&\29\20const 10720:SkCustomTypefaceBuilder::MakeFromStream\28std::__2::unique_ptr>\2c\20SkFontArguments\20const&\29 10721:SkCornerPathEffectImpl::onFilterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29\20const 10722:SkCornerPathEffectImpl::getTypeName\28\29\20const 10723:SkCornerPathEffectImpl::getFactory\28\29\20const 10724:SkCornerPathEffectImpl::flatten\28SkWriteBuffer&\29\20const 10725:SkCornerPathEffectImpl::CreateProc\28SkReadBuffer&\29 10726:SkCornerPathEffect::Make\28float\29 10727:SkContourMeasureIter*\20emscripten::internal::operator_new\28SkPath\20const&\2c\20bool&&\2c\20float&&\29 10728:SkContourMeasure::~SkContourMeasure\28\29.1 10729:SkContourMeasure::~SkContourMeasure\28\29 10730:SkContourMeasure::isClosed\28\29\20const 10731:SkConicalGradient::getTypeName\28\29\20const 10732:SkConicalGradient::flatten\28SkWriteBuffer&\29\20const 10733:SkConicalGradient::asGradient\28SkShaderBase::GradientInfo*\2c\20SkMatrix*\29\20const 10734:SkConicalGradient::appendGradientStages\28SkArenaAlloc*\2c\20SkRasterPipeline*\2c\20SkRasterPipeline*\29\20const 10735:SkComposePathEffect::~SkComposePathEffect\28\29 10736:SkComposePathEffect::onFilterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29\20const 10737:SkComposePathEffect::getTypeName\28\29\20const 10738:SkComposePathEffect::computeFastBounds\28SkRect*\29\20const 10739:SkComposeColorFilter::onIsAlphaUnchanged\28\29\20const 10740:SkComposeColorFilter::getTypeName\28\29\20const 10741:SkComposeColorFilter::appendStages\28SkStageRec\20const&\2c\20bool\29\20const 10742:SkColorSpaceXformColorFilter::~SkColorSpaceXformColorFilter\28\29.1 10743:SkColorSpaceXformColorFilter::~SkColorSpaceXformColorFilter\28\29 10744:SkColorSpaceXformColorFilter::getTypeName\28\29\20const 10745:SkColorSpaceXformColorFilter::flatten\28SkWriteBuffer&\29\20const 10746:SkColorSpaceXformColorFilter::appendStages\28SkStageRec\20const&\2c\20bool\29\20const 10747:SkColorShader::onAsLuminanceColor\28SkRGBA4f<\28SkAlphaType\293>*\29\20const 10748:SkColorShader::isOpaque\28\29\20const 10749:SkColorShader::getTypeName\28\29\20const 10750:SkColorShader::flatten\28SkWriteBuffer&\29\20const 10751:SkColorShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 10752:SkColorPalette::~SkColorPalette\28\29.1 10753:SkColorPalette::~SkColorPalette\28\29 10754:SkColorFilters::SRGBToLinearGamma\28\29 10755:SkColorFilters::LinearToSRGBGamma\28\29 10756:SkColorFilters::Lerp\28float\2c\20sk_sp\2c\20sk_sp\29 10757:SkColorFilters::Compose\28sk_sp\20const&\2c\20sk_sp\29 10758:SkColorFilterShader::~SkColorFilterShader\28\29.1 10759:SkColorFilterShader::~SkColorFilterShader\28\29 10760:SkColorFilterShader::isOpaque\28\29\20const 10761:SkColorFilterShader::getTypeName\28\29\20const 10762:SkColorFilterShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 10763:SkColorFilterBase::onFilterColor4f\28SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkColorSpace*\29\20const 10764:SkColor4Shader::~SkColor4Shader\28\29.1 10765:SkColor4Shader::~SkColor4Shader\28\29 10766:SkColor4Shader::onAsLuminanceColor\28SkRGBA4f<\28SkAlphaType\293>*\29\20const 10767:SkColor4Shader::isOpaque\28\29\20const 10768:SkColor4Shader::getTypeName\28\29\20const 10769:SkColor4Shader::flatten\28SkWriteBuffer&\29\20const 10770:SkColor4Shader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 10771:SkCodecImageGenerator::~SkCodecImageGenerator\28\29.1 10772:SkCodecImageGenerator::~SkCodecImageGenerator\28\29 10773:SkCodecImageGenerator::onRefEncodedData\28\29 10774:SkCodecImageGenerator::onQueryYUVAInfo\28SkYUVAPixmapInfo::SupportedDataTypes\20const&\2c\20SkYUVAPixmapInfo*\29\20const 10775:SkCodecImageGenerator::onGetYUVAPlanes\28SkYUVAPixmaps\20const&\29 10776:SkCodecImageGenerator::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkImageGenerator::Options\20const&\29 10777:SkCodec::onStartScanlineDecode\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\29 10778:SkCodec::onStartIncrementalDecode\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\29 10779:SkCodec::onOutputScanline\28int\29\20const 10780:SkCodec::onGetScaledDimensions\28float\29\20const 10781:SkCodec::getEncodedData\28\29\20const 10782:SkCodec::conversionSupported\28SkImageInfo\20const&\2c\20bool\2c\20bool\29 10783:SkCanvas::rotate\28float\2c\20float\2c\20float\29 10784:SkCanvas::recordingContext\28\29\20const 10785:SkCanvas::recorder\28\29\20const 10786:SkCanvas::onPeekPixels\28SkPixmap*\29 10787:SkCanvas::onNewSurface\28SkImageInfo\20const&\2c\20SkSurfaceProps\20const&\29 10788:SkCanvas::onImageInfo\28\29\20const 10789:SkCanvas::onGetProps\28SkSurfaceProps*\2c\20bool\29\20const 10790:SkCanvas::onDrawVerticesObject\28SkVertices\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 10791:SkCanvas::onDrawTextBlob\28SkTextBlob\20const*\2c\20float\2c\20float\2c\20SkPaint\20const&\29 10792:SkCanvas::onDrawSlug\28sktext::gpu::Slug\20const*\2c\20SkPaint\20const&\29 10793:SkCanvas::onDrawShadowRec\28SkPath\20const&\2c\20SkDrawShadowRec\20const&\29 10794:SkCanvas::onDrawRegion\28SkRegion\20const&\2c\20SkPaint\20const&\29 10795:SkCanvas::onDrawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 10796:SkCanvas::onDrawRRect\28SkRRect\20const&\2c\20SkPaint\20const&\29 10797:SkCanvas::onDrawPoints\28SkCanvas::PointMode\2c\20unsigned\20long\2c\20SkPoint\20const*\2c\20SkPaint\20const&\29 10798:SkCanvas::onDrawPicture\28SkPicture\20const*\2c\20SkMatrix\20const*\2c\20SkPaint\20const*\29 10799:SkCanvas::onDrawPath\28SkPath\20const&\2c\20SkPaint\20const&\29 10800:SkCanvas::onDrawPatch\28SkPoint\20const*\2c\20unsigned\20int\20const*\2c\20SkPoint\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 10801:SkCanvas::onDrawPaint\28SkPaint\20const&\29 10802:SkCanvas::onDrawOval\28SkRect\20const&\2c\20SkPaint\20const&\29 10803:SkCanvas::onDrawMesh\28SkMesh\20const&\2c\20sk_sp\2c\20SkPaint\20const&\29 10804:SkCanvas::onDrawImageRect2\28SkImage\20const*\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 10805:SkCanvas::onDrawImageLattice2\28SkImage\20const*\2c\20SkCanvas::Lattice\20const&\2c\20SkRect\20const&\2c\20SkFilterMode\2c\20SkPaint\20const*\29 10806:SkCanvas::onDrawImage2\28SkImage\20const*\2c\20float\2c\20float\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\29 10807:SkCanvas::onDrawGlyphRunList\28sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\29 10808:SkCanvas::onDrawEdgeAAQuad\28SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkBlendMode\29 10809:SkCanvas::onDrawEdgeAAImageSet2\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 10810:SkCanvas::onDrawDrawable\28SkDrawable*\2c\20SkMatrix\20const*\29 10811:SkCanvas::onDrawDRRect\28SkRRect\20const&\2c\20SkRRect\20const&\2c\20SkPaint\20const&\29 10812:SkCanvas::onDrawBehind\28SkPaint\20const&\29 10813:SkCanvas::onDrawAtlas2\28SkImage\20const*\2c\20SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20SkBlendMode\2c\20SkSamplingOptions\20const&\2c\20SkRect\20const*\2c\20SkPaint\20const*\29 10814:SkCanvas::onDrawArc\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 10815:SkCanvas::onDrawAnnotation\28SkRect\20const&\2c\20char\20const*\2c\20SkData*\29 10816:SkCanvas::onDiscard\28\29 10817:SkCanvas::onConvertGlyphRunListToSlug\28sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\29 10818:SkCanvas::onAccessTopLayerPixels\28SkPixmap*\29 10819:SkCanvas::isClipRect\28\29\20const 10820:SkCanvas::isClipEmpty\28\29\20const 10821:SkCanvas::getSaveCount\28\29\20const 10822:SkCanvas::getBaseLayerSize\28\29\20const 10823:SkCanvas::drawTextBlob\28sk_sp\20const&\2c\20float\2c\20float\2c\20SkPaint\20const&\29 10824:SkCanvas::drawPicture\28sk_sp\20const&\29 10825:SkCanvas::drawCircle\28float\2c\20float\2c\20float\2c\20SkPaint\20const&\29 10826:SkCanvas*\20emscripten::internal::operator_new\28float&&\2c\20float&&\29 10827:SkCanvas*\20emscripten::internal::operator_new\28\29 10828:SkCachedData::~SkCachedData\28\29.1 10829:SkCTMShader::~SkCTMShader\28\29 10830:SkCTMShader::isConstant\28\29\20const 10831:SkCTMShader::getTypeName\28\29\20const 10832:SkCTMShader::asGradient\28SkShaderBase::GradientInfo*\2c\20SkMatrix*\29\20const 10833:SkCTMShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 10834:SkBreakIterator_icu::~SkBreakIterator_icu\28\29.1 10835:SkBreakIterator_icu::~SkBreakIterator_icu\28\29 10836:SkBreakIterator_icu::status\28\29 10837:SkBreakIterator_icu::setText\28char\20const*\2c\20int\29 10838:SkBreakIterator_icu::setText\28char16_t\20const*\2c\20int\29 10839:SkBreakIterator_icu::next\28\29 10840:SkBreakIterator_icu::isDone\28\29 10841:SkBreakIterator_icu::first\28\29 10842:SkBreakIterator_icu::current\28\29 10843:SkBmpStandardCodec::~SkBmpStandardCodec\28\29.1 10844:SkBmpStandardCodec::~SkBmpStandardCodec\28\29 10845:SkBmpStandardCodec::onPrepareToDecode\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\29 10846:SkBmpStandardCodec::onInIco\28\29\20const 10847:SkBmpStandardCodec::getSampler\28bool\29 10848:SkBmpStandardCodec::decodeRows\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\29 10849:SkBmpRLESampler::onSetSampleX\28int\29 10850:SkBmpRLESampler::fillWidth\28\29\20const 10851:SkBmpRLECodec::~SkBmpRLECodec\28\29.1 10852:SkBmpRLECodec::~SkBmpRLECodec\28\29 10853:SkBmpRLECodec::skipRows\28int\29 10854:SkBmpRLECodec::onPrepareToDecode\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\29 10855:SkBmpRLECodec::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int*\29 10856:SkBmpRLECodec::getSampler\28bool\29 10857:SkBmpRLECodec::decodeRows\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\29 10858:SkBmpMaskCodec::~SkBmpMaskCodec\28\29.1 10859:SkBmpMaskCodec::~SkBmpMaskCodec\28\29 10860:SkBmpMaskCodec::onPrepareToDecode\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\29 10861:SkBmpMaskCodec::getSampler\28bool\29 10862:SkBmpMaskCodec::decodeRows\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\29 10863:SkBmpDecoder::Decode\28std::__2::unique_ptr>\2c\20SkCodec::Result*\2c\20void*\29 10864:SkBmpCodec::~SkBmpCodec\28\29 10865:SkBmpCodec::skipRows\28int\29 10866:SkBmpCodec::onSkipScanlines\28int\29 10867:SkBmpCodec::onRewind\28\29 10868:SkBmpCodec::onGetScanlines\28void*\2c\20int\2c\20unsigned\20long\29 10869:SkBmpCodec::onGetScanlineOrder\28\29\20const 10870:SkBlurMaskFilterImpl::getTypeName\28\29\20const 10871:SkBlurMaskFilterImpl::flatten\28SkWriteBuffer&\29\20const 10872:SkBlurMaskFilterImpl::filterRectsToNine\28SkRect\20const*\2c\20int\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20SkTLazy*\29\20const 10873:SkBlurMaskFilterImpl::filterRRectToNine\28SkRRect\20const&\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20SkTLazy*\29\20const 10874:SkBlurMaskFilterImpl::filterMask\28SkMaskBuilder*\2c\20SkMask\20const&\2c\20SkMatrix\20const&\2c\20SkIPoint*\29\20const 10875:SkBlurMaskFilterImpl::computeFastBounds\28SkRect\20const&\2c\20SkRect*\29\20const 10876:SkBlurMaskFilterImpl::asImageFilter\28SkMatrix\20const&\29\20const 10877:SkBlurMaskFilterImpl::asABlur\28SkMaskFilterBase::BlurRec*\29\20const 10878:SkBlockMemoryStream::~SkBlockMemoryStream\28\29.1 10879:SkBlockMemoryStream::~SkBlockMemoryStream\28\29 10880:SkBlockMemoryStream::seek\28unsigned\20long\29 10881:SkBlockMemoryStream::rewind\28\29 10882:SkBlockMemoryStream::read\28void*\2c\20unsigned\20long\29 10883:SkBlockMemoryStream::peek\28void*\2c\20unsigned\20long\29\20const 10884:SkBlockMemoryStream::onFork\28\29\20const 10885:SkBlockMemoryStream::onDuplicate\28\29\20const 10886:SkBlockMemoryStream::move\28long\29 10887:SkBlockMemoryStream::isAtEnd\28\29\20const 10888:SkBlockMemoryStream::getMemoryBase\28\29 10889:SkBlockMemoryRefCnt::~SkBlockMemoryRefCnt\28\29.1 10890:SkBlockMemoryRefCnt::~SkBlockMemoryRefCnt\28\29 10891:SkBlitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 10892:SkBlitter::blitAntiV2\28int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 10893:SkBlitter::blitAntiRect\28int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\29 10894:SkBlitter::blitAntiH2\28int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 10895:SkBlitter::allocBlitMemory\28unsigned\20long\29 10896:SkBlenderBase::asBlendMode\28\29\20const 10897:SkBlendShader::getTypeName\28\29\20const 10898:SkBlendShader::flatten\28SkWriteBuffer&\29\20const 10899:SkBlendShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 10900:SkBlendModeColorFilter::onIsAlphaUnchanged\28\29\20const 10901:SkBlendModeColorFilter::onAsAColorMode\28unsigned\20int*\2c\20SkBlendMode*\29\20const 10902:SkBlendModeColorFilter::getTypeName\28\29\20const 10903:SkBlendModeColorFilter::flatten\28SkWriteBuffer&\29\20const 10904:SkBlendModeColorFilter::appendStages\28SkStageRec\20const&\2c\20bool\29\20const 10905:SkBlendModeBlender::onAppendStages\28SkStageRec\20const&\29\20const 10906:SkBlendModeBlender::getTypeName\28\29\20const 10907:SkBlendModeBlender::flatten\28SkWriteBuffer&\29\20const 10908:SkBlendModeBlender::asBlendMode\28\29\20const 10909:SkBitmapDevice::~SkBitmapDevice\28\29.1 10910:SkBitmapDevice::~SkBitmapDevice\28\29 10911:SkBitmapDevice::snapSpecial\28SkIRect\20const&\2c\20bool\29 10912:SkBitmapDevice::setImmutable\28\29 10913:SkBitmapDevice::replaceClip\28SkIRect\20const&\29 10914:SkBitmapDevice::pushClipStack\28\29 10915:SkBitmapDevice::popClipStack\28\29 10916:SkBitmapDevice::onWritePixels\28SkPixmap\20const&\2c\20int\2c\20int\29 10917:SkBitmapDevice::onReadPixels\28SkPixmap\20const&\2c\20int\2c\20int\29 10918:SkBitmapDevice::onPeekPixels\28SkPixmap*\29 10919:SkBitmapDevice::onDrawGlyphRunList\28SkCanvas*\2c\20sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\29 10920:SkBitmapDevice::onClipShader\28sk_sp\29 10921:SkBitmapDevice::onAccessPixels\28SkPixmap*\29 10922:SkBitmapDevice::makeSurface\28SkImageInfo\20const&\2c\20SkSurfaceProps\20const&\29 10923:SkBitmapDevice::makeSpecial\28SkImage\20const*\29 10924:SkBitmapDevice::makeSpecial\28SkBitmap\20const&\29 10925:SkBitmapDevice::isClipWideOpen\28\29\20const 10926:SkBitmapDevice::isClipRect\28\29\20const 10927:SkBitmapDevice::isClipEmpty\28\29\20const 10928:SkBitmapDevice::isClipAntiAliased\28\29\20const 10929:SkBitmapDevice::getRasterHandle\28\29\20const 10930:SkBitmapDevice::drawVertices\28SkVertices\20const*\2c\20sk_sp\2c\20SkPaint\20const&\2c\20bool\29 10931:SkBitmapDevice::drawSpecial\28SkSpecialImage*\2c\20SkMatrix\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 10932:SkBitmapDevice::drawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 10933:SkBitmapDevice::drawRRect\28SkRRect\20const&\2c\20SkPaint\20const&\29 10934:SkBitmapDevice::drawPoints\28SkCanvas::PointMode\2c\20unsigned\20long\2c\20SkPoint\20const*\2c\20SkPaint\20const&\29 10935:SkBitmapDevice::drawPath\28SkPath\20const&\2c\20SkPaint\20const&\2c\20bool\29 10936:SkBitmapDevice::drawPaint\28SkPaint\20const&\29 10937:SkBitmapDevice::drawOval\28SkRect\20const&\2c\20SkPaint\20const&\29 10938:SkBitmapDevice::drawImageRect\28SkImage\20const*\2c\20SkRect\20const*\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 10939:SkBitmapDevice::drawAtlas\28SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20sk_sp\2c\20SkPaint\20const&\29 10940:SkBitmapDevice::devClipBounds\28\29\20const 10941:SkBitmapDevice::createDevice\28SkDevice::CreateInfo\20const&\2c\20SkPaint\20const*\29 10942:SkBitmapDevice::clipRegion\28SkRegion\20const&\2c\20SkClipOp\29 10943:SkBitmapDevice::clipRect\28SkRect\20const&\2c\20SkClipOp\2c\20bool\29 10944:SkBitmapDevice::clipRRect\28SkRRect\20const&\2c\20SkClipOp\2c\20bool\29 10945:SkBitmapDevice::clipPath\28SkPath\20const&\2c\20SkClipOp\2c\20bool\29 10946:SkBitmapDevice::android_utils_clipAsRgn\28SkRegion*\29\20const 10947:SkBitmapCache::Rec::~Rec\28\29.1 10948:SkBitmapCache::Rec::~Rec\28\29 10949:SkBitmapCache::Rec::postAddInstall\28void*\29 10950:SkBitmapCache::Rec::getCategory\28\29\20const 10951:SkBitmapCache::Rec::canBePurged\28\29 10952:SkBitmapCache::Rec::bytesUsed\28\29\20const 10953:SkBitmapCache::Rec::ReleaseProc\28void*\2c\20void*\29 10954:SkBitmapCache::Rec::Finder\28SkResourceCache::Rec\20const&\2c\20void*\29 10955:SkBinaryWriteBuffer::~SkBinaryWriteBuffer\28\29.1 10956:SkBinaryWriteBuffer::write\28SkM44\20const&\29 10957:SkBinaryWriteBuffer::writeTypeface\28SkTypeface*\29 10958:SkBinaryWriteBuffer::writeString\28std::__2::basic_string_view>\29 10959:SkBinaryWriteBuffer::writeStream\28SkStream*\2c\20unsigned\20long\29 10960:SkBinaryWriteBuffer::writeScalar\28float\29 10961:SkBinaryWriteBuffer::writeSampling\28SkSamplingOptions\20const&\29 10962:SkBinaryWriteBuffer::writeRegion\28SkRegion\20const&\29 10963:SkBinaryWriteBuffer::writeRect\28SkRect\20const&\29 10964:SkBinaryWriteBuffer::writePoint\28SkPoint\20const&\29 10965:SkBinaryWriteBuffer::writePointArray\28SkPoint\20const*\2c\20unsigned\20int\29 10966:SkBinaryWriteBuffer::writePoint3\28SkPoint3\20const&\29 10967:SkBinaryWriteBuffer::writePath\28SkPath\20const&\29 10968:SkBinaryWriteBuffer::writePaint\28SkPaint\20const&\29 10969:SkBinaryWriteBuffer::writePad32\28void\20const*\2c\20unsigned\20long\29 10970:SkBinaryWriteBuffer::writeMatrix\28SkMatrix\20const&\29 10971:SkBinaryWriteBuffer::writeImage\28SkImage\20const*\29 10972:SkBinaryWriteBuffer::writeColor4fArray\28SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20unsigned\20int\29 10973:SkBigPicture::~SkBigPicture\28\29.1 10974:SkBigPicture::~SkBigPicture\28\29 10975:SkBigPicture::playback\28SkCanvas*\2c\20SkPicture::AbortCallback*\29\20const 10976:SkBigPicture::cullRect\28\29\20const 10977:SkBigPicture::approximateOpCount\28bool\29\20const 10978:SkBigPicture::approximateBytesUsed\28\29\20const 10979:SkBidiICUFactory::errorName\28UErrorCode\29\20const 10980:SkBidiICUFactory::bidi_setPara\28UBiDi*\2c\20char16_t\20const*\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char*\2c\20UErrorCode*\29\20const 10981:SkBidiICUFactory::bidi_reorderVisual\28unsigned\20char\20const*\2c\20int\2c\20int*\29\20const 10982:SkBidiICUFactory::bidi_openSized\28int\2c\20int\2c\20UErrorCode*\29\20const 10983:SkBidiICUFactory::bidi_getLevelAt\28UBiDi\20const*\2c\20int\29\20const 10984:SkBidiICUFactory::bidi_getLength\28UBiDi\20const*\29\20const 10985:SkBidiICUFactory::bidi_getDirection\28UBiDi\20const*\29\20const 10986:SkBidiICUFactory::bidi_close_callback\28\29\20const 10987:SkBezierCubic::Subdivide\28double\20const*\2c\20double\2c\20double*\29 10988:SkBasicEdgeBuilder::recoverClip\28SkIRect\20const&\29\20const 10989:SkBasicEdgeBuilder::allocEdges\28unsigned\20long\2c\20unsigned\20long*\29 10990:SkBasicEdgeBuilder::addQuad\28SkPoint\20const*\29 10991:SkBasicEdgeBuilder::addPolyLine\28SkPoint\20const*\2c\20char*\2c\20char**\29 10992:SkBasicEdgeBuilder::addLine\28SkPoint\20const*\29 10993:SkBasicEdgeBuilder::addCubic\28SkPoint\20const*\29 10994:SkBaseShadowTessellator::~SkBaseShadowTessellator\28\29 10995:SkBBoxHierarchy::insert\28SkRect\20const*\2c\20SkBBoxHierarchy::Metadata\20const*\2c\20int\29 10996:SkArenaAlloc::SkipPod\28char*\29 10997:SkArenaAlloc::NextBlock\28char*\29 10998:SkAnimatedImage::~SkAnimatedImage\28\29.1 10999:SkAnimatedImage::~SkAnimatedImage\28\29 11000:SkAnimatedImage::reset\28\29 11001:SkAnimatedImage::onGetBounds\28\29 11002:SkAnimatedImage::onDraw\28SkCanvas*\29 11003:SkAnimatedImage::getRepetitionCount\28\29\20const 11004:SkAnimatedImage::getCurrentFrame\28\29 11005:SkAnimatedImage::currentFrameDuration\28\29 11006:SkAndroidCodecAdapter::onGetSupportedSubset\28SkIRect*\29\20const 11007:SkAndroidCodecAdapter::onGetSampledDimensions\28int\29\20const 11008:SkAndroidCodecAdapter::onGetAndroidPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkAndroidCodec::AndroidOptions\20const&\29 11009:SkAnalyticEdgeBuilder::recoverClip\28SkIRect\20const&\29\20const 11010:SkAnalyticEdgeBuilder::allocEdges\28unsigned\20long\2c\20unsigned\20long*\29 11011:SkAnalyticEdgeBuilder::addQuad\28SkPoint\20const*\29 11012:SkAnalyticEdgeBuilder::addPolyLine\28SkPoint\20const*\2c\20char*\2c\20char**\29 11013:SkAnalyticEdgeBuilder::addLine\28SkPoint\20const*\29 11014:SkAnalyticEdgeBuilder::addCubic\28SkPoint\20const*\29 11015:SkAAClipBlitter::~SkAAClipBlitter\28\29.1 11016:SkAAClipBlitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 11017:SkAAClipBlitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 11018:SkAAClipBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 11019:SkAAClipBlitter::blitH\28int\2c\20int\2c\20int\29 11020:SkAAClipBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 11021:SkAAClip::Builder::operateY\28SkAAClip\20const&\2c\20SkAAClip\20const&\2c\20SkClipOp\29::$_1::__invoke\28unsigned\20int\2c\20unsigned\20int\29 11022:SkAAClip::Builder::operateY\28SkAAClip\20const&\2c\20SkAAClip\20const&\2c\20SkClipOp\29::$_0::__invoke\28unsigned\20int\2c\20unsigned\20int\29 11023:SkAAClip::Builder::Blitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 11024:SkAAClip::Builder::Blitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 11025:SkAAClip::Builder::Blitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 11026:SkAAClip::Builder::Blitter::blitH\28int\2c\20int\2c\20int\29 11027:SkAAClip::Builder::Blitter::blitAntiRect\28int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\29 11028:SkA8_Coverage_Blitter::~SkA8_Coverage_Blitter\28\29.1 11029:SkA8_Coverage_Blitter::~SkA8_Coverage_Blitter\28\29 11030:SkA8_Coverage_Blitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 11031:SkA8_Coverage_Blitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 11032:SkA8_Coverage_Blitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 11033:SkA8_Coverage_Blitter::blitH\28int\2c\20int\2c\20int\29 11034:SkA8_Coverage_Blitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 11035:SkA8_Blitter::~SkA8_Blitter\28\29.1 11036:SkA8_Blitter::~SkA8_Blitter\28\29 11037:SkA8_Blitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 11038:SkA8_Blitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 11039:SkA8_Blitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 11040:SkA8_Blitter::blitH\28int\2c\20int\2c\20int\29 11041:SkA8_Blitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 11042:SkA8Blitter_Choose\28SkPixmap\20const&\2c\20SkMatrix\20const&\2c\20SkPaint\20const&\2c\20SkArenaAlloc*\2c\20bool\2c\20sk_sp\2c\20SkSurfaceProps\20const&\29 11043:Sk2DPathEffect::nextSpan\28int\2c\20int\2c\20int\2c\20SkPath*\29\20const 11044:Sk2DPathEffect::flatten\28SkWriteBuffer&\29\20const 11045:SimpleVFilter16i_C 11046:SimpleVFilter16_C 11047:SimpleTextStyle*\20emscripten::internal::raw_constructor\28\29 11048:SimpleTextStyle*\20emscripten::internal::MemberAccess::getWire\28SimpleTextStyle\20SimpleParagraphStyle::*\20const&\2c\20SimpleParagraphStyle\20const&\29 11049:SimpleStrutStyle*\20emscripten::internal::raw_constructor\28\29 11050:SimpleStrutStyle*\20emscripten::internal::MemberAccess::getWire\28SimpleStrutStyle\20SimpleParagraphStyle::*\20const&\2c\20SimpleParagraphStyle\20const&\29 11051:SimpleParagraphStyle*\20emscripten::internal::raw_constructor\28\29 11052:SimpleHFilter16i_C 11053:SimpleHFilter16_C 11054:SimpleFontStyle*\20emscripten::internal::raw_constructor\28\29 11055:ShaderPDXferProcessor::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11056:ShaderPDXferProcessor::name\28\29\20const 11057:ShaderPDXferProcessor::makeProgramImpl\28\29\20const 11058:SafeRLEAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\29 11059:SafeRLEAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20int\29 11060:SafeRLEAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 11061:RuntimeEffectUniform*\20emscripten::internal::raw_constructor\28\29 11062:RuntimeEffectRPCallbacks::toLinearSrgb\28void\20const*\29 11063:RuntimeEffectRPCallbacks::fromLinearSrgb\28void\20const*\29 11064:RuntimeEffectRPCallbacks::appendShader\28int\29 11065:RuntimeEffectRPCallbacks::appendColorFilter\28int\29 11066:RuntimeEffectRPCallbacks::appendBlender\28int\29 11067:RunBasedAdditiveBlitter::~RunBasedAdditiveBlitter\28\29 11068:RunBasedAdditiveBlitter::getRealBlitter\28bool\29 11069:RunBasedAdditiveBlitter::flush_if_y_changed\28int\2c\20int\29 11070:RunBasedAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\29 11071:RunBasedAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20int\29 11072:RunBasedAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 11073:Round_Up_To_Grid 11074:Round_To_Half_Grid 11075:Round_To_Grid 11076:Round_To_Double_Grid 11077:Round_Super_45 11078:Round_Super 11079:Round_None 11080:Round_Down_To_Grid 11081:RoundJoiner\28SkPath*\2c\20SkPath*\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20float\2c\20bool\2c\20bool\29 11082:RoundCapper\28SkPath*\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPath*\29 11083:Reset 11084:Read_CVT_Stretched 11085:Read_CVT 11086:RD4_C 11087:Project_y 11088:Project 11089:ProcessRows 11090:PredictorAdd9_C 11091:PredictorAdd8_C 11092:PredictorAdd7_C 11093:PredictorAdd6_C 11094:PredictorAdd5_C 11095:PredictorAdd4_C 11096:PredictorAdd3_C 11097:PredictorAdd2_C 11098:PredictorAdd1_C 11099:PredictorAdd13_C 11100:PredictorAdd12_C 11101:PredictorAdd11_C 11102:PredictorAdd10_C 11103:PredictorAdd0_C 11104:PrePostInverseBlitterProc\28SkBlitter*\2c\20int\2c\20bool\29 11105:PorterDuffXferProcessor::onHasSecondaryOutput\28\29\20const 11106:PorterDuffXferProcessor::onGetBlendInfo\28skgpu::BlendInfo*\29\20const 11107:PorterDuffXferProcessor::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11108:PorterDuffXferProcessor::name\28\29\20const 11109:PorterDuffXferProcessor::makeProgramImpl\28\29\20const::Impl::emitOutputsForBlendState\28GrXferProcessor::ProgramImpl::EmitArgs\20const&\29 11110:PorterDuffXferProcessor::makeProgramImpl\28\29\20const 11111:ParseVP8X 11112:PackRGB_C 11113:PDLCDXferProcessor::onIsEqual\28GrXferProcessor\20const&\29\20const 11114:PDLCDXferProcessor::onGetBlendInfo\28skgpu::BlendInfo*\29\20const 11115:PDLCDXferProcessor::name\28\29\20const 11116:PDLCDXferProcessor::makeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrXferProcessor\20const&\29 11117:PDLCDXferProcessor::makeProgramImpl\28\29\20const::Impl::emitOutputsForBlendState\28GrXferProcessor::ProgramImpl::EmitArgs\20const&\29 11118:PDLCDXferProcessor::makeProgramImpl\28\29\20const 11119:OT::match_glyph\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29 11120:OT::match_coverage\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29 11121:OT::match_class_cached\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29 11122:OT::match_class_cached2\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29 11123:OT::match_class_cached1\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29 11124:OT::match_class\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29 11125:OT::hb_ot_apply_context_t::return_t\20OT::Layout::GSUB_impl::SubstLookup::dispatch_recurse_func\28OT::hb_ot_apply_context_t*\2c\20unsigned\20int\29 11126:OT::hb_ot_apply_context_t::return_t\20OT::Layout::GPOS_impl::PosLookup::dispatch_recurse_func\28OT::hb_ot_apply_context_t*\2c\20unsigned\20int\29 11127:OT::cff1::accelerator_t::gname_t::cmp\28void\20const*\2c\20void\20const*\29 11128:OT::Layout::Common::RangeRecord::cmp_range\28void\20const*\2c\20void\20const*\29 11129:OT::ColorLine::static_get_color_stops\28hb_color_line_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20hb_color_stop_t*\2c\20void*\29 11130:OT::ColorLine::static_get_color_stops\28hb_color_line_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20hb_color_stop_t*\2c\20void*\29 11131:OT::CmapSubtableFormat4::accelerator_t::get_glyph_func\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\29 11132:Move_CVT_Stretched 11133:Move_CVT 11134:MiterJoiner\28SkPath*\2c\20SkPath*\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20float\2c\20bool\2c\20bool\29 11135:MaskAdditiveBlitter::~MaskAdditiveBlitter\28\29.1 11136:MaskAdditiveBlitter::~MaskAdditiveBlitter\28\29 11137:MaskAdditiveBlitter::getWidth\28\29 11138:MaskAdditiveBlitter::getRealBlitter\28bool\29 11139:MaskAdditiveBlitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 11140:MaskAdditiveBlitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 11141:MaskAdditiveBlitter::blitAntiRect\28int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\29 11142:MaskAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\29 11143:MaskAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20int\29 11144:MaskAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 11145:MapAlpha_C 11146:MapARGB_C 11147:MakeRenderTarget\28sk_sp\2c\20int\2c\20int\29 11148:MakeRenderTarget\28sk_sp\2c\20SimpleImageInfo\29 11149:MakePathFromVerbsPointsWeights\28unsigned\20long\2c\20int\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long\2c\20int\29 11150:MakePathFromSVGString\28std::__2::basic_string\2c\20std::__2::allocator>\29 11151:MakePathFromOp\28SkPath\20const&\2c\20SkPath\20const&\2c\20SkPathOp\29 11152:MakePathFromInterpolation\28SkPath\20const&\2c\20SkPath\20const&\2c\20float\29 11153:MakePathFromCmds\28unsigned\20long\2c\20int\29 11154:MakeOnScreenGLSurface\28sk_sp\2c\20int\2c\20int\2c\20sk_sp\29 11155:MakeImageFromGenerator\28SimpleImageInfo\2c\20emscripten::val\29 11156:MakeGrContext\28\29 11157:MakeAsWinding\28SkPath\20const&\29 11158:LD4_C 11159:JpegDecoderMgr::returnFailure\28char\20const*\2c\20SkCodec::Result\29 11160:JpegDecoderMgr::init\28\29 11161:JpegDecoderMgr::SourceMgr::SkipInputData\28jpeg_decompress_struct*\2c\20long\29 11162:JpegDecoderMgr::SourceMgr::InitSource\28jpeg_decompress_struct*\29 11163:JpegDecoderMgr::SourceMgr::FillInputBuffer\28jpeg_decompress_struct*\29 11164:JpegDecoderMgr::JpegDecoderMgr\28SkStream*\29 11165:IsValidSimpleFormat 11166:IsValidExtendedFormat 11167:InverseBlitter::blitH\28int\2c\20int\2c\20int\29 11168:Init 11169:HorizontalUnfilter_C 11170:HorizontalFilter_C 11171:Horish_SkAntiHairBlitter::drawLine\28int\2c\20int\2c\20int\2c\20int\29 11172:Horish_SkAntiHairBlitter::drawCap\28int\2c\20int\2c\20int\2c\20int\29 11173:HasAlpha8b_C 11174:HasAlpha32b_C 11175:HU4_C 11176:HLine_SkAntiHairBlitter::drawLine\28int\2c\20int\2c\20int\2c\20int\29 11177:HLine_SkAntiHairBlitter::drawCap\28int\2c\20int\2c\20int\2c\20int\29 11178:HFilter8i_C 11179:HFilter8_C 11180:HFilter16i_C 11181:HFilter16_C 11182:HE8uv_C 11183:HE4_C 11184:HE16_C 11185:HD4_C 11186:GradientUnfilter_C 11187:GradientFilter_C 11188:GrYUVtoRGBEffect::onMakeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 11189:GrYUVtoRGBEffect::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11190:GrYUVtoRGBEffect::onMakeProgramImpl\28\29\20const 11191:GrYUVtoRGBEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11192:GrYUVtoRGBEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11193:GrYUVtoRGBEffect::name\28\29\20const 11194:GrYUVtoRGBEffect::clone\28\29\20const 11195:GrXferProcessor::ProgramImpl::emitWriteSwizzle\28GrGLSLXPFragmentBuilder*\2c\20skgpu::Swizzle\20const&\2c\20char\20const*\2c\20char\20const*\29\20const 11196:GrXferProcessor::ProgramImpl::emitOutputsForBlendState\28GrXferProcessor::ProgramImpl::EmitArgs\20const&\29 11197:GrXferProcessor::ProgramImpl::emitBlendCodeForDstRead\28GrGLSLXPFragmentBuilder*\2c\20GrGLSLUniformHandler*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20GrXferProcessor\20const&\29 11198:GrWritePixelsTask::~GrWritePixelsTask\28\29.1 11199:GrWritePixelsTask::onMakeClosed\28GrRecordingContext*\2c\20SkIRect*\29 11200:GrWritePixelsTask::onExecute\28GrOpFlushState*\29 11201:GrWritePixelsTask::gatherProxyIntervals\28GrResourceAllocator*\29\20const 11202:GrWaitRenderTask::~GrWaitRenderTask\28\29.1 11203:GrWaitRenderTask::onIsUsed\28GrSurfaceProxy*\29\20const 11204:GrWaitRenderTask::onExecute\28GrOpFlushState*\29 11205:GrWaitRenderTask::gatherProxyIntervals\28GrResourceAllocator*\29\20const 11206:GrTriangulator::~GrTriangulator\28\29 11207:GrTransferFromRenderTask::~GrTransferFromRenderTask\28\29.1 11208:GrTransferFromRenderTask::onExecute\28GrOpFlushState*\29 11209:GrTransferFromRenderTask::gatherProxyIntervals\28GrResourceAllocator*\29\20const 11210:GrThreadSafeCache::Trampoline::~Trampoline\28\29.1 11211:GrThreadSafeCache::Trampoline::~Trampoline\28\29 11212:GrTextureResolveRenderTask::~GrTextureResolveRenderTask\28\29.1 11213:GrTextureResolveRenderTask::onExecute\28GrOpFlushState*\29 11214:GrTextureResolveRenderTask::gatherProxyIntervals\28GrResourceAllocator*\29\20const 11215:GrTextureRenderTargetProxy::~GrTextureRenderTargetProxy\28\29.1 11216:GrTextureRenderTargetProxy::~GrTextureRenderTargetProxy\28\29 11217:GrTextureRenderTargetProxy::onUninstantiatedGpuMemorySize\28\29\20const 11218:GrTextureRenderTargetProxy::instantiate\28GrResourceProvider*\29 11219:GrTextureRenderTargetProxy::createSurface\28GrResourceProvider*\29\20const 11220:GrTextureProxy::~GrTextureProxy\28\29.2 11221:GrTextureProxy::~GrTextureProxy\28\29.1 11222:GrTextureProxy::onUninstantiatedGpuMemorySize\28\29\20const 11223:GrTextureProxy::instantiate\28GrResourceProvider*\29 11224:GrTextureProxy::createSurface\28GrResourceProvider*\29\20const 11225:GrTextureProxy::callbackDesc\28\29\20const 11226:GrTextureEffect::~GrTextureEffect\28\29.1 11227:GrTextureEffect::~GrTextureEffect\28\29 11228:GrTextureEffect::onMakeProgramImpl\28\29\20const 11229:GrTextureEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11230:GrTextureEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11231:GrTextureEffect::name\28\29\20const 11232:GrTextureEffect::clone\28\29\20const 11233:GrTextureEffect::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 11234:GrTextureEffect::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11235:GrTexture::onGpuMemorySize\28\29\20const 11236:GrTDeferredProxyUploader>::~GrTDeferredProxyUploader\28\29.1 11237:GrTDeferredProxyUploader>::freeData\28\29 11238:GrTDeferredProxyUploader<\28anonymous\20namespace\29::SoftwarePathData>::~GrTDeferredProxyUploader\28\29.1 11239:GrTDeferredProxyUploader<\28anonymous\20namespace\29::SoftwarePathData>::~GrTDeferredProxyUploader\28\29 11240:GrTDeferredProxyUploader<\28anonymous\20namespace\29::SoftwarePathData>::freeData\28\29 11241:GrSurfaceProxy::getUniqueKey\28\29\20const 11242:GrSurface::~GrSurface\28\29 11243:GrSurface::getResourceType\28\29\20const 11244:GrStrokeTessellationShader::~GrStrokeTessellationShader\28\29.1 11245:GrStrokeTessellationShader::~GrStrokeTessellationShader\28\29 11246:GrStrokeTessellationShader::name\28\29\20const 11247:GrStrokeTessellationShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11248:GrStrokeTessellationShader::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11249:GrStrokeTessellationShader::Impl::~Impl\28\29.1 11250:GrStrokeTessellationShader::Impl::~Impl\28\29 11251:GrStrokeTessellationShader::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 11252:GrStrokeTessellationShader::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11253:GrSkSLFP::~GrSkSLFP\28\29.1 11254:GrSkSLFP::~GrSkSLFP\28\29 11255:GrSkSLFP::onMakeProgramImpl\28\29\20const 11256:GrSkSLFP::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11257:GrSkSLFP::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11258:GrSkSLFP::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 11259:GrSkSLFP::clone\28\29\20const 11260:GrSkSLFP::Impl::~Impl\28\29.1 11261:GrSkSLFP::Impl::~Impl\28\29 11262:GrSkSLFP::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 11263:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::toLinearSrgb\28std::__2::basic_string\2c\20std::__2::allocator>\29 11264:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::sampleShader\28int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 11265:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::sampleColorFilter\28int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 11266:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::sampleBlender\28int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 11267:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::getMangledName\28char\20const*\29 11268:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::fromLinearSrgb\28std::__2::basic_string\2c\20std::__2::allocator>\29 11269:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::defineFunction\28char\20const*\2c\20char\20const*\2c\20bool\29 11270:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::declareUniform\28SkSL::VarDeclaration\20const*\29 11271:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::declareFunction\28char\20const*\29 11272:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11273:GrSimpleMesh*\20SkArenaAlloc::allocUninitializedArray\28unsigned\20long\29::'lambda'\28char*\29::__invoke\28char*\29 11274:GrRingBuffer::FinishSubmit\28void*\29 11275:GrResourceCache::CompareTimestamp\28GrGpuResource*\20const&\2c\20GrGpuResource*\20const&\29 11276:GrRenderTask::~GrRenderTask\28\29 11277:GrRenderTask::disown\28GrDrawingManager*\29 11278:GrRenderTargetProxy::~GrRenderTargetProxy\28\29.1 11279:GrRenderTargetProxy::~GrRenderTargetProxy\28\29 11280:GrRenderTargetProxy::onUninstantiatedGpuMemorySize\28\29\20const 11281:GrRenderTargetProxy::instantiate\28GrResourceProvider*\29 11282:GrRenderTargetProxy::createSurface\28GrResourceProvider*\29\20const 11283:GrRenderTargetProxy::callbackDesc\28\29\20const 11284:GrRecordingContext::~GrRecordingContext\28\29.1 11285:GrRecordingContext::abandoned\28\29 11286:GrRRectShadowGeoProc::~GrRRectShadowGeoProc\28\29.1 11287:GrRRectShadowGeoProc::~GrRRectShadowGeoProc\28\29 11288:GrRRectShadowGeoProc::onTextureSampler\28int\29\20const 11289:GrRRectShadowGeoProc::name\28\29\20const 11290:GrRRectShadowGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11291:GrRRectShadowGeoProc::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11292:GrQuadEffect::name\28\29\20const 11293:GrQuadEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11294:GrQuadEffect::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11295:GrQuadEffect::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 11296:GrQuadEffect::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11297:GrPorterDuffXPFactory::makeXferProcessor\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 11298:GrPorterDuffXPFactory::analysisProperties\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\20const&\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 11299:GrPerlinNoise2Effect::~GrPerlinNoise2Effect\28\29.1 11300:GrPerlinNoise2Effect::~GrPerlinNoise2Effect\28\29 11301:GrPerlinNoise2Effect::onMakeProgramImpl\28\29\20const 11302:GrPerlinNoise2Effect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11303:GrPerlinNoise2Effect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11304:GrPerlinNoise2Effect::name\28\29\20const 11305:GrPerlinNoise2Effect::clone\28\29\20const 11306:GrPerlinNoise2Effect::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 11307:GrPerlinNoise2Effect::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11308:GrPathTessellationShader::Impl::~Impl\28\29 11309:GrPathTessellationShader::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 11310:GrPathTessellationShader::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11311:GrOpsRenderPass::~GrOpsRenderPass\28\29 11312:GrOpsRenderPass::onExecuteDrawable\28std::__2::unique_ptr>\29 11313:GrOpsRenderPass::onDrawIndirect\28GrBuffer\20const*\2c\20unsigned\20long\2c\20int\29 11314:GrOpsRenderPass::onDrawIndexedIndirect\28GrBuffer\20const*\2c\20unsigned\20long\2c\20int\29 11315:GrOpFlushState::~GrOpFlushState\28\29.1 11316:GrOpFlushState::~GrOpFlushState\28\29 11317:GrOpFlushState::writeView\28\29\20const 11318:GrOpFlushState::usesMSAASurface\28\29\20const 11319:GrOpFlushState::tokenTracker\28\29 11320:GrOpFlushState::threadSafeCache\28\29\20const 11321:GrOpFlushState::strikeCache\28\29\20const 11322:GrOpFlushState::smallPathAtlasManager\28\29\20const 11323:GrOpFlushState::sampledProxyArray\28\29 11324:GrOpFlushState::rtProxy\28\29\20const 11325:GrOpFlushState::resourceProvider\28\29\20const 11326:GrOpFlushState::renderPassBarriers\28\29\20const 11327:GrOpFlushState::recordDraw\28GrGeometryProcessor\20const*\2c\20GrSimpleMesh\20const*\2c\20int\2c\20GrSurfaceProxy\20const*\20const*\2c\20GrPrimitiveType\29 11328:GrOpFlushState::putBackVertices\28int\2c\20unsigned\20long\29 11329:GrOpFlushState::putBackIndirectDraws\28int\29 11330:GrOpFlushState::putBackIndices\28int\29 11331:GrOpFlushState::putBackIndexedIndirectDraws\28int\29 11332:GrOpFlushState::makeVertexSpace\28unsigned\20long\2c\20int\2c\20sk_sp*\2c\20int*\29 11333:GrOpFlushState::makeVertexSpaceAtLeast\28unsigned\20long\2c\20int\2c\20int\2c\20sk_sp*\2c\20int*\2c\20int*\29 11334:GrOpFlushState::makeIndexSpace\28int\2c\20sk_sp*\2c\20int*\29 11335:GrOpFlushState::makeIndexSpaceAtLeast\28int\2c\20int\2c\20sk_sp*\2c\20int*\2c\20int*\29 11336:GrOpFlushState::makeDrawIndirectSpace\28int\2c\20sk_sp*\2c\20unsigned\20long*\29 11337:GrOpFlushState::makeDrawIndexedIndirectSpace\28int\2c\20sk_sp*\2c\20unsigned\20long*\29 11338:GrOpFlushState::dstProxyView\28\29\20const 11339:GrOpFlushState::colorLoadOp\28\29\20const 11340:GrOpFlushState::atlasManager\28\29\20const 11341:GrOpFlushState::appliedClip\28\29\20const 11342:GrOpFlushState::addInlineUpload\28std::__2::function&\29>&&\29 11343:GrOp::~GrOp\28\29 11344:GrOnFlushCallbackObject::postFlush\28skgpu::AtlasToken\29 11345:GrModulateAtlasCoverageEffect::onMakeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 11346:GrModulateAtlasCoverageEffect::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11347:GrModulateAtlasCoverageEffect::onMakeProgramImpl\28\29\20const 11348:GrModulateAtlasCoverageEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11349:GrModulateAtlasCoverageEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11350:GrModulateAtlasCoverageEffect::name\28\29\20const 11351:GrModulateAtlasCoverageEffect::clone\28\29\20const 11352:GrMeshDrawOp::onPrepare\28GrOpFlushState*\29 11353:GrMeshDrawOp::onPrePrepare\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 11354:GrMatrixEffect::onMakeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 11355:GrMatrixEffect::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11356:GrMatrixEffect::onMakeProgramImpl\28\29\20const 11357:GrMatrixEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11358:GrMatrixEffect::name\28\29\20const 11359:GrMatrixEffect::clone\28\29\20const 11360:GrMakeUniqueKeyInvalidationListener\28skgpu::UniqueKey*\2c\20unsigned\20int\29::Listener::~Listener\28\29.1 11361:GrMakeUniqueKeyInvalidationListener\28skgpu::UniqueKey*\2c\20unsigned\20int\29::Listener::~Listener\28\29 11362:GrMakeUniqueKeyInvalidationListener\28skgpu::UniqueKey*\2c\20unsigned\20int\29::$_0::__invoke\28void\20const*\2c\20void*\29 11363:GrImageContext::~GrImageContext\28\29.1 11364:GrImageContext::~GrImageContext\28\29 11365:GrHardClip::apply\28GrRecordingContext*\2c\20skgpu::ganesh::SurfaceDrawContext*\2c\20GrDrawOp*\2c\20GrAAType\2c\20GrAppliedClip*\2c\20SkRect*\29\20const 11366:GrGpuResource::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 11367:GrGpuBuffer::~GrGpuBuffer\28\29 11368:GrGpuBuffer::unref\28\29\20const 11369:GrGpuBuffer::getResourceType\28\29\20const 11370:GrGpuBuffer::computeScratchKey\28skgpu::ScratchKey*\29\20const 11371:GrGeometryProcessor::onTextureSampler\28int\29\20const 11372:GrGeometryProcessor::ProgramImpl::~ProgramImpl\28\29 11373:GrGLVaryingHandler::~GrGLVaryingHandler\28\29 11374:GrGLUniformHandler::~GrGLUniformHandler\28\29.1 11375:GrGLUniformHandler::~GrGLUniformHandler\28\29 11376:GrGLUniformHandler::samplerVariable\28GrResourceHandle\29\20const 11377:GrGLUniformHandler::samplerSwizzle\28GrResourceHandle\29\20const 11378:GrGLUniformHandler::internalAddUniformArray\28GrProcessor\20const*\2c\20unsigned\20int\2c\20SkSLType\2c\20char\20const*\2c\20bool\2c\20int\2c\20char\20const**\29 11379:GrGLUniformHandler::getUniformCStr\28GrResourceHandle\29\20const 11380:GrGLUniformHandler::appendUniformDecls\28GrShaderFlags\2c\20SkString*\29\20const 11381:GrGLUniformHandler::addSampler\28GrBackendFormat\20const&\2c\20GrSamplerState\2c\20skgpu::Swizzle\20const&\2c\20char\20const*\2c\20GrShaderCaps\20const*\29 11382:GrGLTextureRenderTarget::~GrGLTextureRenderTarget\28\29 11383:GrGLTextureRenderTarget::onSetLabel\28\29 11384:GrGLTextureRenderTarget::onRelease\28\29 11385:GrGLTextureRenderTarget::onGpuMemorySize\28\29\20const 11386:GrGLTextureRenderTarget::onAbandon\28\29 11387:GrGLTextureRenderTarget::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 11388:GrGLTextureRenderTarget::backendFormat\28\29\20const 11389:GrGLTexture::~GrGLTexture\28\29.1 11390:GrGLTexture::~GrGLTexture\28\29 11391:GrGLTexture::textureParamsModified\28\29 11392:GrGLTexture::onStealBackendTexture\28GrBackendTexture*\2c\20std::__2::function*\29 11393:GrGLTexture::getBackendTexture\28\29\20const 11394:GrGLSemaphore::~GrGLSemaphore\28\29.1 11395:GrGLSemaphore::~GrGLSemaphore\28\29 11396:GrGLSemaphore::setIsOwned\28\29 11397:GrGLSemaphore::backendSemaphore\28\29\20const 11398:GrGLSLVertexBuilder::~GrGLSLVertexBuilder\28\29 11399:GrGLSLVertexBuilder::onFinalize\28\29 11400:GrGLSLUniformHandler::inputSamplerSwizzle\28GrResourceHandle\29\20const 11401:GrGLSLFragmentShaderBuilder::~GrGLSLFragmentShaderBuilder\28\29.1 11402:GrGLSLFragmentShaderBuilder::~GrGLSLFragmentShaderBuilder\28\29 11403:GrGLSLFragmentShaderBuilder::onFinalize\28\29 11404:GrGLSLFragmentShaderBuilder::hasSecondaryOutput\28\29\20const 11405:GrGLSLFragmentShaderBuilder::forceHighPrecision\28\29 11406:GrGLSLFragmentShaderBuilder::enableAdvancedBlendEquationIfNeeded\28skgpu::BlendEquation\29 11407:GrGLRenderTarget::~GrGLRenderTarget\28\29.1 11408:GrGLRenderTarget::~GrGLRenderTarget\28\29 11409:GrGLRenderTarget::onGpuMemorySize\28\29\20const 11410:GrGLRenderTarget::getBackendRenderTarget\28\29\20const 11411:GrGLRenderTarget::completeStencilAttachment\28GrAttachment*\2c\20bool\29 11412:GrGLRenderTarget::canAttemptStencilAttachment\28bool\29\20const 11413:GrGLRenderTarget::backendFormat\28\29\20const 11414:GrGLRenderTarget::alwaysClearStencil\28\29\20const 11415:GrGLProgramDataManager::~GrGLProgramDataManager\28\29.1 11416:GrGLProgramDataManager::~GrGLProgramDataManager\28\29 11417:GrGLProgramDataManager::setMatrix4fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 11418:GrGLProgramDataManager::setMatrix4f\28GrResourceHandle\2c\20float\20const*\29\20const 11419:GrGLProgramDataManager::setMatrix3fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 11420:GrGLProgramDataManager::setMatrix3f\28GrResourceHandle\2c\20float\20const*\29\20const 11421:GrGLProgramDataManager::setMatrix2fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 11422:GrGLProgramDataManager::setMatrix2f\28GrResourceHandle\2c\20float\20const*\29\20const 11423:GrGLProgramDataManager::set4iv\28GrResourceHandle\2c\20int\2c\20int\20const*\29\20const 11424:GrGLProgramDataManager::set4i\28GrResourceHandle\2c\20int\2c\20int\2c\20int\2c\20int\29\20const 11425:GrGLProgramDataManager::set4f\28GrResourceHandle\2c\20float\2c\20float\2c\20float\2c\20float\29\20const 11426:GrGLProgramDataManager::set3iv\28GrResourceHandle\2c\20int\2c\20int\20const*\29\20const 11427:GrGLProgramDataManager::set3i\28GrResourceHandle\2c\20int\2c\20int\2c\20int\29\20const 11428:GrGLProgramDataManager::set3fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 11429:GrGLProgramDataManager::set3f\28GrResourceHandle\2c\20float\2c\20float\2c\20float\29\20const 11430:GrGLProgramDataManager::set2iv\28GrResourceHandle\2c\20int\2c\20int\20const*\29\20const 11431:GrGLProgramDataManager::set2i\28GrResourceHandle\2c\20int\2c\20int\29\20const 11432:GrGLProgramDataManager::set2f\28GrResourceHandle\2c\20float\2c\20float\29\20const 11433:GrGLProgramDataManager::set1iv\28GrResourceHandle\2c\20int\2c\20int\20const*\29\20const 11434:GrGLProgramDataManager::set1i\28GrResourceHandle\2c\20int\29\20const 11435:GrGLProgramDataManager::set1fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 11436:GrGLProgramDataManager::set1f\28GrResourceHandle\2c\20float\29\20const 11437:GrGLProgramBuilder::~GrGLProgramBuilder\28\29.1 11438:GrGLProgramBuilder::varyingHandler\28\29 11439:GrGLProgramBuilder::caps\28\29\20const 11440:GrGLProgram::~GrGLProgram\28\29.1 11441:GrGLOpsRenderPass::~GrGLOpsRenderPass\28\29 11442:GrGLOpsRenderPass::onSetScissorRect\28SkIRect\20const&\29 11443:GrGLOpsRenderPass::onEnd\28\29 11444:GrGLOpsRenderPass::onDraw\28int\2c\20int\29 11445:GrGLOpsRenderPass::onDrawInstanced\28int\2c\20int\2c\20int\2c\20int\29 11446:GrGLOpsRenderPass::onDrawIndirect\28GrBuffer\20const*\2c\20unsigned\20long\2c\20int\29 11447:GrGLOpsRenderPass::onDrawIndexed\28int\2c\20int\2c\20unsigned\20short\2c\20unsigned\20short\2c\20int\29 11448:GrGLOpsRenderPass::onDrawIndexedInstanced\28int\2c\20int\2c\20int\2c\20int\2c\20int\29 11449:GrGLOpsRenderPass::onDrawIndexedIndirect\28GrBuffer\20const*\2c\20unsigned\20long\2c\20int\29 11450:GrGLOpsRenderPass::onClear\28GrScissorState\20const&\2c\20std::__2::array\29 11451:GrGLOpsRenderPass::onClearStencilClip\28GrScissorState\20const&\2c\20bool\29 11452:GrGLOpsRenderPass::onBindTextures\28GrGeometryProcessor\20const&\2c\20GrSurfaceProxy\20const*\20const*\2c\20GrPipeline\20const&\29 11453:GrGLOpsRenderPass::onBindPipeline\28GrProgramInfo\20const&\2c\20SkRect\20const&\29 11454:GrGLOpsRenderPass::onBindBuffers\28sk_sp\2c\20sk_sp\2c\20sk_sp\2c\20GrPrimitiveRestart\29 11455:GrGLOpsRenderPass::onBegin\28\29 11456:GrGLOpsRenderPass::inlineUpload\28GrOpFlushState*\2c\20std::__2::function&\29>&\29 11457:GrGLInterface::~GrGLInterface\28\29.1 11458:GrGLInterface::~GrGLInterface\28\29 11459:GrGLGpu::~GrGLGpu\28\29.1 11460:GrGLGpu::xferBarrier\28GrRenderTarget*\2c\20GrXferBarrierType\29 11461:GrGLGpu::wrapBackendSemaphore\28GrBackendSemaphore\20const&\2c\20GrSemaphoreWrapType\2c\20GrWrapOwnership\29 11462:GrGLGpu::willExecute\28\29 11463:GrGLGpu::waitSemaphore\28GrSemaphore*\29 11464:GrGLGpu::submit\28GrOpsRenderPass*\29 11465:GrGLGpu::stagingBufferManager\28\29 11466:GrGLGpu::refPipelineBuilder\28\29 11467:GrGLGpu::prepareTextureForCrossContextUsage\28GrTexture*\29 11468:GrGLGpu::precompileShader\28SkData\20const&\2c\20SkData\20const&\29 11469:GrGLGpu::pipelineBuilder\28\29 11470:GrGLGpu::onWritePixels\28GrSurface*\2c\20SkIRect\2c\20GrColorType\2c\20GrColorType\2c\20GrMipLevel\20const*\2c\20int\2c\20bool\29 11471:GrGLGpu::onWrapRenderableBackendTexture\28GrBackendTexture\20const&\2c\20int\2c\20GrWrapOwnership\2c\20GrWrapCacheable\29 11472:GrGLGpu::onWrapCompressedBackendTexture\28GrBackendTexture\20const&\2c\20GrWrapOwnership\2c\20GrWrapCacheable\29 11473:GrGLGpu::onWrapBackendTexture\28GrBackendTexture\20const&\2c\20GrWrapOwnership\2c\20GrWrapCacheable\2c\20GrIOType\29 11474:GrGLGpu::onWrapBackendRenderTarget\28GrBackendRenderTarget\20const&\29 11475:GrGLGpu::onUpdateCompressedBackendTexture\28GrBackendTexture\20const&\2c\20sk_sp\2c\20void\20const*\2c\20unsigned\20long\29 11476:GrGLGpu::onTransferPixelsTo\28GrTexture*\2c\20SkIRect\2c\20GrColorType\2c\20GrColorType\2c\20sk_sp\2c\20unsigned\20long\2c\20unsigned\20long\29 11477:GrGLGpu::onTransferPixelsFrom\28GrSurface*\2c\20SkIRect\2c\20GrColorType\2c\20GrColorType\2c\20sk_sp\2c\20unsigned\20long\29 11478:GrGLGpu::onTransferFromBufferToBuffer\28sk_sp\2c\20unsigned\20long\2c\20sk_sp\2c\20unsigned\20long\2c\20unsigned\20long\29 11479:GrGLGpu::onSubmitToGpu\28GrSyncCpu\29 11480:GrGLGpu::onResolveRenderTarget\28GrRenderTarget*\2c\20SkIRect\20const&\29 11481:GrGLGpu::onResetTextureBindings\28\29 11482:GrGLGpu::onResetContext\28unsigned\20int\29 11483:GrGLGpu::onRegenerateMipMapLevels\28GrTexture*\29 11484:GrGLGpu::onReadPixels\28GrSurface*\2c\20SkIRect\2c\20GrColorType\2c\20GrColorType\2c\20void*\2c\20unsigned\20long\29 11485:GrGLGpu::onGetOpsRenderPass\28GrRenderTarget*\2c\20bool\2c\20GrAttachment*\2c\20GrSurfaceOrigin\2c\20SkIRect\20const&\2c\20GrOpsRenderPass::LoadAndStoreInfo\20const&\2c\20GrOpsRenderPass::StencilLoadAndStoreInfo\20const&\2c\20skia_private::TArray\20const&\2c\20GrXferBarrierFlags\29 11486:GrGLGpu::onDumpJSON\28SkJSONWriter*\29\20const 11487:GrGLGpu::onCreateTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20int\2c\20unsigned\20int\2c\20std::__2::basic_string_view>\29 11488:GrGLGpu::onCreateCompressedTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20skgpu::Budgeted\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20void\20const*\2c\20unsigned\20long\29 11489:GrGLGpu::onCreateCompressedBackendTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\29 11490:GrGLGpu::onCreateBuffer\28unsigned\20long\2c\20GrGpuBufferType\2c\20GrAccessPattern\29 11491:GrGLGpu::onCreateBackendTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20skgpu::Renderable\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 11492:GrGLGpu::onCopySurface\28GrSurface*\2c\20SkIRect\20const&\2c\20GrSurface*\2c\20SkIRect\20const&\2c\20SkFilterMode\29 11493:GrGLGpu::onClearBackendTexture\28GrBackendTexture\20const&\2c\20sk_sp\2c\20std::__2::array\29 11494:GrGLGpu::makeStencilAttachment\28GrBackendFormat\20const&\2c\20SkISize\2c\20int\29 11495:GrGLGpu::makeSemaphore\28bool\29 11496:GrGLGpu::makeMSAAAttachment\28SkISize\2c\20GrBackendFormat\20const&\2c\20int\2c\20skgpu::Protected\2c\20GrMemoryless\29 11497:GrGLGpu::insertSemaphore\28GrSemaphore*\29 11498:GrGLGpu::getPreferredStencilFormat\28GrBackendFormat\20const&\29 11499:GrGLGpu::finishOutstandingGpuWork\28\29 11500:GrGLGpu::disconnect\28GrGpu::DisconnectType\29 11501:GrGLGpu::deleteBackendTexture\28GrBackendTexture\20const&\29 11502:GrGLGpu::compile\28GrProgramDesc\20const&\2c\20GrProgramInfo\20const&\29 11503:GrGLGpu::checkFinishProcs\28\29 11504:GrGLGpu::addFinishedProc\28void\20\28*\29\28void*\29\2c\20void*\29 11505:GrGLGpu::ProgramCache::~ProgramCache\28\29.1 11506:GrGLGpu::ProgramCache::~ProgramCache\28\29 11507:GrGLFunction::GrGLFunction\28void\20\28*\29\28unsigned\20int\2c\20unsigned\20int\2c\20float\29\29::'lambda'\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20float\29::__invoke\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20float\29 11508:GrGLFunction::GrGLFunction\28void\20\28*\29\28int\2c\20float\2c\20float\2c\20float\29\29::'lambda'\28void\20const*\2c\20int\2c\20float\2c\20float\2c\20float\29::__invoke\28void\20const*\2c\20int\2c\20float\2c\20float\2c\20float\29 11509:GrGLFunction::GrGLFunction\28void\20\28*\29\28float\2c\20float\2c\20float\2c\20float\29\29::'lambda'\28void\20const*\2c\20float\2c\20float\2c\20float\2c\20float\29::__invoke\28void\20const*\2c\20float\2c\20float\2c\20float\2c\20float\29 11510:GrGLFunction::GrGLFunction\28void\20\28*\29\28float\29\29::'lambda'\28void\20const*\2c\20float\29::__invoke\28void\20const*\2c\20float\29 11511:GrGLFunction::GrGLFunction\28void\20\28*\29\28__GLsync*\2c\20unsigned\20int\2c\20unsigned\20long\20long\29\29::'lambda'\28void\20const*\2c\20__GLsync*\2c\20unsigned\20int\2c\20unsigned\20long\20long\29::__invoke\28void\20const*\2c\20__GLsync*\2c\20unsigned\20int\2c\20unsigned\20long\20long\29 11512:GrGLFunction::GrGLFunction\28void\20\28*\29\28\29\29::'lambda'\28void\20const*\29::__invoke\28void\20const*\29 11513:GrGLFunction::GrGLFunction\28unsigned\20int\20\28*\29\28__GLsync*\2c\20unsigned\20int\2c\20unsigned\20long\20long\29\29::'lambda'\28void\20const*\2c\20__GLsync*\2c\20unsigned\20int\2c\20unsigned\20long\20long\29::__invoke\28void\20const*\2c\20__GLsync*\2c\20unsigned\20int\2c\20unsigned\20long\20long\29 11514:GrGLFunction::GrGLFunction\28unsigned\20int\20\28*\29\28\29\29::'lambda'\28void\20const*\29::__invoke\28void\20const*\29 11515:GrGLCaps::~GrGLCaps\28\29.1 11516:GrGLCaps::surfaceSupportsReadPixels\28GrSurface\20const*\29\20const 11517:GrGLCaps::supportedWritePixelsColorType\28GrColorType\2c\20GrBackendFormat\20const&\2c\20GrColorType\29\20const 11518:GrGLCaps::onSurfaceSupportsWritePixels\28GrSurface\20const*\29\20const 11519:GrGLCaps::onSupportsDynamicMSAA\28GrRenderTargetProxy\20const*\29\20const 11520:GrGLCaps::onSupportedReadPixelsColorType\28GrColorType\2c\20GrBackendFormat\20const&\2c\20GrColorType\29\20const 11521:GrGLCaps::onIsWindowRectanglesSupportedForRT\28GrBackendRenderTarget\20const&\29\20const 11522:GrGLCaps::onGetReadSwizzle\28GrBackendFormat\20const&\2c\20GrColorType\29\20const 11523:GrGLCaps::onGetDstSampleFlagsForProxy\28GrRenderTargetProxy\20const*\29\20const 11524:GrGLCaps::onGetDefaultBackendFormat\28GrColorType\29\20const 11525:GrGLCaps::onDumpJSON\28SkJSONWriter*\29\20const 11526:GrGLCaps::onCanCopySurface\28GrSurfaceProxy\20const*\2c\20SkIRect\20const&\2c\20GrSurfaceProxy\20const*\2c\20SkIRect\20const&\29\20const 11527:GrGLCaps::onAreColorTypeAndFormatCompatible\28GrColorType\2c\20GrBackendFormat\20const&\29\20const 11528:GrGLCaps::onApplyOptionsOverrides\28GrContextOptions\20const&\29 11529:GrGLCaps::maxRenderTargetSampleCount\28GrBackendFormat\20const&\29\20const 11530:GrGLCaps::makeDesc\28GrRenderTarget*\2c\20GrProgramInfo\20const&\2c\20GrCaps::ProgramDescOverrideFlags\29\20const 11531:GrGLCaps::isFormatTexturable\28GrBackendFormat\20const&\2c\20GrTextureType\29\20const 11532:GrGLCaps::isFormatSRGB\28GrBackendFormat\20const&\29\20const 11533:GrGLCaps::isFormatRenderable\28GrBackendFormat\20const&\2c\20int\29\20const 11534:GrGLCaps::isFormatCopyable\28GrBackendFormat\20const&\29\20const 11535:GrGLCaps::isFormatAsColorTypeRenderable\28GrColorType\2c\20GrBackendFormat\20const&\2c\20int\29\20const 11536:GrGLCaps::getWriteSwizzle\28GrBackendFormat\20const&\2c\20GrColorType\29\20const 11537:GrGLCaps::getRenderTargetSampleCount\28int\2c\20GrBackendFormat\20const&\29\20const 11538:GrGLCaps::getDstCopyRestrictions\28GrRenderTargetProxy\20const*\2c\20GrColorType\29\20const 11539:GrGLCaps::getBackendFormatFromCompressionType\28SkTextureCompressionType\29\20const 11540:GrGLCaps::computeFormatKey\28GrBackendFormat\20const&\29\20const 11541:GrGLBuffer::~GrGLBuffer\28\29.1 11542:GrGLBuffer::~GrGLBuffer\28\29 11543:GrGLBuffer::setMemoryBacking\28SkTraceMemoryDump*\2c\20SkString\20const&\29\20const 11544:GrGLBuffer::onUpdateData\28void\20const*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\29 11545:GrGLBuffer::onUnmap\28GrGpuBuffer::MapType\29 11546:GrGLBuffer::onSetLabel\28\29 11547:GrGLBuffer::onRelease\28\29 11548:GrGLBuffer::onMap\28GrGpuBuffer::MapType\29 11549:GrGLBuffer::onClearToZero\28\29 11550:GrGLBuffer::onAbandon\28\29 11551:GrGLBackendTextureData::~GrGLBackendTextureData\28\29.1 11552:GrGLBackendTextureData::~GrGLBackendTextureData\28\29 11553:GrGLBackendTextureData::isSameTexture\28GrBackendTextureData\20const*\29\20const 11554:GrGLBackendTextureData::isProtected\28\29\20const 11555:GrGLBackendTextureData::getBackendFormat\28\29\20const 11556:GrGLBackendTextureData::equal\28GrBackendTextureData\20const*\29\20const 11557:GrGLBackendTextureData::copyTo\28SkAnySubclass&\29\20const 11558:GrGLBackendRenderTargetData::isProtected\28\29\20const 11559:GrGLBackendRenderTargetData::getBackendFormat\28\29\20const 11560:GrGLBackendRenderTargetData::equal\28GrBackendRenderTargetData\20const*\29\20const 11561:GrGLBackendRenderTargetData::copyTo\28SkAnySubclass&\29\20const 11562:GrGLBackendFormatData::toString\28\29\20const 11563:GrGLBackendFormatData::stencilBits\28\29\20const 11564:GrGLBackendFormatData::equal\28GrBackendFormatData\20const*\29\20const 11565:GrGLBackendFormatData::desc\28\29\20const 11566:GrGLBackendFormatData::copyTo\28SkAnySubclass&\29\20const 11567:GrGLBackendFormatData::compressionType\28\29\20const 11568:GrGLBackendFormatData::channelMask\28\29\20const 11569:GrGLBackendFormatData::bytesPerBlock\28\29\20const 11570:GrGLAttachment::~GrGLAttachment\28\29 11571:GrGLAttachment::setMemoryBacking\28SkTraceMemoryDump*\2c\20SkString\20const&\29\20const 11572:GrGLAttachment::onSetLabel\28\29 11573:GrGLAttachment::onRelease\28\29 11574:GrGLAttachment::onAbandon\28\29 11575:GrGLAttachment::backendFormat\28\29\20const 11576:GrFragmentProcessor::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 11577:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11578:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::onMakeProgramImpl\28\29\20const 11579:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11580:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11581:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::name\28\29\20const 11582:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 11583:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::clone\28\29\20const 11584:GrFragmentProcessor::SurfaceColor\28\29::SurfaceColorProcessor::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11585:GrFragmentProcessor::SurfaceColor\28\29::SurfaceColorProcessor::onMakeProgramImpl\28\29\20const 11586:GrFragmentProcessor::SurfaceColor\28\29::SurfaceColorProcessor::name\28\29\20const 11587:GrFragmentProcessor::SurfaceColor\28\29::SurfaceColorProcessor::clone\28\29\20const 11588:GrFragmentProcessor::ProgramImpl::~ProgramImpl\28\29 11589:GrFragmentProcessor::HighPrecision\28std::__2::unique_ptr>\29::HighPrecisionFragmentProcessor::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11590:GrFragmentProcessor::HighPrecision\28std::__2::unique_ptr>\29::HighPrecisionFragmentProcessor::onMakeProgramImpl\28\29\20const 11591:GrFragmentProcessor::HighPrecision\28std::__2::unique_ptr>\29::HighPrecisionFragmentProcessor::name\28\29\20const 11592:GrFragmentProcessor::HighPrecision\28std::__2::unique_ptr>\29::HighPrecisionFragmentProcessor::clone\28\29\20const 11593:GrFragmentProcessor::DeviceSpace\28std::__2::unique_ptr>\29::DeviceSpace::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11594:GrFragmentProcessor::DeviceSpace\28std::__2::unique_ptr>\29::DeviceSpace::onMakeProgramImpl\28\29\20const 11595:GrFragmentProcessor::DeviceSpace\28std::__2::unique_ptr>\29::DeviceSpace::name\28\29\20const 11596:GrFragmentProcessor::DeviceSpace\28std::__2::unique_ptr>\29::DeviceSpace::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 11597:GrFragmentProcessor::DeviceSpace\28std::__2::unique_ptr>\29::DeviceSpace::clone\28\29\20const 11598:GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29::ComposeProcessor::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11599:GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29::ComposeProcessor::onMakeProgramImpl\28\29\20const 11600:GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29::ComposeProcessor::name\28\29\20const 11601:GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29::ComposeProcessor::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 11602:GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29::ComposeProcessor::clone\28\29\20const 11603:GrFixedClip::~GrFixedClip\28\29.1 11604:GrFixedClip::~GrFixedClip\28\29 11605:GrExternalTextureGenerator::onGenerateTexture\28GrRecordingContext*\2c\20SkImageInfo\20const&\2c\20skgpu::Mipmapped\2c\20GrImageTexGenPolicy\29 11606:GrEagerDynamicVertexAllocator::lock\28unsigned\20long\2c\20int\29 11607:GrDynamicAtlas::~GrDynamicAtlas\28\29.1 11608:GrDynamicAtlas::~GrDynamicAtlas\28\29 11609:GrDrawOp::usesStencil\28\29\20const 11610:GrDrawOp::usesMSAA\28\29\20const 11611:GrDrawOp::fixedFunctionFlags\28\29\20const 11612:GrDistanceFieldPathGeoProc::~GrDistanceFieldPathGeoProc\28\29.1 11613:GrDistanceFieldPathGeoProc::~GrDistanceFieldPathGeoProc\28\29 11614:GrDistanceFieldPathGeoProc::onTextureSampler\28int\29\20const 11615:GrDistanceFieldPathGeoProc::name\28\29\20const 11616:GrDistanceFieldPathGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11617:GrDistanceFieldPathGeoProc::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11618:GrDistanceFieldPathGeoProc::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 11619:GrDistanceFieldPathGeoProc::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11620:GrDistanceFieldLCDTextGeoProc::~GrDistanceFieldLCDTextGeoProc\28\29.1 11621:GrDistanceFieldLCDTextGeoProc::~GrDistanceFieldLCDTextGeoProc\28\29 11622:GrDistanceFieldLCDTextGeoProc::name\28\29\20const 11623:GrDistanceFieldLCDTextGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11624:GrDistanceFieldLCDTextGeoProc::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11625:GrDistanceFieldLCDTextGeoProc::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 11626:GrDistanceFieldLCDTextGeoProc::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11627:GrDistanceFieldA8TextGeoProc::~GrDistanceFieldA8TextGeoProc\28\29.1 11628:GrDistanceFieldA8TextGeoProc::~GrDistanceFieldA8TextGeoProc\28\29 11629:GrDistanceFieldA8TextGeoProc::name\28\29\20const 11630:GrDistanceFieldA8TextGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11631:GrDistanceFieldA8TextGeoProc::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11632:GrDistanceFieldA8TextGeoProc::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 11633:GrDistanceFieldA8TextGeoProc::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11634:GrDisableColorXPFactory::makeXferProcessor\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 11635:GrDisableColorXPFactory::analysisProperties\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\20const&\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 11636:GrDirectContext::~GrDirectContext\28\29.1 11637:GrDirectContext::releaseResourcesAndAbandonContext\28\29 11638:GrDirectContext::init\28\29 11639:GrDirectContext::abandoned\28\29 11640:GrDirectContext::abandonContext\28\29 11641:GrDeferredProxyUploader::~GrDeferredProxyUploader\28\29.1 11642:GrDeferredProxyUploader::~GrDeferredProxyUploader\28\29 11643:GrCpuVertexAllocator::~GrCpuVertexAllocator\28\29.1 11644:GrCpuVertexAllocator::~GrCpuVertexAllocator\28\29 11645:GrCpuVertexAllocator::unlock\28int\29 11646:GrCpuVertexAllocator::lock\28unsigned\20long\2c\20int\29 11647:GrCpuBuffer::unref\28\29\20const 11648:GrCoverageSetOpXPFactory::makeXferProcessor\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 11649:GrCoverageSetOpXPFactory::analysisProperties\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\20const&\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 11650:GrCopyRenderTask::~GrCopyRenderTask\28\29.1 11651:GrCopyRenderTask::onMakeSkippable\28\29 11652:GrCopyRenderTask::onMakeClosed\28GrRecordingContext*\2c\20SkIRect*\29 11653:GrCopyRenderTask::onExecute\28GrOpFlushState*\29 11654:GrCopyRenderTask::gatherProxyIntervals\28GrResourceAllocator*\29\20const 11655:GrConvexPolyEffect::onMakeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 11656:GrConvexPolyEffect::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11657:GrConvexPolyEffect::onMakeProgramImpl\28\29\20const 11658:GrConvexPolyEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11659:GrConvexPolyEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11660:GrConvexPolyEffect::name\28\29\20const 11661:GrConvexPolyEffect::clone\28\29\20const 11662:GrContext_Base::~GrContext_Base\28\29.1 11663:GrContextThreadSafeProxy::~GrContextThreadSafeProxy\28\29.1 11664:GrContextThreadSafeProxy::isValidCharacterizationForVulkan\28sk_sp\2c\20bool\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20bool\2c\20bool\29 11665:GrConicEffect::name\28\29\20const 11666:GrConicEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11667:GrConicEffect::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11668:GrConicEffect::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 11669:GrConicEffect::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11670:GrColorSpaceXformEffect::~GrColorSpaceXformEffect\28\29.1 11671:GrColorSpaceXformEffect::~GrColorSpaceXformEffect\28\29 11672:GrColorSpaceXformEffect::onMakeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 11673:GrColorSpaceXformEffect::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11674:GrColorSpaceXformEffect::onMakeProgramImpl\28\29\20const 11675:GrColorSpaceXformEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11676:GrColorSpaceXformEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11677:GrColorSpaceXformEffect::name\28\29\20const 11678:GrColorSpaceXformEffect::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 11679:GrColorSpaceXformEffect::clone\28\29\20const 11680:GrCaps::~GrCaps\28\29 11681:GrCaps::getDstCopyRestrictions\28GrRenderTargetProxy\20const*\2c\20GrColorType\29\20const 11682:GrBitmapTextGeoProc::~GrBitmapTextGeoProc\28\29.1 11683:GrBitmapTextGeoProc::~GrBitmapTextGeoProc\28\29 11684:GrBitmapTextGeoProc::onTextureSampler\28int\29\20const 11685:GrBitmapTextGeoProc::name\28\29\20const 11686:GrBitmapTextGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11687:GrBitmapTextGeoProc::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11688:GrBitmapTextGeoProc::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 11689:GrBitmapTextGeoProc::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11690:GrBicubicEffect::onMakeProgramImpl\28\29\20const 11691:GrBicubicEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11692:GrBicubicEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11693:GrBicubicEffect::name\28\29\20const 11694:GrBicubicEffect::clone\28\29\20const 11695:GrBicubicEffect::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 11696:GrBicubicEffect::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11697:GrAttachment::onGpuMemorySize\28\29\20const 11698:GrAttachment::getResourceType\28\29\20const 11699:GrAttachment::computeScratchKey\28skgpu::ScratchKey*\29\20const 11700:GrAtlasManager::~GrAtlasManager\28\29.1 11701:GrAtlasManager::preFlush\28GrOnFlushResourceProvider*\29 11702:GrAtlasManager::postFlush\28skgpu::AtlasToken\29 11703:GrAATriangulator::tessellate\28GrTriangulator::VertexList\20const&\2c\20GrTriangulator::Comparator\20const&\29 11704:GetRectsForRange\28skia::textlayout::Paragraph&\2c\20unsigned\20int\2c\20unsigned\20int\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\29 11705:GetRectsForPlaceholders\28skia::textlayout::Paragraph&\29 11706:GetLineMetrics\28skia::textlayout::Paragraph&\29 11707:GetLineMetricsAt\28skia::textlayout::Paragraph&\2c\20unsigned\20long\29 11708:GetGlyphInfoAt\28skia::textlayout::Paragraph&\2c\20unsigned\20long\29 11709:GetCoeffsFast 11710:GetCoeffsAlt 11711:GetClosestGlyphInfoAtCoordinate\28skia::textlayout::Paragraph&\2c\20float\2c\20float\29 11712:FontMgrRunIterator::~FontMgrRunIterator\28\29.1 11713:FontMgrRunIterator::~FontMgrRunIterator\28\29 11714:FontMgrRunIterator::currentFont\28\29\20const 11715:FontMgrRunIterator::consume\28\29 11716:ExtractGreen_C 11717:ExtractAlpha_C 11718:ExtractAlphaRows 11719:ExternalWebGLTexture::~ExternalWebGLTexture\28\29.1 11720:ExternalWebGLTexture::~ExternalWebGLTexture\28\29 11721:ExternalWebGLTexture::getBackendTexture\28\29 11722:ExternalWebGLTexture::dispose\28\29 11723:ExportAlphaRGBA4444 11724:ExportAlpha 11725:Equals\28SkPath\20const&\2c\20SkPath\20const&\29 11726:EmitYUV 11727:EmitSampledRGB 11728:EmitRescaledYUV 11729:EmitRescaledRGB 11730:EmitRescaledAlphaYUV 11731:EmitRescaledAlphaRGB 11732:EmitFancyRGB 11733:EmitAlphaYUV 11734:EmitAlphaRGBA4444 11735:EmitAlphaRGB 11736:EllipticalRRectOp::onPrepareDraws\28GrMeshDrawTarget*\29 11737:EllipticalRRectOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 11738:EllipticalRRectOp::name\28\29\20const 11739:EllipticalRRectOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 11740:EllipseOp::onPrepareDraws\28GrMeshDrawTarget*\29 11741:EllipseOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 11742:EllipseOp::name\28\29\20const 11743:EllipseOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 11744:EllipseGeometryProcessor::name\28\29\20const 11745:EllipseGeometryProcessor::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11746:EllipseGeometryProcessor::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11747:EllipseGeometryProcessor::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11748:Dual_Project 11749:DitherCombine8x8_C 11750:DispatchAlpha_C 11751:DispatchAlphaToGreen_C 11752:DisableColorXP::onGetBlendInfo\28skgpu::BlendInfo*\29\20const 11753:DisableColorXP::name\28\29\20const 11754:DisableColorXP::makeProgramImpl\28\29\20const::Impl::emitOutputsForBlendState\28GrXferProcessor::ProgramImpl::EmitArgs\20const&\29 11755:DisableColorXP::makeProgramImpl\28\29\20const 11756:Direct_Move_Y 11757:Direct_Move_X 11758:Direct_Move_Orig_Y 11759:Direct_Move_Orig_X 11760:Direct_Move_Orig 11761:Direct_Move 11762:DefaultGeoProc::name\28\29\20const 11763:DefaultGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11764:DefaultGeoProc::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11765:DefaultGeoProc::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 11766:DefaultGeoProc::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11767:DataFontLoader::loadSystemFonts\28SkFontScanner\20const*\2c\20skia_private::TArray\2c\20true>*\29\20const 11768:DataCacheElement_deleter\28void*\29 11769:DIEllipseOp::~DIEllipseOp\28\29.1 11770:DIEllipseOp::~DIEllipseOp\28\29 11771:DIEllipseOp::visitProxies\28std::__2::function\20const&\29\20const 11772:DIEllipseOp::onPrepareDraws\28GrMeshDrawTarget*\29 11773:DIEllipseOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 11774:DIEllipseOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 11775:DIEllipseOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 11776:DIEllipseOp::name\28\29\20const 11777:DIEllipseOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 11778:DIEllipseGeometryProcessor::name\28\29\20const 11779:DIEllipseGeometryProcessor::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11780:DIEllipseGeometryProcessor::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11781:DIEllipseGeometryProcessor::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11782:DC8uv_C 11783:DC8uvNoTop_C 11784:DC8uvNoTopLeft_C 11785:DC8uvNoLeft_C 11786:DC4_C 11787:DC16_C 11788:DC16NoTop_C 11789:DC16NoTopLeft_C 11790:DC16NoLeft_C 11791:CustomXPFactory::makeXferProcessor\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 11792:CustomXPFactory::analysisProperties\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\20const&\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 11793:CustomXP::xferBarrierType\28GrCaps\20const&\29\20const 11794:CustomXP::onGetBlendInfo\28skgpu::BlendInfo*\29\20const 11795:CustomXP::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11796:CustomXP::name\28\29\20const 11797:CustomXP::makeProgramImpl\28\29\20const::Impl::emitOutputsForBlendState\28GrXferProcessor::ProgramImpl::EmitArgs\20const&\29 11798:CustomXP::makeProgramImpl\28\29\20const 11799:CustomTeardown 11800:CustomSetup 11801:CustomPut 11802:Current_Ppem_Stretched 11803:Current_Ppem 11804:Cr_z_zcfree 11805:Cr_z_zcalloc 11806:CoverageSetOpXP::onGetBlendInfo\28skgpu::BlendInfo*\29\20const 11807:CoverageSetOpXP::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11808:CoverageSetOpXP::name\28\29\20const 11809:CoverageSetOpXP::makeProgramImpl\28\29\20const::Impl::emitOutputsForBlendState\28GrXferProcessor::ProgramImpl::EmitArgs\20const&\29 11810:CoverageSetOpXP::makeProgramImpl\28\29\20const 11811:CopyPath\28SkPath\20const&\29 11812:ConvertRGB24ToY_C 11813:ConvertBGR24ToY_C 11814:ConvertARGBToY_C 11815:ColorTableEffect::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11816:ColorTableEffect::onMakeProgramImpl\28\29\20const 11817:ColorTableEffect::name\28\29\20const 11818:ColorTableEffect::clone\28\29\20const 11819:CircularRRectOp::visitProxies\28std::__2::function\20const&\29\20const 11820:CircularRRectOp::onPrepareDraws\28GrMeshDrawTarget*\29 11821:CircularRRectOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 11822:CircularRRectOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 11823:CircularRRectOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 11824:CircularRRectOp::name\28\29\20const 11825:CircularRRectOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 11826:CircleOp::~CircleOp\28\29.1 11827:CircleOp::~CircleOp\28\29 11828:CircleOp::visitProxies\28std::__2::function\20const&\29\20const 11829:CircleOp::programInfo\28\29 11830:CircleOp::onPrepareDraws\28GrMeshDrawTarget*\29 11831:CircleOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 11832:CircleOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 11833:CircleOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 11834:CircleOp::name\28\29\20const 11835:CircleOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 11836:CircleGeometryProcessor::name\28\29\20const 11837:CircleGeometryProcessor::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11838:CircleGeometryProcessor::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11839:CircleGeometryProcessor::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11840:CanInterpolate\28SkPath\20const&\2c\20SkPath\20const&\29 11841:ButtCapper\28SkPath*\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPath*\29 11842:ButtCapDashedCircleOp::visitProxies\28std::__2::function\20const&\29\20const 11843:ButtCapDashedCircleOp::programInfo\28\29 11844:ButtCapDashedCircleOp::onPrepareDraws\28GrMeshDrawTarget*\29 11845:ButtCapDashedCircleOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 11846:ButtCapDashedCircleOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 11847:ButtCapDashedCircleOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 11848:ButtCapDashedCircleOp::name\28\29\20const 11849:ButtCapDashedCircleOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 11850:ButtCapDashedCircleGeometryProcessor::name\28\29\20const 11851:ButtCapDashedCircleGeometryProcessor::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11852:ButtCapDashedCircleGeometryProcessor::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11853:ButtCapDashedCircleGeometryProcessor::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11854:BluntJoiner\28SkPath*\2c\20SkPath*\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20float\2c\20bool\2c\20bool\29 11855:BlendFragmentProcessor::onMakeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 11856:BlendFragmentProcessor::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11857:BlendFragmentProcessor::onMakeProgramImpl\28\29\20const 11858:BlendFragmentProcessor::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11859:BlendFragmentProcessor::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11860:BlendFragmentProcessor::name\28\29\20const 11861:BlendFragmentProcessor::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 11862:BlendFragmentProcessor::clone\28\29\20const 11863:AutoCleanPng::infoCallback\28unsigned\20long\29 11864:AutoCleanPng::decodeBounds\28\29 11865:ApplyTrim\28SkPath&\2c\20float\2c\20float\2c\20bool\29 11866:ApplyTransform\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 11867:ApplyStroke\28SkPath&\2c\20StrokeOpts\29 11868:ApplySimplify\28SkPath&\29 11869:ApplyRewind\28SkPath&\29 11870:ApplyReset\28SkPath&\29 11871:ApplyRQuadTo\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\29 11872:ApplyRMoveTo\28SkPath&\2c\20float\2c\20float\29 11873:ApplyRLineTo\28SkPath&\2c\20float\2c\20float\29 11874:ApplyRCubicTo\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 11875:ApplyRConicTo\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 11876:ApplyRArcToArcSize\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20bool\2c\20bool\2c\20float\2c\20float\29 11877:ApplyQuadTo\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\29 11878:ApplyPathOp\28SkPath&\2c\20SkPath\20const&\2c\20SkPathOp\29 11879:ApplyMoveTo\28SkPath&\2c\20float\2c\20float\29 11880:ApplyLineTo\28SkPath&\2c\20float\2c\20float\29 11881:ApplyDash\28SkPath&\2c\20float\2c\20float\2c\20float\29 11882:ApplyCubicTo\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 11883:ApplyConicTo\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 11884:ApplyClose\28SkPath&\29 11885:ApplyArcToTangent\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 11886:ApplyArcToArcSize\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20bool\2c\20bool\2c\20float\2c\20float\29 11887:ApplyAlphaMultiply_C 11888:ApplyAlphaMultiply_16b_C 11889:ApplyAddPath\28SkPath&\2c\20SkPath\20const&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20bool\29 11890:AlphaReplace_C 11891:$_3::__invoke\28unsigned\20char*\2c\20unsigned\20char\2c\20int\2c\20unsigned\20char\29 11892:$_2::__invoke\28unsigned\20char*\2c\20unsigned\20char\2c\20int\29 11893:$_1::__invoke\28unsigned\20char*\2c\20unsigned\20char\2c\20int\2c\20unsigned\20char\29 11894:$_0::__invoke\28unsigned\20char*\2c\20unsigned\20char\2c\20int\29 ================================================ FILE: legacy/dist/canvaskit/chromium/canvaskit.js ================================================ var CanvasKitInit = (() => { var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; return ( function(moduleArg = {}) { var r=moduleArg,aa,ba;r.ready=new Promise((a,b)=>{aa=a;ba=b}); (function(a){a.Gd=a.Gd||[];a.Gd.push(function(){a.MakeSWCanvasSurface=function(b){var c=b,e="undefined"!==typeof OffscreenCanvas&&c instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&c instanceof HTMLCanvasElement||e||(c=document.getElementById(b),c)))throw"Canvas with id "+b+" was not found";if(b=a.MakeSurface(c.width,c.height))b.ge=c;return b};a.MakeCanvasSurface||(a.MakeCanvasSurface=a.MakeSWCanvasSurface);a.MakeSurface=function(b,c){var e={width:b,height:c,colorType:a.ColorType.RGBA_8888, alphaType:a.AlphaType.Unpremul,colorSpace:a.ColorSpace.SRGB},f=b*c*4,k=a._malloc(f);if(e=a.Surface._makeRasterDirect(e,k,4*b))e.ge=null,e.Oe=b,e.Le=c,e.Me=f,e.re=k,e.getCanvas().clear(a.TRANSPARENT);return e};a.MakeRasterDirectSurface=function(b,c,e){return a.Surface._makeRasterDirect(b,c.byteOffset,e)};a.Surface.prototype.flush=function(b){a.Dd(this.Cd);this._flush();if(this.ge){var c=new Uint8ClampedArray(a.HEAPU8.buffer,this.re,this.Me);c=new ImageData(c,this.Oe,this.Le);b?this.ge.getContext("2d").putImageData(c, 0,0,b[0],b[1],b[2]-b[0],b[3]-b[1]):this.ge.getContext("2d").putImageData(c,0,0)}};a.Surface.prototype.dispose=function(){this.re&&a._free(this.re);this.delete()};a.Dd=a.Dd||function(){};a.he=a.he||function(){return null}})})(r); (function(a){a.Gd=a.Gd||[];a.Gd.push(function(){function b(m,q,w){return m&&m.hasOwnProperty(q)?m[q]:w}function c(m){var q=da(ea);ea[q]=m;return q}function e(m){return m.naturalHeight||m.videoHeight||m.displayHeight||m.height}function f(m){return m.naturalWidth||m.videoWidth||m.displayWidth||m.width}function k(m,q,w,y){m.bindTexture(m.TEXTURE_2D,q);y||w.alphaType!==a.AlphaType.Premul||m.pixelStorei(m.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0);return q}function l(m,q,w){w||q.alphaType!==a.AlphaType.Premul|| m.pixelStorei(m.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);m.bindTexture(m.TEXTURE_2D,null)}a.GetWebGLContext=function(m,q){if(!m)throw"null canvas passed into makeWebGLContext";var w={alpha:b(q,"alpha",1),depth:b(q,"depth",1),stencil:b(q,"stencil",8),antialias:b(q,"antialias",0),premultipliedAlpha:b(q,"premultipliedAlpha",1),preserveDrawingBuffer:b(q,"preserveDrawingBuffer",0),preferLowPowerToHighPerformance:b(q,"preferLowPowerToHighPerformance",0),failIfMajorPerformanceCaveat:b(q,"failIfMajorPerformanceCaveat", 0),enableExtensionsByDefault:b(q,"enableExtensionsByDefault",1),explicitSwapControl:b(q,"explicitSwapControl",0),renderViaOffscreenBackBuffer:b(q,"renderViaOffscreenBackBuffer",0)};w.majorVersion=q&&q.majorVersion?q.majorVersion:"undefined"!==typeof WebGL2RenderingContext?2:1;if(w.explicitSwapControl)throw"explicitSwapControl is not supported";m=fa(m,w);if(!m)return 0;ha(m);x.Od.getExtension("WEBGL_debug_renderer_info");return m};a.deleteContext=function(m){x===ia[m]&&(x=null);"object"==typeof JSEvents&& JSEvents.sf(ia[m].Od.canvas);ia[m]&&ia[m].Od.canvas&&(ia[m].Od.canvas.Je=void 0);ia[m]=null};a._setTextureCleanup({deleteTexture:function(m,q){var w=ea[q];w&&ia[m].Od.deleteTexture(w);ea[q]=null}});a.MakeWebGLContext=function(m){if(!this.Dd(m))return null;var q=this._MakeGrContext();if(!q)return null;q.Cd=m;var w=q.delete.bind(q);q["delete"]=function(){a.Dd(this.Cd);w()}.bind(q);return x.te=q};a.MakeGrContext=a.MakeWebGLContext;a.GrDirectContext.prototype.getResourceCacheLimitBytes=function(){a.Dd(this.Cd); this._getResourceCacheLimitBytes()};a.GrDirectContext.prototype.getResourceCacheUsageBytes=function(){a.Dd(this.Cd);this._getResourceCacheUsageBytes()};a.GrDirectContext.prototype.releaseResourcesAndAbandonContext=function(){a.Dd(this.Cd);this._releaseResourcesAndAbandonContext()};a.GrDirectContext.prototype.setResourceCacheLimitBytes=function(m){a.Dd(this.Cd);this._setResourceCacheLimitBytes(m)};a.MakeOnScreenGLSurface=function(m,q,w,y,B,D){if(!this.Dd(m.Cd))return null;q=void 0===B||void 0===D? this._MakeOnScreenGLSurface(m,q,w,y):this._MakeOnScreenGLSurface(m,q,w,y,B,D);if(!q)return null;q.Cd=m.Cd;return q};a.MakeRenderTarget=function(){var m=arguments[0];if(!this.Dd(m.Cd))return null;if(3===arguments.length){var q=this._MakeRenderTargetWH(m,arguments[1],arguments[2]);if(!q)return null}else if(2===arguments.length){if(q=this._MakeRenderTargetII(m,arguments[1]),!q)return null}else return null;q.Cd=m.Cd;return q};a.MakeWebGLCanvasSurface=function(m,q,w){q=q||null;var y=m,B="undefined"!== typeof OffscreenCanvas&&y instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&y instanceof HTMLCanvasElement||B||(y=document.getElementById(m),y)))throw"Canvas with id "+m+" was not found";m=this.GetWebGLContext(y,w);if(!m||0>m)throw"failed to create webgl context: err "+m;m=this.MakeWebGLContext(m);q=this.MakeOnScreenGLSurface(m,y.width,y.height,q);return q?q:(q=y.cloneNode(!0),y.parentNode.replaceChild(q,y),q.classList.add("ck-replaced"),a.MakeSWCanvasSurface(q))};a.MakeCanvasSurface= a.MakeWebGLCanvasSurface;a.Surface.prototype.makeImageFromTexture=function(m,q){a.Dd(this.Cd);m=c(m);if(q=this._makeImageFromTexture(this.Cd,m,q))q.be=m;return q};a.Surface.prototype.makeImageFromTextureSource=function(m,q,w){q||(q={height:e(m),width:f(m),colorType:a.ColorType.RGBA_8888,alphaType:w?a.AlphaType.Premul:a.AlphaType.Unpremul});q.colorSpace||(q.colorSpace=a.ColorSpace.SRGB);a.Dd(this.Cd);var y=x.Od;w=k(y,y.createTexture(),q,w);2===x.version?y.texImage2D(y.TEXTURE_2D,0,y.RGBA,q.width,q.height, 0,y.RGBA,y.UNSIGNED_BYTE,m):y.texImage2D(y.TEXTURE_2D,0,y.RGBA,y.RGBA,y.UNSIGNED_BYTE,m);l(y,q);this._resetContext();return this.makeImageFromTexture(w,q)};a.Surface.prototype.updateTextureFromSource=function(m,q,w){if(m.be){a.Dd(this.Cd);var y=m.getImageInfo(),B=x.Od,D=k(B,ea[m.be],y,w);2===x.version?B.texImage2D(B.TEXTURE_2D,0,B.RGBA,f(q),e(q),0,B.RGBA,B.UNSIGNED_BYTE,q):B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,q);l(B,y,w);this._resetContext();ea[m.be]=null;m.be=c(D);y.colorSpace= m.getColorSpace();q=this._makeImageFromTexture(this.Cd,m.be,y);w=m.jd.Ed;B=m.jd.Jd;m.jd.Ed=q.jd.Ed;m.jd.Jd=q.jd.Jd;q.jd.Ed=w;q.jd.Jd=B;q.delete();y.colorSpace.delete()}};a.MakeLazyImageFromTextureSource=function(m,q,w){q||(q={height:e(m),width:f(m),colorType:a.ColorType.RGBA_8888,alphaType:w?a.AlphaType.Premul:a.AlphaType.Unpremul});q.colorSpace||(q.colorSpace=a.ColorSpace.SRGB);var y={makeTexture:function(){var B=x,D=B.Od,u=k(D,D.createTexture(),q,w);2===B.version?D.texImage2D(D.TEXTURE_2D,0,D.RGBA, q.width,q.height,0,D.RGBA,D.UNSIGNED_BYTE,m):D.texImage2D(D.TEXTURE_2D,0,D.RGBA,D.RGBA,D.UNSIGNED_BYTE,m);l(D,q,w);return c(u)},freeSrc:function(){}};"VideoFrame"===m.constructor.name&&(y.freeSrc=function(){m.close()});return a.Image._makeFromGenerator(q,y)};a.Dd=function(m){return m?ha(m):!1};a.he=function(){return x&&x.te&&!x.te.isDeleted()?x.te:null}})})(r); (function(a){function b(g){return(f(255*g[3])<<24|f(255*g[0])<<16|f(255*g[1])<<8|f(255*g[2])<<0)>>>0}function c(g){if(g&&g._ck)return g;if(g instanceof Float32Array){for(var d=Math.floor(g.length/4),h=new Uint32Array(d),n=0;nz;z++)a.HEAPF32[t+n]=g[v][z],n++;g=h}else g=M;d.Ld=g}else throw"Invalid argument to copyFlexibleColorArray, Not a color array "+typeof g;return d}function q(g){if(!g)return M;var d=T.toTypedArray();if(g.length){if(6===g.length||9===g.length)return l(g,"HEAPF32",H),6===g.length&&a.HEAPF32.set(fd,6+H/4),H;if(16===g.length)return d[0]=g[0],d[1]=g[1],d[2]=g[3],d[3]=g[4],d[4]=g[5],d[5]=g[7],d[6]=g[12],d[7]=g[13],d[8]=g[15],H;throw"invalid matrix size"; }if(void 0===g.m11)throw"invalid matrix argument";d[0]=g.m11;d[1]=g.m21;d[2]=g.m41;d[3]=g.m12;d[4]=g.m22;d[5]=g.m42;d[6]=g.m14;d[7]=g.m24;d[8]=g.m44;return H}function w(g){if(!g)return M;var d=Y.toTypedArray();if(g.length){if(16!==g.length&&6!==g.length&&9!==g.length)throw"invalid matrix size";if(16===g.length)return l(g,"HEAPF32",ca);d.fill(0);d[0]=g[0];d[1]=g[1];d[3]=g[2];d[4]=g[3];d[5]=g[4];d[7]=g[5];d[10]=1;d[12]=g[6];d[13]=g[7];d[15]=g[8];6===g.length&&(d[12]=0,d[13]=0,d[15]=1);return ca}if(void 0=== g.m11)throw"invalid matrix argument";d[0]=g.m11;d[1]=g.m21;d[2]=g.m31;d[3]=g.m41;d[4]=g.m12;d[5]=g.m22;d[6]=g.m32;d[7]=g.m42;d[8]=g.m13;d[9]=g.m23;d[10]=g.m33;d[11]=g.m43;d[12]=g.m14;d[13]=g.m24;d[14]=g.m34;d[15]=g.m44;return ca}function y(g,d){return l(g,"HEAPF32",d||va)}function B(g,d,h,n){var t=Ma.toTypedArray();t[0]=g;t[1]=d;t[2]=h;t[3]=n;return va}function D(g){for(var d=new Float32Array(4),h=0;4>h;h++)d[h]=a.HEAPF32[g/4+h];return d}function u(g,d){return l(g,"HEAPF32",d||X)}function F(g,d){return l(g, "HEAPF32",d||Eb)}a.Color=function(g,d,h,n){void 0===n&&(n=1);return a.Color4f(f(g)/255,f(d)/255,f(h)/255,n)};a.ColorAsInt=function(g,d,h,n){void 0===n&&(n=255);return(f(n)<<24|f(g)<<16|f(d)<<8|f(h)<<0&268435455)>>>0};a.Color4f=function(g,d,h,n){void 0===n&&(n=1);return Float32Array.of(g,d,h,n)};Object.defineProperty(a,"TRANSPARENT",{get:function(){return a.Color4f(0,0,0,0)}});Object.defineProperty(a,"BLACK",{get:function(){return a.Color4f(0,0,0,1)}});Object.defineProperty(a,"WHITE",{get:function(){return a.Color4f(1, 1,1,1)}});Object.defineProperty(a,"RED",{get:function(){return a.Color4f(1,0,0,1)}});Object.defineProperty(a,"GREEN",{get:function(){return a.Color4f(0,1,0,1)}});Object.defineProperty(a,"BLUE",{get:function(){return a.Color4f(0,0,1,1)}});Object.defineProperty(a,"YELLOW",{get:function(){return a.Color4f(1,1,0,1)}});Object.defineProperty(a,"CYAN",{get:function(){return a.Color4f(0,1,1,1)}});Object.defineProperty(a,"MAGENTA",{get:function(){return a.Color4f(1,0,1,1)}});a.getColorComponents=function(g){return[Math.floor(255* g[0]),Math.floor(255*g[1]),Math.floor(255*g[2]),g[3]]};a.parseColorString=function(g,d){g=g.toLowerCase();if(g.startsWith("#")){d=255;switch(g.length){case 9:d=parseInt(g.slice(7,9),16);case 7:var h=parseInt(g.slice(1,3),16);var n=parseInt(g.slice(3,5),16);var t=parseInt(g.slice(5,7),16);break;case 5:d=17*parseInt(g.slice(4,5),16);case 4:h=17*parseInt(g.slice(1,2),16),n=17*parseInt(g.slice(2,3),16),t=17*parseInt(g.slice(3,4),16)}return a.Color(h,n,t,d/255)}return g.startsWith("rgba")?(g=g.slice(5, -1),g=g.split(","),a.Color(+g[0],+g[1],+g[2],e(g[3]))):g.startsWith("rgb")?(g=g.slice(4,-1),g=g.split(","),a.Color(+g[0],+g[1],+g[2],e(g[3]))):g.startsWith("gray(")||g.startsWith("hsl")||!d||(g=d[g],void 0===g)?a.BLACK:g};a.multiplyByAlpha=function(g,d){g=g.slice();g[3]=Math.max(0,Math.min(g[3]*d,1));return g};a.Malloc=function(g,d){var h=a._malloc(d*g.BYTES_PER_ELEMENT);return{_ck:!0,length:d,byteOffset:h,Wd:null,subarray:function(n,t){n=this.toTypedArray().subarray(n,t);n._ck=!0;return n},toTypedArray:function(){if(this.Wd&& this.Wd.length)return this.Wd;this.Wd=new g(a.HEAPU8.buffer,h,d);this.Wd._ck=!0;return this.Wd}}};a.Free=function(g){a._free(g.byteOffset);g.byteOffset=M;g.toTypedArray=null;g.Wd=null};var H=M,T,ca=M,Y,va=M,Ma,na,X=M,fc,Ba=M,gc,Fb=M,hc,Gb=M,hb,Sa=M,ic,Eb=M,jc,kc=M,fd=Float32Array.of(0,0,1),M=0;a.onRuntimeInitialized=function(){function g(d,h,n,t,v,z,E){z||(z=4*t.width,t.colorType===a.ColorType.RGBA_F16?z*=2:t.colorType===a.ColorType.RGBA_F32&&(z*=4));var J=z*t.height;var I=v?v.byteOffset:a._malloc(J); if(E?!d._readPixels(t,I,z,h,n,E):!d._readPixels(t,I,z,h,n))return v||a._free(I),null;if(v)return v.toTypedArray();switch(t.colorType){case a.ColorType.RGBA_8888:case a.ColorType.RGBA_F16:d=(new Uint8Array(a.HEAPU8.buffer,I,J)).slice();break;case a.ColorType.RGBA_F32:d=(new Float32Array(a.HEAPU8.buffer,I,J)).slice();break;default:return null}a._free(I);return d}Ma=a.Malloc(Float32Array,4);va=Ma.byteOffset;Y=a.Malloc(Float32Array,16);ca=Y.byteOffset;T=a.Malloc(Float32Array,9);H=T.byteOffset;ic=a.Malloc(Float32Array, 12);Eb=ic.byteOffset;jc=a.Malloc(Float32Array,12);kc=jc.byteOffset;na=a.Malloc(Float32Array,4);X=na.byteOffset;fc=a.Malloc(Float32Array,4);Ba=fc.byteOffset;gc=a.Malloc(Float32Array,3);Fb=gc.byteOffset;hc=a.Malloc(Float32Array,3);Gb=hc.byteOffset;hb=a.Malloc(Int32Array,4);Sa=hb.byteOffset;a.ColorSpace.SRGB=a.ColorSpace._MakeSRGB();a.ColorSpace.DISPLAY_P3=a.ColorSpace._MakeDisplayP3();a.ColorSpace.ADOBE_RGB=a.ColorSpace._MakeAdobeRGB();a.GlyphRunFlags={IsWhiteSpace:a._GlyphRunFlags_isWhiteSpace};a.Path.MakeFromCmds= function(d){var h=l(d,"HEAPF32"),n=a.Path._MakeFromCmds(h,d.length);k(h,d);return n};a.Path.MakeFromVerbsPointsWeights=function(d,h,n){var t=l(d,"HEAPU8"),v=l(h,"HEAPF32"),z=l(n,"HEAPF32"),E=a.Path._MakeFromVerbsPointsWeights(t,d.length,v,h.length,z,n&&n.length||0);k(t,d);k(v,h);k(z,n);return E};a.Path.prototype.addArc=function(d,h,n){d=u(d);this._addArc(d,h,n);return this};a.Path.prototype.addCircle=function(d,h,n,t){this._addCircle(d,h,n,!!t);return this};a.Path.prototype.addOval=function(d,h,n){void 0=== n&&(n=1);d=u(d);this._addOval(d,!!h,n);return this};a.Path.prototype.addPath=function(){var d=Array.prototype.slice.call(arguments),h=d[0],n=!1;"boolean"===typeof d[d.length-1]&&(n=d.pop());if(1===d.length)this._addPath(h,1,0,0,0,1,0,0,0,1,n);else if(2===d.length)d=d[1],this._addPath(h,d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1,n);else if(7===d.length||10===d.length)this._addPath(h,d[1],d[2],d[3],d[4],d[5],d[6],d[7]||0,d[8]||0,d[9]||1,n);else return null;return this};a.Path.prototype.addPoly= function(d,h){var n=l(d,"HEAPF32");this._addPoly(n,d.length/2,h);k(n,d);return this};a.Path.prototype.addRect=function(d,h){d=u(d);this._addRect(d,!!h);return this};a.Path.prototype.addRRect=function(d,h){d=F(d);this._addRRect(d,!!h);return this};a.Path.prototype.addVerbsPointsWeights=function(d,h,n){var t=l(d,"HEAPU8"),v=l(h,"HEAPF32"),z=l(n,"HEAPF32");this._addVerbsPointsWeights(t,d.length,v,h.length,z,n&&n.length||0);k(t,d);k(v,h);k(z,n)};a.Path.prototype.arc=function(d,h,n,t,v,z){d=a.LTRBRect(d- n,h-n,d+n,h+n);v=(v-t)/Math.PI*180-360*!!z;z=new a.Path;z.addArc(d,t/Math.PI*180,v);this.addPath(z,!0);z.delete();return this};a.Path.prototype.arcToOval=function(d,h,n,t){d=u(d);this._arcToOval(d,h,n,t);return this};a.Path.prototype.arcToRotated=function(d,h,n,t,v,z,E){this._arcToRotated(d,h,n,!!t,!!v,z,E);return this};a.Path.prototype.arcToTangent=function(d,h,n,t,v){this._arcToTangent(d,h,n,t,v);return this};a.Path.prototype.close=function(){this._close();return this};a.Path.prototype.conicTo= function(d,h,n,t,v){this._conicTo(d,h,n,t,v);return this};a.Path.prototype.computeTightBounds=function(d){this._computeTightBounds(X);var h=na.toTypedArray();return d?(d.set(h),d):h.slice()};a.Path.prototype.cubicTo=function(d,h,n,t,v,z){this._cubicTo(d,h,n,t,v,z);return this};a.Path.prototype.dash=function(d,h,n){return this._dash(d,h,n)?this:null};a.Path.prototype.getBounds=function(d){this._getBounds(X);var h=na.toTypedArray();return d?(d.set(h),d):h.slice()};a.Path.prototype.lineTo=function(d, h){this._lineTo(d,h);return this};a.Path.prototype.moveTo=function(d,h){this._moveTo(d,h);return this};a.Path.prototype.offset=function(d,h){this._transform(1,0,d,0,1,h,0,0,1);return this};a.Path.prototype.quadTo=function(d,h,n,t){this._quadTo(d,h,n,t);return this};a.Path.prototype.rArcTo=function(d,h,n,t,v,z,E){this._rArcTo(d,h,n,t,v,z,E);return this};a.Path.prototype.rConicTo=function(d,h,n,t,v){this._rConicTo(d,h,n,t,v);return this};a.Path.prototype.rCubicTo=function(d,h,n,t,v,z){this._rCubicTo(d, h,n,t,v,z);return this};a.Path.prototype.rLineTo=function(d,h){this._rLineTo(d,h);return this};a.Path.prototype.rMoveTo=function(d,h){this._rMoveTo(d,h);return this};a.Path.prototype.rQuadTo=function(d,h,n,t){this._rQuadTo(d,h,n,t);return this};a.Path.prototype.stroke=function(d){d=d||{};d.width=d.width||1;d.miter_limit=d.miter_limit||4;d.cap=d.cap||a.StrokeCap.Butt;d.join=d.join||a.StrokeJoin.Miter;d.precision=d.precision||1;return this._stroke(d)?this:null};a.Path.prototype.transform=function(){if(1=== arguments.length){var d=arguments[0];this._transform(d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1)}else if(6===arguments.length||9===arguments.length)d=arguments,this._transform(d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1);else throw"transform expected to take 1 or 9 arguments. Got "+arguments.length;return this};a.Path.prototype.trim=function(d,h,n){return this._trim(d,h,!!n)?this:null};a.Image.prototype.encodeToBytes=function(d,h){var n=a.he();d=d||a.ImageFormat.PNG;h=h||100; return n?this._encodeToBytes(d,h,n):this._encodeToBytes(d,h)};a.Image.prototype.makeShaderCubic=function(d,h,n,t,v){v=q(v);return this._makeShaderCubic(d,h,n,t,v)};a.Image.prototype.makeShaderOptions=function(d,h,n,t,v){v=q(v);return this._makeShaderOptions(d,h,n,t,v)};a.Image.prototype.readPixels=function(d,h,n,t,v){var z=a.he();return g(this,d,h,n,t,v,z)};a.Canvas.prototype.clear=function(d){a.Dd(this.Cd);d=y(d);this._clear(d)};a.Canvas.prototype.clipRRect=function(d,h,n){a.Dd(this.Cd);d=F(d);this._clipRRect(d, h,n)};a.Canvas.prototype.clipRect=function(d,h,n){a.Dd(this.Cd);d=u(d);this._clipRect(d,h,n)};a.Canvas.prototype.concat=function(d){a.Dd(this.Cd);d=w(d);this._concat(d)};a.Canvas.prototype.drawArc=function(d,h,n,t,v){a.Dd(this.Cd);d=u(d);this._drawArc(d,h,n,t,v)};a.Canvas.prototype.drawAtlas=function(d,h,n,t,v,z,E){if(d&&t&&h&&n&&h.length===n.length){a.Dd(this.Cd);v||(v=a.BlendMode.SrcOver);var J=l(h,"HEAPF32"),I=l(n,"HEAPF32"),U=n.length/4,V=l(c(z),"HEAPU32");if(E&&"B"in E&&"C"in E)this._drawAtlasCubic(d, I,J,V,U,v,E.B,E.C,t);else{let p=a.FilterMode.Linear,A=a.MipmapMode.None;E&&(p=E.filter,"mipmap"in E&&(A=E.mipmap));this._drawAtlasOptions(d,I,J,V,U,v,p,A,t)}k(J,h);k(I,n);k(V,z)}};a.Canvas.prototype.drawCircle=function(d,h,n,t){a.Dd(this.Cd);this._drawCircle(d,h,n,t)};a.Canvas.prototype.drawColor=function(d,h){a.Dd(this.Cd);d=y(d);void 0!==h?this._drawColor(d,h):this._drawColor(d)};a.Canvas.prototype.drawColorInt=function(d,h){a.Dd(this.Cd);this._drawColorInt(d,h||a.BlendMode.SrcOver)};a.Canvas.prototype.drawColorComponents= function(d,h,n,t,v){a.Dd(this.Cd);d=B(d,h,n,t);void 0!==v?this._drawColor(d,v):this._drawColor(d)};a.Canvas.prototype.drawDRRect=function(d,h,n){a.Dd(this.Cd);d=F(d,Eb);h=F(h,kc);this._drawDRRect(d,h,n)};a.Canvas.prototype.drawImage=function(d,h,n,t){a.Dd(this.Cd);this._drawImage(d,h,n,t||null)};a.Canvas.prototype.drawImageCubic=function(d,h,n,t,v,z){a.Dd(this.Cd);this._drawImageCubic(d,h,n,t,v,z||null)};a.Canvas.prototype.drawImageOptions=function(d,h,n,t,v,z){a.Dd(this.Cd);this._drawImageOptions(d, h,n,t,v,z||null)};a.Canvas.prototype.drawImageNine=function(d,h,n,t,v){a.Dd(this.Cd);h=l(h,"HEAP32",Sa);n=u(n);this._drawImageNine(d,h,n,t,v||null)};a.Canvas.prototype.drawImageRect=function(d,h,n,t,v){a.Dd(this.Cd);u(h,X);u(n,Ba);this._drawImageRect(d,X,Ba,t,!!v)};a.Canvas.prototype.drawImageRectCubic=function(d,h,n,t,v,z){a.Dd(this.Cd);u(h,X);u(n,Ba);this._drawImageRectCubic(d,X,Ba,t,v,z||null)};a.Canvas.prototype.drawImageRectOptions=function(d,h,n,t,v,z){a.Dd(this.Cd);u(h,X);u(n,Ba);this._drawImageRectOptions(d, X,Ba,t,v,z||null)};a.Canvas.prototype.drawLine=function(d,h,n,t,v){a.Dd(this.Cd);this._drawLine(d,h,n,t,v)};a.Canvas.prototype.drawOval=function(d,h){a.Dd(this.Cd);d=u(d);this._drawOval(d,h)};a.Canvas.prototype.drawPaint=function(d){a.Dd(this.Cd);this._drawPaint(d)};a.Canvas.prototype.drawParagraph=function(d,h,n){a.Dd(this.Cd);this._drawParagraph(d,h,n)};a.Canvas.prototype.drawPatch=function(d,h,n,t,v){if(24>d.length)throw"Need 12 cubic points";if(h&&4>h.length)throw"Need 4 colors";if(n&&8>n.length)throw"Need 4 shader coordinates"; a.Dd(this.Cd);const z=l(d,"HEAPF32"),E=h?l(c(h),"HEAPU32"):M,J=n?l(n,"HEAPF32"):M;t||(t=a.BlendMode.Modulate);this._drawPatch(z,E,J,t,v);k(J,n);k(E,h);k(z,d)};a.Canvas.prototype.drawPath=function(d,h){a.Dd(this.Cd);this._drawPath(d,h)};a.Canvas.prototype.drawPicture=function(d){a.Dd(this.Cd);this._drawPicture(d)};a.Canvas.prototype.drawPoints=function(d,h,n){a.Dd(this.Cd);var t=l(h,"HEAPF32");this._drawPoints(d,t,h.length/2,n);k(t,h)};a.Canvas.prototype.drawRRect=function(d,h){a.Dd(this.Cd);d=F(d); this._drawRRect(d,h)};a.Canvas.prototype.drawRect=function(d,h){a.Dd(this.Cd);d=u(d);this._drawRect(d,h)};a.Canvas.prototype.drawRect4f=function(d,h,n,t,v){a.Dd(this.Cd);this._drawRect4f(d,h,n,t,v)};a.Canvas.prototype.drawShadow=function(d,h,n,t,v,z,E){a.Dd(this.Cd);var J=l(v,"HEAPF32"),I=l(z,"HEAPF32");h=l(h,"HEAPF32",Fb);n=l(n,"HEAPF32",Gb);this._drawShadow(d,h,n,t,J,I,E);k(J,v);k(I,z)};a.getShadowLocalBounds=function(d,h,n,t,v,z,E){d=q(d);n=l(n,"HEAPF32",Fb);t=l(t,"HEAPF32",Gb);if(!this._getShadowLocalBounds(d, h,n,t,v,z,X))return null;h=na.toTypedArray();return E?(E.set(h),E):h.slice()};a.Canvas.prototype.drawTextBlob=function(d,h,n,t){a.Dd(this.Cd);this._drawTextBlob(d,h,n,t)};a.Canvas.prototype.drawVertices=function(d,h,n){a.Dd(this.Cd);this._drawVertices(d,h,n)};a.Canvas.prototype.getDeviceClipBounds=function(d){this._getDeviceClipBounds(Sa);var h=hb.toTypedArray();d?d.set(h):d=h.slice();return d};a.Canvas.prototype.getLocalToDevice=function(){this._getLocalToDevice(ca);for(var d=ca,h=Array(16),n=0;16> n;n++)h[n]=a.HEAPF32[d/4+n];return h};a.Canvas.prototype.getTotalMatrix=function(){this._getTotalMatrix(H);for(var d=Array(9),h=0;9>h;h++)d[h]=a.HEAPF32[H/4+h];return d};a.Canvas.prototype.makeSurface=function(d){d=this._makeSurface(d);d.Cd=this.Cd;return d};a.Canvas.prototype.readPixels=function(d,h,n,t,v){a.Dd(this.Cd);return g(this,d,h,n,t,v)};a.Canvas.prototype.saveLayer=function(d,h,n,t){h=u(h);return this._saveLayer(d||null,h,n||null,t||0)};a.Canvas.prototype.writePixels=function(d,h,n,t,v, z,E,J){if(d.byteLength%(h*n))throw"pixels length must be a multiple of the srcWidth * srcHeight";a.Dd(this.Cd);var I=d.byteLength/(h*n);z=z||a.AlphaType.Unpremul;E=E||a.ColorType.RGBA_8888;J=J||a.ColorSpace.SRGB;var U=I*h;I=l(d,"HEAPU8");h=this._writePixels({width:h,height:n,colorType:E,alphaType:z,colorSpace:J},I,U,t,v);k(I,d);return h};a.ColorFilter.MakeBlend=function(d,h,n){d=y(d);n=n||a.ColorSpace.SRGB;return a.ColorFilter._MakeBlend(d,h,n)};a.ColorFilter.MakeMatrix=function(d){if(!d||20!==d.length)throw"invalid color matrix"; var h=l(d,"HEAPF32"),n=a.ColorFilter._makeMatrix(h);k(h,d);return n};a.ContourMeasure.prototype.getPosTan=function(d,h){this._getPosTan(d,X);d=na.toTypedArray();return h?(h.set(d),h):d.slice()};a.ImageFilter.prototype.getOutputBounds=function(d,h,n){d=u(d,X);h=q(h);this._getOutputBounds(d,h,Sa);h=hb.toTypedArray();return n?(n.set(h),n):h.slice()};a.ImageFilter.MakeDropShadow=function(d,h,n,t,v,z){v=y(v,va);return a.ImageFilter._MakeDropShadow(d,h,n,t,v,z)};a.ImageFilter.MakeDropShadowOnly=function(d, h,n,t,v,z){v=y(v,va);return a.ImageFilter._MakeDropShadowOnly(d,h,n,t,v,z)};a.ImageFilter.MakeImage=function(d,h,n,t){n=u(n,X);t=u(t,Ba);if("B"in h&&"C"in h)return a.ImageFilter._MakeImageCubic(d,h.B,h.C,n,t);const v=h.filter;let z=a.MipmapMode.None;"mipmap"in h&&(z=h.mipmap);return a.ImageFilter._MakeImageOptions(d,v,z,n,t)};a.ImageFilter.MakeMatrixTransform=function(d,h,n){d=q(d);if("B"in h&&"C"in h)return a.ImageFilter._MakeMatrixTransformCubic(d,h.B,h.C,n);const t=h.filter;let v=a.MipmapMode.None; "mipmap"in h&&(v=h.mipmap);return a.ImageFilter._MakeMatrixTransformOptions(d,t,v,n)};a.Paint.prototype.getColor=function(){this._getColor(va);return D(va)};a.Paint.prototype.setColor=function(d,h){h=h||null;d=y(d);this._setColor(d,h)};a.Paint.prototype.setColorComponents=function(d,h,n,t,v){v=v||null;d=B(d,h,n,t);this._setColor(d,v)};a.Path.prototype.getPoint=function(d,h){this._getPoint(d,X);d=na.toTypedArray();return h?(h[0]=d[0],h[1]=d[1],h):d.slice(0,2)};a.Picture.prototype.makeShader=function(d, h,n,t,v){t=q(t);v=u(v);return this._makeShader(d,h,n,t,v)};a.Picture.prototype.cullRect=function(d){this._cullRect(X);var h=na.toTypedArray();return d?(d.set(h),d):h.slice()};a.PictureRecorder.prototype.beginRecording=function(d,h){d=u(d);return this._beginRecording(d,!!h)};a.Surface.prototype.getCanvas=function(){var d=this._getCanvas();d.Cd=this.Cd;return d};a.Surface.prototype.makeImageSnapshot=function(d){a.Dd(this.Cd);d=l(d,"HEAP32",Sa);return this._makeImageSnapshot(d)};a.Surface.prototype.makeSurface= function(d){a.Dd(this.Cd);d=this._makeSurface(d);d.Cd=this.Cd;return d};a.Surface.prototype.Ne=function(d,h){this.ae||(this.ae=this.getCanvas());return requestAnimationFrame(function(){a.Dd(this.Cd);d(this.ae);this.flush(h)}.bind(this))};a.Surface.prototype.requestAnimationFrame||(a.Surface.prototype.requestAnimationFrame=a.Surface.prototype.Ne);a.Surface.prototype.Ke=function(d,h){this.ae||(this.ae=this.getCanvas());requestAnimationFrame(function(){a.Dd(this.Cd);d(this.ae);this.flush(h);this.dispose()}.bind(this))}; a.Surface.prototype.drawOnce||(a.Surface.prototype.drawOnce=a.Surface.prototype.Ke);a.PathEffect.MakeDash=function(d,h){h||(h=0);if(!d.length||1===d.length%2)throw"Intervals array must have even length";var n=l(d,"HEAPF32");h=a.PathEffect._MakeDash(n,d.length,h);k(n,d);return h};a.PathEffect.MakeLine2D=function(d,h){h=q(h);return a.PathEffect._MakeLine2D(d,h)};a.PathEffect.MakePath2D=function(d,h){d=q(d);return a.PathEffect._MakePath2D(d,h)};a.Shader.MakeColor=function(d,h){h=h||null;d=y(d);return a.Shader._MakeColor(d, h)};a.Shader.Blend=a.Shader.MakeBlend;a.Shader.Color=a.Shader.MakeColor;a.Shader.MakeLinearGradient=function(d,h,n,t,v,z,E,J){J=J||null;var I=m(n),U=l(t,"HEAPF32");E=E||0;z=q(z);var V=na.toTypedArray();V.set(d);V.set(h,2);d=a.Shader._MakeLinearGradient(X,I.Ld,I.colorType,U,I.count,v,E,z,J);k(I.Ld,n);t&&k(U,t);return d};a.Shader.MakeRadialGradient=function(d,h,n,t,v,z,E,J){J=J||null;var I=m(n),U=l(t,"HEAPF32");E=E||0;z=q(z);d=a.Shader._MakeRadialGradient(d[0],d[1],h,I.Ld,I.colorType,U,I.count,v,E, z,J);k(I.Ld,n);t&&k(U,t);return d};a.Shader.MakeSweepGradient=function(d,h,n,t,v,z,E,J,I,U){U=U||null;var V=m(n),p=l(t,"HEAPF32");E=E||0;J=J||0;I=I||360;z=q(z);d=a.Shader._MakeSweepGradient(d,h,V.Ld,V.colorType,p,V.count,v,J,I,E,z,U);k(V.Ld,n);t&&k(p,t);return d};a.Shader.MakeTwoPointConicalGradient=function(d,h,n,t,v,z,E,J,I,U){U=U||null;var V=m(v),p=l(z,"HEAPF32");I=I||0;J=q(J);var A=na.toTypedArray();A.set(d);A.set(n,2);d=a.Shader._MakeTwoPointConicalGradient(X,h,t,V.Ld,V.colorType,p,V.count,E, I,J,U);k(V.Ld,v);z&&k(p,z);return d};a.Vertices.prototype.bounds=function(d){this._bounds(X);var h=na.toTypedArray();return d?(d.set(h),d):h.slice()};a.Gd&&a.Gd.forEach(function(d){d()})};a.computeTonalColors=function(g){var d=l(g.ambient,"HEAPF32"),h=l(g.spot,"HEAPF32");this._computeTonalColors(d,h);var n={ambient:D(d),spot:D(h)};k(d,g.ambient);k(h,g.spot);return n};a.LTRBRect=function(g,d,h,n){return Float32Array.of(g,d,h,n)};a.XYWHRect=function(g,d,h,n){return Float32Array.of(g,d,g+h,d+n)};a.LTRBiRect= function(g,d,h,n){return Int32Array.of(g,d,h,n)};a.XYWHiRect=function(g,d,h,n){return Int32Array.of(g,d,g+h,d+n)};a.RRectXY=function(g,d,h){return Float32Array.of(g[0],g[1],g[2],g[3],d,h,d,h,d,h,d,h)};a.MakeAnimatedImageFromEncoded=function(g){g=new Uint8Array(g);var d=a._malloc(g.byteLength);a.HEAPU8.set(g,d);return(g=a._decodeAnimatedImage(d,g.byteLength))?g:null};a.MakeImageFromEncoded=function(g){g=new Uint8Array(g);var d=a._malloc(g.byteLength);a.HEAPU8.set(g,d);return(g=a._decodeImage(d,g.byteLength))? g:null};var Ta=null;a.MakeImageFromCanvasImageSource=function(g){var d=g.width,h=g.height;Ta||(Ta=document.createElement("canvas"));Ta.width=d;Ta.height=h;var n=Ta.getContext("2d",{willReadFrequently:!0});n.drawImage(g,0,0);g=n.getImageData(0,0,d,h);return a.MakeImage({width:d,height:h,alphaType:a.AlphaType.Unpremul,colorType:a.ColorType.RGBA_8888,colorSpace:a.ColorSpace.SRGB},g.data,4*d)};a.MakeImage=function(g,d,h){var n=a._malloc(d.length);a.HEAPU8.set(d,n);return a._MakeImage(g,n,d.length,h)}; a.MakeVertices=function(g,d,h,n,t,v){var z=t&&t.length||0,E=0;h&&h.length&&(E|=1);n&&n.length&&(E|=2);void 0===v||v||(E|=4);g=new a._VerticesBuilder(g,d.length/2,z,E);l(d,"HEAPF32",g.positions());g.texCoords()&&l(h,"HEAPF32",g.texCoords());g.colors()&&l(c(n),"HEAPU32",g.colors());g.indices()&&l(t,"HEAPU16",g.indices());return g.detach()};(function(g){g.Gd=g.Gd||[];g.Gd.push(function(){function d(p){p&&(p.dir=0===p.dir?g.TextDirection.RTL:g.TextDirection.LTR);return p}function h(p){if(!p||!p.length)return[]; for(var A=[],O=0;Od)return a._free(g),null;t=new Uint16Array(a.HEAPU8.buffer,g,d);if(h)return h.set(t),a._free(g),h;h=Uint16Array.from(t);a._free(g);return h};a.Font.prototype.getGlyphIntercepts=function(g,d,h,n){var t=l(g,"HEAPU16"),v=l(d,"HEAPF32");return this._getGlyphIntercepts(t, g.length,!(g&&g._ck),v,d.length,!(d&&d._ck),h,n)};a.Font.prototype.getGlyphWidths=function(g,d,h){var n=l(g,"HEAPU16"),t=a._malloc(4*g.length);this._getGlyphWidthBounds(n,g.length,t,M,d||null);d=new Float32Array(a.HEAPU8.buffer,t,g.length);k(n,g);if(h)return h.set(d),a._free(t),h;g=Float32Array.from(d);a._free(t);return g};a.FontMgr.FromData=function(){if(!arguments.length)return null;var g=arguments;1===g.length&&Array.isArray(g[0])&&(g=arguments[0]);if(!g.length)return null;for(var d=[],h=[],n= 0;nd)return a._free(g),null;t=new Uint16Array(a.HEAPU8.buffer,g,d);if(h)return h.set(t),a._free(g),h;h=Uint16Array.from(t);a._free(g);return h};a.TextBlob.MakeOnPath=function(g,d,h,n){if(g&&g.length&&d&&d.countPoints()){if(1===d.countPoints())return this.MakeFromText(g,h);n||(n=0);var t=h.getGlyphIDs(g);t=h.getGlyphWidths(t);var v=[];d=new a.ContourMeasureIter(d,!1,1);for(var z=d.next(),E=new Float32Array(4),J=0;Jz.length()){z.delete();z=d.next();if(!z){g=g.substring(0,J);break}n=I/2}z.getPosTan(n,E);var U=E[2],V=E[3];v.push(U,V,E[0]-I/2*U,E[1]-I/2*V);n+=I/2}g=this.MakeFromRSXform(g,v,h);z&&z.delete();d.delete();return g}};a.TextBlob.MakeFromRSXform=function(g,d,h){var n=ja(g)+1,t=a._malloc(n);ka(g,C,t,n);g=l(d,"HEAPF32");h=a.TextBlob._MakeFromRSXform(t,n-1,g,h);a._free(t);return h?h:null};a.TextBlob.MakeFromRSXformGlyphs=function(g,d,h){var n=l(g,"HEAPU16");d=l(d,"HEAPF32"); h=a.TextBlob._MakeFromRSXformGlyphs(n,2*g.length,d,h);k(n,g);return h?h:null};a.TextBlob.MakeFromGlyphs=function(g,d){var h=l(g,"HEAPU16");d=a.TextBlob._MakeFromGlyphs(h,2*g.length,d);k(h,g);return d?d:null};a.TextBlob.MakeFromText=function(g,d){var h=ja(g)+1,n=a._malloc(h);ka(g,C,n,h);g=a.TextBlob._MakeFromText(n,h-1,d);a._free(n);return g?g:null};a.MallocGlyphIDs=function(g){return a.Malloc(Uint16Array,g)}});a.Gd=a.Gd||[];a.Gd.push(function(){a.MakePicture=function(g){g=new Uint8Array(g);var d= a._malloc(g.byteLength);a.HEAPU8.set(g,d);return(g=a._MakePicture(d,g.byteLength))?g:null}});a.Gd=a.Gd||[];a.Gd.push(function(){a.RuntimeEffect.Make=function(g,d){return a.RuntimeEffect._Make(g,{onError:d||function(h){console.log("RuntimeEffect error",h)}})};a.RuntimeEffect.MakeForBlender=function(g,d){return a.RuntimeEffect._MakeForBlender(g,{onError:d||function(h){console.log("RuntimeEffect error",h)}})};a.RuntimeEffect.prototype.makeShader=function(g,d){var h=!g._ck,n=l(g,"HEAPF32");d=q(d);return this._makeShader(n, 4*g.length,h,d)};a.RuntimeEffect.prototype.makeShaderWithChildren=function(g,d,h){var n=!g._ck,t=l(g,"HEAPF32");h=q(h);for(var v=[],z=0;z{throw b;},pa="object"==typeof window,ra="function"==typeof importScripts,sa="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,ta="",ua,wa,xa; if(sa){var fs=require("fs"),ya=require("path");ta=ra?ya.dirname(ta)+"/":__dirname+"/";ua=(a,b)=>{a=a.startsWith("file://")?new URL(a):ya.normalize(a);return fs.readFileSync(a,b?void 0:"utf8")};xa=a=>{a=ua(a,!0);a.buffer||(a=new Uint8Array(a));return a};wa=(a,b,c,e=!0)=>{a=a.startsWith("file://")?new URL(a):ya.normalize(a);fs.readFile(a,e?void 0:"utf8",(f,k)=>{f?c(f):b(e?k.buffer:k)})};!r.thisProgram&&1{process.exitCode= a;throw b;};r.inspect=()=>"[Emscripten Module object]"}else if(pa||ra)ra?ta=self.location.href:"undefined"!=typeof document&&document.currentScript&&(ta=document.currentScript.src),_scriptDir&&(ta=_scriptDir),0!==ta.indexOf("blob:")?ta=ta.substr(0,ta.replace(/[?#].*/,"").lastIndexOf("/")+1):ta="",ua=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.send(null);return b.responseText},ra&&(xa=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}), wa=(a,b,c)=>{var e=new XMLHttpRequest;e.open("GET",a,!0);e.responseType="arraybuffer";e.onload=()=>{200==e.status||0==e.status&&e.response?b(e.response):c()};e.onerror=c;e.send(null)};var Aa=r.print||console.log.bind(console),Ca=r.printErr||console.error.bind(console);Object.assign(r,la);la=null;r.thisProgram&&(ma=r.thisProgram);r.quit&&(oa=r.quit);var Da;r.wasmBinary&&(Da=r.wasmBinary);var noExitRuntime=r.noExitRuntime||!0;"object"!=typeof WebAssembly&&Ea("no native wasm support detected"); var Fa,G,Ga=!1,Ha,C,Ia,Ja,K,L,N,Ka;function La(){var a=Fa.buffer;r.HEAP8=Ha=new Int8Array(a);r.HEAP16=Ia=new Int16Array(a);r.HEAP32=K=new Int32Array(a);r.HEAPU8=C=new Uint8Array(a);r.HEAPU16=Ja=new Uint16Array(a);r.HEAPU32=L=new Uint32Array(a);r.HEAPF32=N=new Float32Array(a);r.HEAPF64=Ka=new Float64Array(a)}var Na,Oa=[],Pa=[],Qa=[];function Ra(){var a=r.preRun.shift();Oa.unshift(a)}var Ua=0,Va=null,Wa=null; function Ea(a){if(r.onAbort)r.onAbort(a);a="Aborted("+a+")";Ca(a);Ga=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");ba(a);throw a;}function Xa(a){return a.startsWith("data:application/octet-stream;base64,")}var Ya;Ya="canvaskit.wasm";if(!Xa(Ya)){var Za=Ya;Ya=r.locateFile?r.locateFile(Za,ta):ta+Za}function $a(a){if(a==Ya&&Da)return new Uint8Array(Da);if(xa)return xa(a);throw"both async and sync fetching of the wasm failed";} function ab(a){if(!Da&&(pa||ra)){if("function"==typeof fetch&&!a.startsWith("file://"))return fetch(a,{credentials:"same-origin"}).then(b=>{if(!b.ok)throw"failed to load wasm binary file at '"+a+"'";return b.arrayBuffer()}).catch(()=>$a(a));if(wa)return new Promise((b,c)=>{wa(a,e=>b(new Uint8Array(e)),c)})}return Promise.resolve().then(()=>$a(a))}function bb(a,b,c){return ab(a).then(e=>WebAssembly.instantiate(e,b)).then(e=>e).then(c,e=>{Ca("failed to asynchronously prepare wasm: "+e);Ea(e)})} function cb(a,b){var c=Ya;return Da||"function"!=typeof WebAssembly.instantiateStreaming||Xa(c)||c.startsWith("file://")||sa||"function"!=typeof fetch?bb(c,a,b):fetch(c,{credentials:"same-origin"}).then(e=>WebAssembly.instantiateStreaming(e,a).then(b,function(f){Ca("wasm streaming compile failed: "+f);Ca("falling back to ArrayBuffer instantiation");return bb(c,a,b)}))}function db(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a}var eb=a=>{for(;0>2]=b};this.qe=function(b){L[this.Ed+8>>2]=b};this.Td=function(b,c){this.pe();this.Ie(b);this.qe(c)};this.pe=function(){L[this.Ed+16>>2]=0}} var gb=0,ib=0,jb="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,kb=(a,b,c)=>{var e=b+c;for(c=b;a[c]&&!(c>=e);)++c;if(16f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else e+=String.fromCharCode(f)}return e}, lb={};function mb(a){for(;a.length;){var b=a.pop();a.pop()(b)}}function nb(a){return this.fromWireType(K[a>>2])}var ob={},pb={},qb={},rb=void 0;function sb(a){throw new rb(a);} function tb(a,b,c){function e(m){m=c(m);m.length!==a.length&&sb("Mismatched type converter count");for(var q=0;q{pb.hasOwnProperty(m)?f[q]=pb[m]:(k.push(m),ob.hasOwnProperty(m)||(ob[m]=[]),ob[m].push(()=>{f[q]=pb[m];++l;l===k.length&&e(f)}))});0===k.length&&e(f)} function vb(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${a}`);}}var wb=void 0;function P(a){for(var b="";C[a];)b+=wb[C[a++]];return b}var xb=void 0;function Q(a){throw new xb(a);} function yb(a,b,c={}){var e=b.name;a||Q(`type "${e}" must have a positive integer typeid pointer`);if(pb.hasOwnProperty(a)){if(c.$e)return;Q(`Cannot register type '${e}' twice`)}pb[a]=b;delete qb[a];ob.hasOwnProperty(a)&&(b=ob[a],delete ob[a],b.forEach(f=>f()))}function ub(a,b,c={}){if(!("argPackAdvance"in b))throw new TypeError("registerType registeredInstance requires argPackAdvance");yb(a,b,c)}function zb(a){Q(a.jd.Hd.Fd.name+" instance already deleted")}var Ab=!1;function Bb(){} function Cb(a){--a.count.value;0===a.count.value&&(a.Jd?a.Nd.Rd(a.Jd):a.Hd.Fd.Rd(a.Ed))}function Db(a,b,c){if(b===c)return a;if(void 0===c.Kd)return null;a=Db(a,b,c.Kd);return null===a?null:c.Se(a)}var Jb={},Kb=[];function Lb(){for(;Kb.length;){var a=Kb.pop();a.jd.Zd=!1;a["delete"]()}}var Mb=void 0,Nb={};function Ob(a,b){for(void 0===b&&Q("ptr should not be undefined");a.Kd;)b=a.ee(b),a=a.Kd;return Nb[b]} function Pb(a,b){b.Hd&&b.Ed||sb("makeClassHandle requires ptr and ptrType");!!b.Nd!==!!b.Jd&&sb("Both smartPtrType and smartPtr must be specified");b.count={value:1};return Qb(Object.create(a,{jd:{value:b}}))}function Qb(a){if("undefined"===typeof FinalizationRegistry)return Qb=b=>b,a;Ab=new FinalizationRegistry(b=>{Cb(b.jd)});Qb=b=>{var c=b.jd;c.Jd&&Ab.register(b,{jd:c},b);return b};Bb=b=>{Ab.unregister(b)};return Qb(a)}function Rb(){} function Sb(a){if(void 0===a)return"_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?`_${a}`:a}function Tb(a,b){a=Sb(a);return{[a]:function(){return b.apply(this,arguments)}}[a]} function Ub(a,b,c){if(void 0===a[b].Id){var e=a[b];a[b]=function(){a[b].Id.hasOwnProperty(arguments.length)||Q(`Function '${c}' called with an invalid number of arguments (${arguments.length}) - expects one of (${a[b].Id})!`);return a[b].Id[arguments.length].apply(this,arguments)};a[b].Id=[];a[b].Id[e.Xd]=e}} function Vb(a,b,c){r.hasOwnProperty(a)?((void 0===c||void 0!==r[a].Id&&void 0!==r[a].Id[c])&&Q(`Cannot register public name '${a}' twice`),Ub(r,a,a),r.hasOwnProperty(c)&&Q(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`),r[a].Id[c]=b):(r[a]=b,void 0!==c&&(r[a].rf=c))}function Wb(a,b,c,e,f,k,l,m){this.name=a;this.constructor=b;this.$d=c;this.Rd=e;this.Kd=f;this.Ve=k;this.ee=l;this.Se=m;this.df=[]} function Xb(a,b,c){for(;b!==c;)b.ee||Q(`Expected null or instance of ${c.name}, got an instance of ${b.name}`),a=b.ee(a),b=b.Kd;return a}function Yb(a,b){if(null===b)return this.ue&&Q(`null is not a valid ${this.name}`),0;b.jd||Q(`Cannot pass "${Zb(b)}" as a ${this.name}`);b.jd.Ed||Q(`Cannot pass deleted object as a pointer of type ${this.name}`);return Xb(b.jd.Ed,b.jd.Hd.Fd,this.Fd)} function $b(a,b){if(null===b){this.ue&&Q(`null is not a valid ${this.name}`);if(this.je){var c=this.ve();null!==a&&a.push(this.Rd,c);return c}return 0}b.jd||Q(`Cannot pass "${Zb(b)}" as a ${this.name}`);b.jd.Ed||Q(`Cannot pass deleted object as a pointer of type ${this.name}`);!this.ie&&b.jd.Hd.ie&&Q(`Cannot convert argument of type ${b.jd.Nd?b.jd.Nd.name:b.jd.Hd.name} to parameter type ${this.name}`);c=Xb(b.jd.Ed,b.jd.Hd.Fd,this.Fd);if(this.je)switch(void 0===b.jd.Jd&&Q("Passing raw pointer to smart pointer is illegal"), this.jf){case 0:b.jd.Nd===this?c=b.jd.Jd:Q(`Cannot convert argument of type ${b.jd.Nd?b.jd.Nd.name:b.jd.Hd.name} to parameter type ${this.name}`);break;case 1:c=b.jd.Jd;break;case 2:if(b.jd.Nd===this)c=b.jd.Jd;else{var e=b.clone();c=this.ef(c,ac(function(){e["delete"]()}));null!==a&&a.push(this.Rd,c)}break;default:Q("Unsupporting sharing policy")}return c} function bc(a,b){if(null===b)return this.ue&&Q(`null is not a valid ${this.name}`),0;b.jd||Q(`Cannot pass "${Zb(b)}" as a ${this.name}`);b.jd.Ed||Q(`Cannot pass deleted object as a pointer of type ${this.name}`);b.jd.Hd.ie&&Q(`Cannot convert argument of type ${b.jd.Hd.name} to parameter type ${this.name}`);return Xb(b.jd.Ed,b.jd.Hd.Fd,this.Fd)} function cc(a,b,c,e,f,k,l,m,q,w,y){this.name=a;this.Fd=b;this.ue=c;this.ie=e;this.je=f;this.cf=k;this.jf=l;this.Ee=m;this.ve=q;this.ef=w;this.Rd=y;f||void 0!==b.Kd?this.toWireType=$b:(this.toWireType=e?Yb:bc,this.Md=null)}function dc(a,b,c){r.hasOwnProperty(a)||sb("Replacing nonexistant public symbol");void 0!==r[a].Id&&void 0!==c?r[a].Id[c]=b:(r[a]=b,r[a].Xd=c)} var ec=(a,b)=>{var c=[];return function(){c.length=0;Object.assign(c,arguments);if(a.includes("j")){var e=r["dynCall_"+a];e=c&&c.length?e.apply(null,[b].concat(c)):e.call(null,b)}else e=Na.get(b).apply(null,c);return e}};function mc(a,b){a=P(a);var c=a.includes("j")?ec(a,b):Na.get(b);"function"!=typeof c&&Q(`unknown function pointer with signature ${a}: ${b}`);return c}var nc=void 0;function oc(a){a=pc(a);var b=P(a);qc(a);return b} function rc(a,b){function c(k){f[k]||pb[k]||(qb[k]?qb[k].forEach(c):(e.push(k),f[k]=!0))}var e=[],f={};b.forEach(c);throw new nc(`${a}: `+e.map(oc).join([", "]));} function sc(a,b,c,e,f){var k=b.length;2>k&&Q("argTypes array size mismatch! Must at least get return value and 'this' types!");var l=null!==b[1]&&null!==c,m=!1;for(c=1;c>2]);return c}function uc(){this.Qd=[void 0];this.Ce=[]}var vc=new uc;function wc(a){a>=vc.Td&&0===--vc.get(a).Fe&&vc.qe(a)} var xc=a=>{a||Q("Cannot use deleted val. handle = "+a);return vc.get(a).value},ac=a=>{switch(a){case void 0:return 1;case null:return 2;case !0:return 3;case !1:return 4;default:return vc.pe({Fe:1,value:a})}};function yc(a,b,c){switch(b){case 0:return function(e){return this.fromWireType((c?Ha:C)[e])};case 1:return function(e){return this.fromWireType((c?Ia:Ja)[e>>1])};case 2:return function(e){return this.fromWireType((c?K:L)[e>>2])};default:throw new TypeError("Unknown integer type: "+a);}} function zc(a,b){var c=pb[a];void 0===c&&Q(b+" has unknown type "+oc(a));return c}function Zb(a){if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a}function Ac(a,b){switch(b){case 2:return function(c){return this.fromWireType(N[c>>2])};case 3:return function(c){return this.fromWireType(Ka[c>>3])};default:throw new TypeError("Unknown float type: "+a);}} function Bc(a,b,c){switch(b){case 0:return c?function(e){return Ha[e]}:function(e){return C[e]};case 1:return c?function(e){return Ia[e>>1]}:function(e){return Ja[e>>1]};case 2:return c?function(e){return K[e>>2]}:function(e){return L[e>>2]};default:throw new TypeError("Unknown integer type: "+a);}} var ka=(a,b,c,e)=>{if(!(0=l){var m=a.charCodeAt(++k);l=65536+((l&1023)<<10)|m&1023}if(127>=l){if(c>=e)break;b[c++]=l}else{if(2047>=l){if(c+1>=e)break;b[c++]=192|l>>6}else{if(65535>=l){if(c+2>=e)break;b[c++]=224|l>>12}else{if(c+3>=e)break;b[c++]=240|l>>18;b[c++]=128|l>>12&63}b[c++]=128|l>>6&63}b[c++]=128|l&63}}b[c]=0;return c-f},ja=a=>{for(var b=0,c=0;c=e?b++:2047>= e?b+=2:55296<=e&&57343>=e?(b+=4,++c):b+=3}return b},Cc="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0,Dc=(a,b)=>{var c=a>>1;for(var e=c+b/2;!(c>=e)&&Ja[c];)++c;c<<=1;if(32=b/2);++e){var f=Ia[a+2*e>>1];if(0==f)break;c+=String.fromCharCode(f)}return c},Ec=(a,b,c)=>{void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var e=b;c=c<2*a.length?c/2:a.length;for(var f=0;f>1]=a.charCodeAt(f),b+=2;Ia[b>>1]=0;return b-e}, Fc=a=>2*a.length,Gc=(a,b)=>{for(var c=0,e="";!(c>=b/4);){var f=K[a+4*c>>2];if(0==f)break;++c;65536<=f?(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023)):e+=String.fromCharCode(f)}return e},Hc=(a,b,c)=>{void 0===c&&(c=2147483647);if(4>c)return 0;var e=b;c=e+c-4;for(var f=0;f=k){var l=a.charCodeAt(++f);k=65536+((k&1023)<<10)|l&1023}K[b>>2]=k;b+=4;if(b+4>c)break}K[b>>2]=0;return b-e},Ic=a=>{for(var b=0,c=0;c=e&&++c;b+=4}return b},Jc={};function Kc(a){var b=Jc[a];return void 0===b?P(a):b}var Lc=[]; function Mc(){function a(b){b.$$$embind_global$$$=b;var c="object"==typeof $$$embind_global$$$&&b.$$$embind_global$$$==b;c||delete b.$$$embind_global$$$;return c}if("object"==typeof globalThis)return globalThis;if("object"==typeof $$$embind_global$$$)return $$$embind_global$$$;"object"==typeof global&&a(global)?$$$embind_global$$$=global:"object"==typeof self&&a(self)&&($$$embind_global$$$=self);if("object"==typeof $$$embind_global$$$)return $$$embind_global$$$;throw Error("unable to get global object."); }function Nc(a){var b=Lc.length;Lc.push(a);return b}function Oc(a,b){for(var c=Array(a),e=0;e>2],"parameter "+e);return c}var Pc=[];function Qc(a){var b=Array(a+1);return function(c,e,f){b[0]=c;for(var k=0;k>2],"parameter "+k);b[k+1]=l.readValueFromPointer(f);f+=l.argPackAdvance}c=new (c.bind.apply(c,b));return ac(c)}}var Rc={}; function Sc(a){var b=a.getExtension("ANGLE_instanced_arrays");b&&(a.vertexAttribDivisor=function(c,e){b.vertexAttribDivisorANGLE(c,e)},a.drawArraysInstanced=function(c,e,f,k){b.drawArraysInstancedANGLE(c,e,f,k)},a.drawElementsInstanced=function(c,e,f,k,l){b.drawElementsInstancedANGLE(c,e,f,k,l)})} function Tc(a){var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=function(){return b.createVertexArrayOES()},a.deleteVertexArray=function(c){b.deleteVertexArrayOES(c)},a.bindVertexArray=function(c){b.bindVertexArrayOES(c)},a.isVertexArray=function(c){return b.isVertexArrayOES(c)})}function Uc(a){var b=a.getExtension("WEBGL_draw_buffers");b&&(a.drawBuffers=function(c,e){b.drawBuffersWEBGL(c,e)})} var Vc=1,Wc=[],Xc=[],Yc=[],Zc=[],ea=[],$c=[],ad=[],ia=[],bd=[],cd=[],dd={},ed={},gd=4;function R(a){hd||(hd=a)}function da(a){for(var b=Vc++,c=a.length;ca.version||!b.Ae)b.Ae=b.getExtension("EXT_disjoint_timer_query");b.qf=b.getExtension("WEBGL_multi_draw");(b.getSupportedExtensions()||[]).forEach(function(c){c.includes("lose_context")||c.includes("debug")||b.getExtension(c)})}} var x,hd,ld={},nd=()=>{if(!md){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:ma||"./this.program"},b;for(b in ld)void 0===ld[b]?delete a[b]:a[b]=ld[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);md=c}return md},md,od=[null,[],[]];function pd(a){S.bindVertexArray(ad[a])} function qd(a,b){for(var c=0;c>2];S.deleteVertexArray(ad[e]);ad[e]=null}}var rd=[];function sd(a,b,c,e){S.drawElements(a,b,c,e)}function td(a,b,c,e){for(var f=0;f>2]=l}}function ud(a,b){td(a,b,"createVertexArray",ad)} function vd(a,b,c){if(b){var e=void 0;switch(a){case 36346:e=1;break;case 36344:0!=c&&1!=c&&R(1280);return;case 34814:case 36345:e=0;break;case 34466:var f=S.getParameter(34467);e=f?f.length:0;break;case 33309:if(2>x.version){R(1282);return}e=2*(S.getSupportedExtensions()||[]).length;break;case 33307:case 33308:if(2>x.version){R(1280);return}e=33307==a?3:0}if(void 0===e)switch(f=S.getParameter(a),typeof f){case "number":e=f;break;case "boolean":e=f?1:0;break;case "string":R(1280);return;case "object":if(null=== f)switch(a){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:e=0;break;default:R(1280);return}else{if(f instanceof Float32Array||f instanceof Uint32Array||f instanceof Int32Array||f instanceof Array){for(a=0;a>2]=f[a];break;case 2:N[b+4*a>>2]=f[a];break;case 4:Ha[b+a>>0]=f[a]?1:0}return}try{e=f.name|0}catch(k){R(1280); Ca("GL_INVALID_ENUM in glGet"+c+"v: Unknown object returned from WebGL getParameter("+a+")! (error: "+k+")");return}}break;default:R(1280);Ca("GL_INVALID_ENUM in glGet"+c+"v: Native code calling glGet"+c+"v("+a+") and it returns "+f+" of type "+typeof f+"!");return}switch(c){case 1:c=e;L[b>>2]=c;L[b+4>>2]=(c-L[b>>2])/4294967296;break;case 0:K[b>>2]=e;break;case 2:N[b>>2]=e;break;case 4:Ha[b>>0]=e?1:0}}else R(1281)}var xd=a=>{var b=ja(a)+1,c=wd(b);c&&ka(a,C,c,b);return c}; function yd(a){return"]"==a.slice(-1)&&a.lastIndexOf("[")}function zd(a){a-=5120;return 0==a?Ha:1==a?C:2==a?Ia:4==a?K:6==a?N:5==a||28922==a||28520==a||30779==a||30782==a?L:Ja}function Ad(a,b,c,e,f){a=zd(a);var k=31-Math.clz32(a.BYTES_PER_ELEMENT),l=gd;return a.subarray(f>>k,f+e*(c*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[b-6402]||1)*(1<>k)} function W(a){var b=S.Qe;if(b){var c=b.de[a];"number"==typeof c&&(b.de[a]=c=S.getUniformLocation(b,b.Ge[a]+(00===a%4&&(0!==a%100||0===a%400),Ed=[31,29,31,30,31,30,31,31,30,31,30,31],Fd=[31,28,31,30,31,30,31,31,30,31,30,31];function Gd(a){var b=Array(ja(a)+1);ka(a,b,0,b.length);return b} var Hd=(a,b,c,e)=>{function f(u,F,H){for(u="number"==typeof u?u.toString():u||"";u.lengthca?-1:0T-u.getDate())F-=T-u.getDate()+1,u.setDate(1),11>H?u.setMonth(H+1):(u.setMonth(0),u.setFullYear(u.getFullYear()+1));else{u.setDate(u.getDate()+F);break}}H=new Date(u.getFullYear()+1,0,4);F=m(new Date(u.getFullYear(), 0,4));H=m(H);return 0>=l(F,u)?0>=l(H,u)?u.getFullYear()+1:u.getFullYear():u.getFullYear()-1}var w=K[e+40>>2];e={mf:K[e>>2],lf:K[e+4>>2],ne:K[e+8>>2],we:K[e+12>>2],oe:K[e+16>>2],Vd:K[e+20>>2],Pd:K[e+24>>2],Ud:K[e+28>>2],tf:K[e+32>>2],kf:K[e+36>>2],nf:w?w?kb(C,w):"":""};c=c?kb(C,c):"";w={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y", "%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var y in w)c=c.replace(new RegExp(y,"g"),w[y]);var B="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),D="January February March April May June July August September October November December".split(" ");w={"%a":u=>B[u.Pd].substring(0,3),"%A":u=>B[u.Pd],"%b":u=>D[u.oe].substring(0,3),"%B":u=>D[u.oe],"%C":u=>k((u.Vd+1900)/ 100|0,2),"%d":u=>k(u.we,2),"%e":u=>f(u.we,2," "),"%g":u=>q(u).toString().substring(2),"%G":u=>q(u),"%H":u=>k(u.ne,2),"%I":u=>{u=u.ne;0==u?u=12:12{for(var F=0,H=0;H<=u.oe-1;F+=(Dd(u.Vd+1900)?Ed:Fd)[H++]);return k(u.we+F,3)},"%m":u=>k(u.oe+1,2),"%M":u=>k(u.lf,2),"%n":()=>"\n","%p":u=>0<=u.ne&&12>u.ne?"AM":"PM","%S":u=>k(u.mf,2),"%t":()=>"\t","%u":u=>u.Pd||7,"%U":u=>k(Math.floor((u.Ud+7-u.Pd)/7),2),"%V":u=>{var F=Math.floor((u.Ud+7-(u.Pd+6)%7)/7);2>=(u.Pd+371-u.Ud- 2)%7&&F++;if(F)53==F&&(H=(u.Pd+371-u.Ud)%7,4==H||3==H&&Dd(u.Vd)||(F=1));else{F=52;var H=(u.Pd+7-u.Ud-1)%7;(4==H||5==H&&Dd(u.Vd%400-1))&&F++}return k(F,2)},"%w":u=>u.Pd,"%W":u=>k(Math.floor((u.Ud+7-(u.Pd+6)%7)/7),2),"%y":u=>(u.Vd+1900).toString().substring(2),"%Y":u=>u.Vd+1900,"%z":u=>{u=u.kf;var F=0<=u;u=Math.abs(u)/60;return(F?"+":"-")+String("0000"+(u/60*100+u%60)).slice(-4)},"%Z":u=>u.nf,"%%":()=>"%"};c=c.replace(/%%/g,"\x00\x00");for(y in w)c.includes(y)&&(c=c.replace(new RegExp(y,"g"),w[y](e))); c=c.replace(/\0\0/g,"%");y=Gd(c);if(y.length>b)return 0;Ha.set(y,a);return y.length-1};rb=r.InternalError=class extends Error{constructor(a){super(a);this.name="InternalError"}};for(var Id=Array(256),Jd=0;256>Jd;++Jd)Id[Jd]=String.fromCharCode(Jd);wb=Id;xb=r.BindingError=class extends Error{constructor(a){super(a);this.name="BindingError"}}; Rb.prototype.isAliasOf=function(a){if(!(this instanceof Rb&&a instanceof Rb))return!1;var b=this.jd.Hd.Fd,c=this.jd.Ed,e=a.jd.Hd.Fd;for(a=a.jd.Ed;b.Kd;)c=b.ee(c),b=b.Kd;for(;e.Kd;)a=e.ee(a),e=e.Kd;return b===e&&c===a}; Rb.prototype.clone=function(){this.jd.Ed||zb(this);if(this.jd.ce)return this.jd.count.value+=1,this;var a=Qb,b=Object,c=b.create,e=Object.getPrototypeOf(this),f=this.jd;a=a(c.call(b,e,{jd:{value:{count:f.count,Zd:f.Zd,ce:f.ce,Ed:f.Ed,Hd:f.Hd,Jd:f.Jd,Nd:f.Nd}}}));a.jd.count.value+=1;a.jd.Zd=!1;return a};Rb.prototype["delete"]=function(){this.jd.Ed||zb(this);this.jd.Zd&&!this.jd.ce&&Q("Object already scheduled for deletion");Bb(this);Cb(this.jd);this.jd.ce||(this.jd.Jd=void 0,this.jd.Ed=void 0)}; Rb.prototype.isDeleted=function(){return!this.jd.Ed};Rb.prototype.deleteLater=function(){this.jd.Ed||zb(this);this.jd.Zd&&!this.jd.ce&&Q("Object already scheduled for deletion");Kb.push(this);1===Kb.length&&Mb&&Mb(Lb);this.jd.Zd=!0;return this};r.getInheritedInstanceCount=function(){return Object.keys(Nb).length};r.getLiveInheritedInstances=function(){var a=[],b;for(b in Nb)Nb.hasOwnProperty(b)&&a.push(Nb[b]);return a};r.flushPendingDeletes=Lb;r.setDelayFunction=function(a){Mb=a;Kb.length&&Mb&&Mb(Lb)}; cc.prototype.We=function(a){this.Ee&&(a=this.Ee(a));return a};cc.prototype.ye=function(a){this.Rd&&this.Rd(a)};cc.prototype.argPackAdvance=8;cc.prototype.readValueFromPointer=nb;cc.prototype.deleteObject=function(a){if(null!==a)a["delete"]()}; cc.prototype.fromWireType=function(a){function b(){return this.je?Pb(this.Fd.$d,{Hd:this.cf,Ed:c,Nd:this,Jd:a}):Pb(this.Fd.$d,{Hd:this,Ed:a})}var c=this.We(a);if(!c)return this.ye(a),null;var e=Ob(this.Fd,c);if(void 0!==e){if(0===e.jd.count.value)return e.jd.Ed=c,e.jd.Jd=a,e.clone();e=e.clone();this.ye(a);return e}e=this.Fd.Ve(c);e=Jb[e];if(!e)return b.call(this);e=this.ie?e.Pe:e.pointerType;var f=Db(c,this.Fd,e.Fd);return null===f?b.call(this):this.je?Pb(e.Fd.$d,{Hd:e,Ed:f,Nd:this,Jd:a}):Pb(e.Fd.$d, {Hd:e,Ed:f})};nc=r.UnboundTypeError=function(a,b){var c=Tb(b,function(e){this.name=b;this.message=e;e=Error(e).stack;void 0!==e&&(this.stack=this.toString()+"\n"+e.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(a.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`};return c}(Error,"UnboundTypeError"); Object.assign(uc.prototype,{get(a){return this.Qd[a]},has(a){return void 0!==this.Qd[a]},pe(a){var b=this.Ce.pop()||this.Qd.length;this.Qd[b]=a;return b},qe(a){this.Qd[a]=void 0;this.Ce.push(a)}});vc.Qd.push({value:void 0},{value:null},{value:!0},{value:!1});vc.Td=vc.Qd.length;r.count_emval_handles=function(){for(var a=0,b=vc.Td;bKd;++Kd)rd.push(Array(Kd));var Ld=new Float32Array(288); for(Kd=0;288>Kd;++Kd)Bd[Kd]=Ld.subarray(0,Kd+1);var Md=new Int32Array(288);for(Kd=0;288>Kd;++Kd)Cd[Kd]=Md.subarray(0,Kd+1); var $d={H:function(a,b,c){(new fb(a)).Td(b,c);gb=a;ib++;throw gb;},_:function(){return 0},_c:()=>{},Zc:function(){return 0},Yc:()=>{},Xc:function(){},Wc:()=>{},D:function(a){var b=lb[a];delete lb[a];var c=b.ve,e=b.Rd,f=b.Be,k=f.map(l=>l.Ze).concat(f.map(l=>l.gf));tb([a],k,l=>{var m={};f.forEach((q,w)=>{var y=l[w],B=q.Xe,D=q.Ye,u=l[w+f.length],F=q.ff,H=q.hf;m[q.Ue]={read:T=>y.fromWireType(B(D,T)),write:(T,ca)=>{var Y=[];F(H,T,u.toWireType(Y,ca));mb(Y)}}});return[{name:b.name,fromWireType:function(q){var w= {},y;for(y in m)w[y]=m[y].read(q);e(q);return w},toWireType:function(q,w){for(var y in m)if(!(y in w))throw new TypeError(`Missing field: "${y}"`);var B=c();for(y in m)m[y].write(B,w[y]);null!==q&&q.push(e,B);return B},argPackAdvance:8,readValueFromPointer:nb,Md:e}]})},ea:function(){},Sc:function(a,b,c,e,f){var k=vb(c);b=P(b);ub(a,{name:b,fromWireType:function(l){return!!l},toWireType:function(l,m){return m?e:f},argPackAdvance:8,readValueFromPointer:function(l){if(1===c)var m=Ha;else if(2===c)m=Ia; else if(4===c)m=K;else throw new TypeError("Unknown boolean type size: "+b);return this.fromWireType(m[l>>k])},Md:null})},l:function(a,b,c,e,f,k,l,m,q,w,y,B,D){y=P(y);k=mc(f,k);m&&(m=mc(l,m));w&&(w=mc(q,w));D=mc(B,D);var u=Sb(y);Vb(u,function(){rc(`Cannot construct ${y} due to unbound types`,[e])});tb([a,b,c],e?[e]:[],function(F){F=F[0];if(e){var H=F.Fd;var T=H.$d}else T=Rb.prototype;F=Tb(u,function(){if(Object.getPrototypeOf(this)!==ca)throw new xb("Use 'new' to construct "+y);if(void 0===Y.Sd)throw new xb(y+ " has no accessible constructor");var Ma=Y.Sd[arguments.length];if(void 0===Ma)throw new xb(`Tried to invoke ctor of ${y} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(Y.Sd).toString()}) parameters instead!`);return Ma.apply(this,arguments)});var ca=Object.create(T,{constructor:{value:F}});F.prototype=ca;var Y=new Wb(y,F,ca,D,H,k,m,w);Y.Kd&&(void 0===Y.Kd.fe&&(Y.Kd.fe=[]),Y.Kd.fe.push(Y));H=new cc(y,Y,!0,!1,!1);T=new cc(y+"*",Y,!1,!1,!1);var va=new cc(y+" const*", Y,!1,!0,!1);Jb[a]={pointerType:T,Pe:va};dc(u,F);return[H,T,va]})},e:function(a,b,c,e,f,k,l){var m=tc(c,e);b=P(b);k=mc(f,k);tb([],[a],function(q){function w(){rc(`Cannot call ${y} due to unbound types`,m)}q=q[0];var y=`${q.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);var B=q.Fd.constructor;void 0===B[b]?(w.Xd=c-1,B[b]=w):(Ub(B,b,y),B[b].Id[c-1]=w);tb([],m,function(D){D=[D[0],null].concat(D.slice(1));D=sc(y,D,null,k,l);void 0===B[b].Id?(D.Xd=c-1,B[b]=D):B[b].Id[c-1]=D;if(q.Fd.fe)for(const u of q.Fd.fe)u.constructor.hasOwnProperty(b)|| (u.constructor[b]=D);return[]});return[]})},B:function(a,b,c,e,f,k){var l=tc(b,c);f=mc(e,f);tb([],[a],function(m){m=m[0];var q=`constructor ${m.name}`;void 0===m.Fd.Sd&&(m.Fd.Sd=[]);if(void 0!==m.Fd.Sd[b-1])throw new xb(`Cannot register multiple constructors with identical number of parameters (${b-1}) for class '${m.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);m.Fd.Sd[b-1]=()=>{rc(`Cannot construct ${m.name} due to unbound types`,l)}; tb([],l,function(w){w.splice(1,0,null);m.Fd.Sd[b-1]=sc(q,w,null,f,k);return[]});return[]})},a:function(a,b,c,e,f,k,l,m){var q=tc(c,e);b=P(b);k=mc(f,k);tb([],[a],function(w){function y(){rc(`Cannot call ${B} due to unbound types`,q)}w=w[0];var B=`${w.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);m&&w.Fd.df.push(b);var D=w.Fd.$d,u=D[b];void 0===u||void 0===u.Id&&u.className!==w.name&&u.Xd===c-2?(y.Xd=c-2,y.className=w.name,D[b]=y):(Ub(D,b,B),D[b].Id[c-2]=y);tb([],q,function(F){F=sc(B,F, w,k,l);void 0===D[b].Id?(F.Xd=c-2,D[b]=F):D[b].Id[c-2]=F;return[]});return[]})},s:function(a,b,c){a=P(a);tb([],[b],function(e){e=e[0];r[a]=e.fromWireType(c);return[]})},Rc:function(a,b){b=P(b);ub(a,{name:b,fromWireType:function(c){var e=xc(c);wc(c);return e},toWireType:function(c,e){return ac(e)},argPackAdvance:8,readValueFromPointer:nb,Md:null})},i:function(a,b,c,e){function f(){}c=vb(c);b=P(b);f.values={};ub(a,{name:b,constructor:f,fromWireType:function(k){return this.constructor.values[k]},toWireType:function(k, l){return l.value},argPackAdvance:8,readValueFromPointer:yc(b,c,e),Md:null});Vb(b,f)},b:function(a,b,c){var e=zc(a,"enum");b=P(b);a=e.constructor;e=Object.create(e.constructor.prototype,{value:{value:c},constructor:{value:Tb(`${e.name}_${b}`,function(){})}});a.values[c]=e;a[b]=e},X:function(a,b,c){c=vb(c);b=P(b);ub(a,{name:b,fromWireType:function(e){return e},toWireType:function(e,f){return f},argPackAdvance:8,readValueFromPointer:Ac(b,c),Md:null})},v:function(a,b,c,e,f,k){var l=tc(b,c);a=P(a);f= mc(e,f);Vb(a,function(){rc(`Cannot call ${a} due to unbound types`,l)},b-1);tb([],l,function(m){m=[m[0],null].concat(m.slice(1));dc(a,sc(a,m,null,f,k),b-1);return[]})},E:function(a,b,c,e,f){b=P(b);-1===f&&(f=4294967295);f=vb(c);var k=m=>m;if(0===e){var l=32-8*c;k=m=>m<>>l}c=b.includes("unsigned")?function(m,q){return q>>>0}:function(m,q){return q};ub(a,{name:b,fromWireType:k,toWireType:c,argPackAdvance:8,readValueFromPointer:Bc(b,f,0!==e),Md:null})},r:function(a,b,c){function e(k){k>>=2;var l= L;return new f(l.buffer,l[k+1],l[k])}var f=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=P(c);ub(a,{name:c,fromWireType:e,argPackAdvance:8,readValueFromPointer:e},{$e:!0})},p:function(a,b,c,e,f,k,l,m,q,w,y,B){c=P(c);k=mc(f,k);m=mc(l,m);w=mc(q,w);B=mc(y,B);tb([a],[b],function(D){D=D[0];return[new cc(c,D.Fd,!1,!1,!0,D,e,k,m,w,B)]})},W:function(a,b){b=P(b);var c="std::string"===b;ub(a,{name:b,fromWireType:function(e){var f=L[e>>2],k=e+4;if(c)for(var l= k,m=0;m<=f;++m){var q=k+m;if(m==f||0==C[q]){l=l?kb(C,l,q-l):"";if(void 0===w)var w=l;else w+=String.fromCharCode(0),w+=l;l=q+1}}else{w=Array(f);for(m=0;m>2]= l;if(c&&k)ka(f,C,q,l+1);else if(k)for(k=0;kJa;var m=1}else 4===b&&(e=Gc,f=Hc,k=Ic,l=()=>L,m=2);ub(a,{name:c,fromWireType:function(q){for(var w=L[q>>2],y=l(),B,D=q+4,u=0;u<=w;++u){var F= q+4+u*b;if(u==w||0==y[F>>m])D=e(D,F-D),void 0===B?B=D:(B+=String.fromCharCode(0),B+=D),D=F+b}qc(q);return B},toWireType:function(q,w){"string"!=typeof w&&Q(`Cannot pass non-string to C++ string type ${c}`);var y=k(w),B=wd(4+y+b);L[B>>2]=y>>m;f(w,B+4,y+b);null!==q&&q.push(qc,B);return B},argPackAdvance:8,readValueFromPointer:nb,Md:function(q){qc(q)}})},C:function(a,b,c,e,f,k){lb[a]={name:P(b),ve:mc(c,e),Rd:mc(f,k),Be:[]}},d:function(a,b,c,e,f,k,l,m,q,w){lb[a].Be.push({Ue:P(b),Ze:c,Xe:mc(e,f),Ye:k, gf:l,ff:mc(m,q),hf:w})},Qc:function(a,b){b=P(b);ub(a,{bf:!0,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},Pc:()=>!0,Oc:()=>{throw Infinity;},G:function(a,b,c){a=xc(a);b=zc(b,"emval::as");var e=[],f=ac(e);L[c>>2]=f;return b.toWireType(e,a)},N:function(a,b,c,e,f){a=Lc[a];b=xc(b);c=Kc(c);var k=[];L[e>>2]=ac(k);return a(b,c,k,f)},t:function(a,b,c,e){a=Lc[a];b=xc(b);c=Kc(c);a(b,c,null,e)},c:wc,M:function(a){if(0===a)return ac(Mc());a=Kc(a);return ac(Mc()[a])},q:function(a, b){var c=Oc(a,b),e=c[0];b=e.name+"_$"+c.slice(1).map(function(l){return l.name}).join("_")+"$";var f=Pc[b];if(void 0!==f)return f;var k=Array(a-1);f=Nc((l,m,q,w)=>{for(var y=0,B=0;B{Ea("")},Mc:()=>performance.now(),Lc:a=>{var b=C.length;a>>>=0;if(2147483648=c;c*=2){var e=b*(1+.2/c); e=Math.min(e,a+100663296);var f=Math;e=Math.max(a,e);a:{f=f.min.call(f,2147483648,e+(65536-e%65536)%65536)-Fa.buffer.byteLength+65535>>>16;try{Fa.grow(f);La();var k=1;break a}catch(l){}k=void 0}if(k)return!0}return!1},Kc:function(){return x?x.handle:0},Vc:(a,b)=>{var c=0;nd().forEach(function(e,f){var k=b+c;f=L[a+4*f>>2]=k;for(k=0;k>0]=e.charCodeAt(k);Ha[f>>0]=0;c+=e.length+1});return 0},Uc:(a,b)=>{var c=nd();L[a>>2]=c.length;var e=0;c.forEach(function(f){e+=f.length+1});L[b>> 2]=e;return 0},Jc:a=>{if(!noExitRuntime){if(r.onExit)r.onExit(a);Ga=!0}oa(a,new db(a))},Z:()=>52,ga:function(){return 52},Tc:()=>52,fa:function(){return 70},Y:(a,b,c,e)=>{for(var f=0,k=0;k>2],m=L[b+4>>2];b+=8;for(var q=0;q>2]=f;return 0},Ic:function(a){S.activeTexture(a)},Hc:function(a,b){S.attachShader(Xc[a],$c[b])},Gc:function(a,b,c){S.bindAttribLocation(Xc[a],b,c?kb(C,c):"")},Fc:function(a, b){35051==a?S.se=b:35052==a&&(S.Yd=b);S.bindBuffer(a,Wc[b])},V:function(a,b){S.bindFramebuffer(a,Yc[b])},Ec:function(a,b){S.bindRenderbuffer(a,Zc[b])},Dc:function(a,b){S.bindSampler(a,bd[b])},Cc:function(a,b){S.bindTexture(a,ea[b])},Bc:pd,Ac:pd,zc:function(a,b,c,e){S.blendColor(a,b,c,e)},yc:function(a){S.blendEquation(a)},xc:function(a,b){S.blendFunc(a,b)},wc:function(a,b,c,e,f,k,l,m,q,w){S.blitFramebuffer(a,b,c,e,f,k,l,m,q,w)},vc:function(a,b,c,e){2<=x.version?c&&b?S.bufferData(a,C,e,c,b):S.bufferData(a, b,e):S.bufferData(a,c?C.subarray(c,c+b):b,e)},uc:function(a,b,c,e){2<=x.version?c&&S.bufferSubData(a,b,C,e,c):S.bufferSubData(a,b,C.subarray(e,e+c))},tc:function(a){return S.checkFramebufferStatus(a)},U:function(a){S.clear(a)},T:function(a,b,c,e){S.clearColor(a,b,c,e)},S:function(a){S.clearStencil(a)},ba:function(a,b,c,e){return S.clientWaitSync(cd[a],b,(c>>>0)+4294967296*e)},sc:function(a,b,c,e){S.colorMask(!!a,!!b,!!c,!!e)},rc:function(a){S.compileShader($c[a])},qc:function(a,b,c,e,f,k,l,m){2<= x.version?S.Yd||!l?S.compressedTexImage2D(a,b,c,e,f,k,l,m):S.compressedTexImage2D(a,b,c,e,f,k,C,m,l):S.compressedTexImage2D(a,b,c,e,f,k,m?C.subarray(m,m+l):null)},pc:function(a,b,c,e,f,k,l,m,q){2<=x.version?S.Yd||!m?S.compressedTexSubImage2D(a,b,c,e,f,k,l,m,q):S.compressedTexSubImage2D(a,b,c,e,f,k,l,C,q,m):S.compressedTexSubImage2D(a,b,c,e,f,k,l,q?C.subarray(q,q+m):null)},oc:function(a,b,c,e,f){S.copyBufferSubData(a,b,c,e,f)},nc:function(a,b,c,e,f,k,l,m){S.copyTexSubImage2D(a,b,c,e,f,k,l,m)},mc:function(){var a= da(Xc),b=S.createProgram();b.name=a;b.me=b.ke=b.le=0;b.xe=1;Xc[a]=b;return a},lc:function(a){var b=da($c);$c[b]=S.createShader(a);return b},kc:function(a){S.cullFace(a)},jc:function(a,b){for(var c=0;c>2],f=Wc[e];f&&(S.deleteBuffer(f),f.name=0,Wc[e]=null,e==S.se&&(S.se=0),e==S.Yd&&(S.Yd=0))}},ic:function(a,b){for(var c=0;c>2],f=Yc[e];f&&(S.deleteFramebuffer(f),f.name=0,Yc[e]=null)}},hc:function(a){if(a){var b=Xc[a];b?(S.deleteProgram(b),b.name=0,Xc[a]=null): R(1281)}},gc:function(a,b){for(var c=0;c>2],f=Zc[e];f&&(S.deleteRenderbuffer(f),f.name=0,Zc[e]=null)}},fc:function(a,b){for(var c=0;c>2],f=bd[e];f&&(S.deleteSampler(f),f.name=0,bd[e]=null)}},ec:function(a){if(a){var b=$c[a];b?(S.deleteShader(b),$c[a]=null):R(1281)}},dc:function(a){if(a){var b=cd[a];b?(S.deleteSync(b),b.name=0,cd[a]=null):R(1281)}},cc:function(a,b){for(var c=0;c>2],f=ea[e];f&&(S.deleteTexture(f),f.name=0,ea[e]=null)}}, bc:qd,ac:qd,$b:function(a){S.depthMask(!!a)},_b:function(a){S.disable(a)},Zb:function(a){S.disableVertexAttribArray(a)},Yb:function(a,b,c){S.drawArrays(a,b,c)},Xb:function(a,b,c,e){S.drawArraysInstanced(a,b,c,e)},Wb:function(a,b,c,e,f){S.ze.drawArraysInstancedBaseInstanceWEBGL(a,b,c,e,f)},Vb:function(a,b){for(var c=rd[a],e=0;e>2];S.drawBuffers(c)},Ub:sd,Tb:function(a,b,c,e,f){S.drawElementsInstanced(a,b,c,e,f)},Sb:function(a,b,c,e,f,k,l){S.ze.drawElementsInstancedBaseVertexBaseInstanceWEBGL(a, b,c,e,f,k,l)},Rb:function(a,b,c,e,f,k){sd(a,e,f,k)},Qb:function(a){S.enable(a)},Pb:function(a){S.enableVertexAttribArray(a)},Ob:function(a,b){return(a=S.fenceSync(a,b))?(b=da(cd),a.name=b,cd[b]=a,b):0},Nb:function(){S.finish()},Mb:function(){S.flush()},Lb:function(a,b,c,e){S.framebufferRenderbuffer(a,b,c,Zc[e])},Kb:function(a,b,c,e,f){S.framebufferTexture2D(a,b,c,ea[e],f)},Jb:function(a){S.frontFace(a)},Ib:function(a,b){td(a,b,"createBuffer",Wc)},Hb:function(a,b){td(a,b,"createFramebuffer",Yc)},Gb:function(a, b){td(a,b,"createRenderbuffer",Zc)},Fb:function(a,b){td(a,b,"createSampler",bd)},Eb:function(a,b){td(a,b,"createTexture",ea)},Db:ud,Cb:ud,Bb:function(a){S.generateMipmap(a)},Ab:function(a,b,c){c?K[c>>2]=S.getBufferParameter(a,b):R(1281)},zb:function(){var a=S.getError()||hd;hd=0;return a},yb:function(a,b){vd(a,b,2)},xb:function(a,b,c,e){a=S.getFramebufferAttachmentParameter(a,b,c);if(a instanceof WebGLRenderbuffer||a instanceof WebGLTexture)a=a.name|0;K[e>>2]=a},K:function(a,b){vd(a,b,0)},wb:function(a, b,c,e){a=S.getProgramInfoLog(Xc[a]);null===a&&(a="(unknown error)");b=0>2]=b)},vb:function(a,b,c){if(c)if(a>=Vc)R(1281);else if(a=Xc[a],35716==b)a=S.getProgramInfoLog(a),null===a&&(a="(unknown error)"),K[c>>2]=a.length+1;else if(35719==b){if(!a.me)for(b=0;b>2]=a.me}else if(35722==b){if(!a.ke)for(b=0;b>2]=a.ke}else if(35381==b){if(!a.le)for(b=0;b>2]=a.le}else K[c>>2]=S.getProgramParameter(a,b);else R(1281)},ub:function(a,b,c){c?K[c>>2]=S.getRenderbufferParameter(a,b):R(1281)},tb:function(a,b,c,e){a=S.getShaderInfoLog($c[a]);null===a&&(a="(unknown error)");b=0>2]=b)},sb:function(a,b,c,e){a=S.getShaderPrecisionFormat(a,b);K[c>>2]=a.rangeMin;K[c+4>> 2]=a.rangeMax;K[e>>2]=a.precision},rb:function(a,b,c){c?35716==b?(a=S.getShaderInfoLog($c[a]),null===a&&(a="(unknown error)"),K[c>>2]=a?a.length+1:0):35720==b?(a=S.getShaderSource($c[a]),K[c>>2]=a?a.length+1:0):K[c>>2]=S.getShaderParameter($c[a],b):R(1281)},R:function(a){var b=dd[a];if(!b){switch(a){case 7939:b=S.getSupportedExtensions()||[];b=b.concat(b.map(function(e){return"GL_"+e}));b=xd(b.join(" "));break;case 7936:case 7937:case 37445:case 37446:(b=S.getParameter(a))||R(1280);b=b&&xd(b);break; case 7938:b=S.getParameter(7938);b=2<=x.version?"OpenGL ES 3.0 ("+b+")":"OpenGL ES 2.0 ("+b+")";b=xd(b);break;case 35724:b=S.getParameter(35724);var c=b.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==c&&(3==c[1].length&&(c[1]+="0"),b="OpenGL ES GLSL ES "+c[1]+" ("+b+")");b=xd(b);break;default:R(1280)}dd[a]=b}return b},qb:function(a,b){if(2>x.version)return R(1282),0;var c=ed[a];if(c)return 0>b||b>=c.length?(R(1281),0):c[b];switch(a){case 7939:return c=S.getSupportedExtensions()||[], c=c.concat(c.map(function(e){return"GL_"+e})),c=c.map(function(e){return xd(e)}),c=ed[a]=c,0>b||b>=c.length?(R(1281),0):c[b];default:return R(1280),0}},pb:function(a,b){b=b?kb(C,b):"";if(a=Xc[a]){var c=a,e=c.de,f=c.He,k;if(!e)for(c.de=e={},c.Ge={},k=0;k>>0,f=b.slice(0, k));if((f=a.He[f])&&e>2];S.invalidateFramebuffer(a,e)},nb:function(a,b,c,e,f,k,l){for(var m=rd[b],q=0;q>2];S.invalidateSubFramebuffer(a,m,e,f,k,l)},mb:function(a){return S.isSync(cd[a])},lb:function(a){return(a=ea[a])?S.isTexture(a):0},kb:function(a){S.lineWidth(a)},jb:function(a){a=Xc[a];S.linkProgram(a);a.de=0;a.He={}},ib:function(a, b,c,e,f,k){S.De.multiDrawArraysInstancedBaseInstanceWEBGL(a,K,b>>2,K,c>>2,K,e>>2,L,f>>2,k)},hb:function(a,b,c,e,f,k,l,m){S.De.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(a,K,b>>2,c,K,e>>2,K,f>>2,K,k>>2,L,l>>2,m)},gb:function(a,b){3317==a&&(gd=b);S.pixelStorei(a,b)},fb:function(a){S.readBuffer(a)},eb:function(a,b,c,e,f,k,l){if(2<=x.version)if(S.se)S.readPixels(a,b,c,e,f,k,l);else{var m=zd(k);S.readPixels(a,b,c,e,f,k,m,l>>31-Math.clz32(m.BYTES_PER_ELEMENT))}else(l=Ad(k,f,c,e,l))?S.readPixels(a, b,c,e,f,k,l):R(1280)},db:function(a,b,c,e){S.renderbufferStorage(a,b,c,e)},cb:function(a,b,c,e,f){S.renderbufferStorageMultisample(a,b,c,e,f)},bb:function(a,b,c){S.samplerParameterf(bd[a],b,c)},ab:function(a,b,c){S.samplerParameteri(bd[a],b,c)},$a:function(a,b,c){S.samplerParameteri(bd[a],b,K[c>>2])},_a:function(a,b,c,e){S.scissor(a,b,c,e)},Za:function(a,b,c,e){for(var f="",k=0;k>2]:-1,m=K[c+4*k>>2];l=m?kb(C,m,0>l?void 0:l):"";f+=l}S.shaderSource($c[a],f)},Ya:function(a,b, c){S.stencilFunc(a,b,c)},Xa:function(a,b,c,e){S.stencilFuncSeparate(a,b,c,e)},Wa:function(a){S.stencilMask(a)},Va:function(a,b){S.stencilMaskSeparate(a,b)},Ua:function(a,b,c){S.stencilOp(a,b,c)},Ta:function(a,b,c,e){S.stencilOpSeparate(a,b,c,e)},Sa:function(a,b,c,e,f,k,l,m,q){if(2<=x.version)if(S.Yd)S.texImage2D(a,b,c,e,f,k,l,m,q);else if(q){var w=zd(m);S.texImage2D(a,b,c,e,f,k,l,m,w,q>>31-Math.clz32(w.BYTES_PER_ELEMENT))}else S.texImage2D(a,b,c,e,f,k,l,m,null);else S.texImage2D(a,b,c,e,f,k,l,m,q? Ad(m,l,e,f,q):null)},Ra:function(a,b,c){S.texParameterf(a,b,c)},Qa:function(a,b,c){S.texParameterf(a,b,N[c>>2])},Pa:function(a,b,c){S.texParameteri(a,b,c)},Oa:function(a,b,c){S.texParameteri(a,b,K[c>>2])},Na:function(a,b,c,e,f){S.texStorage2D(a,b,c,e,f)},Ma:function(a,b,c,e,f,k,l,m,q){if(2<=x.version)if(S.Yd)S.texSubImage2D(a,b,c,e,f,k,l,m,q);else if(q){var w=zd(m);S.texSubImage2D(a,b,c,e,f,k,l,m,w,q>>31-Math.clz32(w.BYTES_PER_ELEMENT))}else S.texSubImage2D(a,b,c,e,f,k,l,m,null);else w=null,q&&(w= Ad(m,l,f,k,q)),S.texSubImage2D(a,b,c,e,f,k,l,m,w)},La:function(a,b){S.uniform1f(W(a),b)},Ka:function(a,b,c){if(2<=x.version)b&&S.uniform1fv(W(a),N,c>>2,b);else{if(288>=b)for(var e=Bd[b-1],f=0;f>2];else e=N.subarray(c>>2,c+4*b>>2);S.uniform1fv(W(a),e)}},Ja:function(a,b){S.uniform1i(W(a),b)},Ia:function(a,b,c){if(2<=x.version)b&&S.uniform1iv(W(a),K,c>>2,b);else{if(288>=b)for(var e=Cd[b-1],f=0;f>2];else e=K.subarray(c>>2,c+4*b>>2);S.uniform1iv(W(a),e)}},Ha:function(a, b,c){S.uniform2f(W(a),b,c)},Ga:function(a,b,c){if(2<=x.version)b&&S.uniform2fv(W(a),N,c>>2,2*b);else{if(144>=b)for(var e=Bd[2*b-1],f=0;f<2*b;f+=2)e[f]=N[c+4*f>>2],e[f+1]=N[c+(4*f+4)>>2];else e=N.subarray(c>>2,c+8*b>>2);S.uniform2fv(W(a),e)}},Fa:function(a,b,c){S.uniform2i(W(a),b,c)},Ea:function(a,b,c){if(2<=x.version)b&&S.uniform2iv(W(a),K,c>>2,2*b);else{if(144>=b)for(var e=Cd[2*b-1],f=0;f<2*b;f+=2)e[f]=K[c+4*f>>2],e[f+1]=K[c+(4*f+4)>>2];else e=K.subarray(c>>2,c+8*b>>2);S.uniform2iv(W(a),e)}},Da:function(a, b,c,e){S.uniform3f(W(a),b,c,e)},Ca:function(a,b,c){if(2<=x.version)b&&S.uniform3fv(W(a),N,c>>2,3*b);else{if(96>=b)for(var e=Bd[3*b-1],f=0;f<3*b;f+=3)e[f]=N[c+4*f>>2],e[f+1]=N[c+(4*f+4)>>2],e[f+2]=N[c+(4*f+8)>>2];else e=N.subarray(c>>2,c+12*b>>2);S.uniform3fv(W(a),e)}},Ba:function(a,b,c,e){S.uniform3i(W(a),b,c,e)},Aa:function(a,b,c){if(2<=x.version)b&&S.uniform3iv(W(a),K,c>>2,3*b);else{if(96>=b)for(var e=Cd[3*b-1],f=0;f<3*b;f+=3)e[f]=K[c+4*f>>2],e[f+1]=K[c+(4*f+4)>>2],e[f+2]=K[c+(4*f+8)>>2];else e= K.subarray(c>>2,c+12*b>>2);S.uniform3iv(W(a),e)}},za:function(a,b,c,e,f){S.uniform4f(W(a),b,c,e,f)},ya:function(a,b,c){if(2<=x.version)b&&S.uniform4fv(W(a),N,c>>2,4*b);else{if(72>=b){var e=Bd[4*b-1],f=N;c>>=2;for(var k=0;k<4*b;k+=4){var l=c+k;e[k]=f[l];e[k+1]=f[l+1];e[k+2]=f[l+2];e[k+3]=f[l+3]}}else e=N.subarray(c>>2,c+16*b>>2);S.uniform4fv(W(a),e)}},xa:function(a,b,c,e,f){S.uniform4i(W(a),b,c,e,f)},wa:function(a,b,c){if(2<=x.version)b&&S.uniform4iv(W(a),K,c>>2,4*b);else{if(72>=b)for(var e=Cd[4*b- 1],f=0;f<4*b;f+=4)e[f]=K[c+4*f>>2],e[f+1]=K[c+(4*f+4)>>2],e[f+2]=K[c+(4*f+8)>>2],e[f+3]=K[c+(4*f+12)>>2];else e=K.subarray(c>>2,c+16*b>>2);S.uniform4iv(W(a),e)}},va:function(a,b,c,e){if(2<=x.version)b&&S.uniformMatrix2fv(W(a),!!c,N,e>>2,4*b);else{if(72>=b)for(var f=Bd[4*b-1],k=0;k<4*b;k+=4)f[k]=N[e+4*k>>2],f[k+1]=N[e+(4*k+4)>>2],f[k+2]=N[e+(4*k+8)>>2],f[k+3]=N[e+(4*k+12)>>2];else f=N.subarray(e>>2,e+16*b>>2);S.uniformMatrix2fv(W(a),!!c,f)}},ua:function(a,b,c,e){if(2<=x.version)b&&S.uniformMatrix3fv(W(a), !!c,N,e>>2,9*b);else{if(32>=b)for(var f=Bd[9*b-1],k=0;k<9*b;k+=9)f[k]=N[e+4*k>>2],f[k+1]=N[e+(4*k+4)>>2],f[k+2]=N[e+(4*k+8)>>2],f[k+3]=N[e+(4*k+12)>>2],f[k+4]=N[e+(4*k+16)>>2],f[k+5]=N[e+(4*k+20)>>2],f[k+6]=N[e+(4*k+24)>>2],f[k+7]=N[e+(4*k+28)>>2],f[k+8]=N[e+(4*k+32)>>2];else f=N.subarray(e>>2,e+36*b>>2);S.uniformMatrix3fv(W(a),!!c,f)}},ta:function(a,b,c,e){if(2<=x.version)b&&S.uniformMatrix4fv(W(a),!!c,N,e>>2,16*b);else{if(18>=b){var f=Bd[16*b-1],k=N;e>>=2;for(var l=0;l<16*b;l+=16){var m=e+l;f[l]= k[m];f[l+1]=k[m+1];f[l+2]=k[m+2];f[l+3]=k[m+3];f[l+4]=k[m+4];f[l+5]=k[m+5];f[l+6]=k[m+6];f[l+7]=k[m+7];f[l+8]=k[m+8];f[l+9]=k[m+9];f[l+10]=k[m+10];f[l+11]=k[m+11];f[l+12]=k[m+12];f[l+13]=k[m+13];f[l+14]=k[m+14];f[l+15]=k[m+15]}}else f=N.subarray(e>>2,e+64*b>>2);S.uniformMatrix4fv(W(a),!!c,f)}},sa:function(a){a=Xc[a];S.useProgram(a);S.Qe=a},ra:function(a,b){S.vertexAttrib1f(a,b)},qa:function(a,b){S.vertexAttrib2f(a,N[b>>2],N[b+4>>2])},pa:function(a,b){S.vertexAttrib3f(a,N[b>>2],N[b+4>>2],N[b+8>>2])}, oa:function(a,b){S.vertexAttrib4f(a,N[b>>2],N[b+4>>2],N[b+8>>2],N[b+12>>2])},na:function(a,b){S.vertexAttribDivisor(a,b)},ma:function(a,b,c,e,f){S.vertexAttribIPointer(a,b,c,e,f)},la:function(a,b,c,e,f,k){S.vertexAttribPointer(a,b,c,!!e,f,k)},ka:function(a,b,c,e){S.viewport(a,b,c,e)},aa:function(a,b,c,e){S.waitSync(cd[a],b,(c>>>0)+4294967296*e)},n:Nd,u:Od,j:Pd,J:Qd,Q:Rd,P:Sd,x:Td,y:Ud,o:Vd,w:Wd,ja:Xd,ia:Yd,ha:Zd,$:(a,b,c,e)=>Hd(a,b,c,e)}; (function(){function a(c){G=c=c.exports;Fa=G.$c;La();Na=G.cd;Pa.unshift(G.ad);Ua--;r.monitorRunDependencies&&r.monitorRunDependencies(Ua);if(0==Ua&&(null!==Va&&(clearInterval(Va),Va=null),Wa)){var e=Wa;Wa=null;e()}return c}var b={a:$d};Ua++;r.monitorRunDependencies&&r.monitorRunDependencies(Ua);if(r.instantiateWasm)try{return r.instantiateWasm(b,a)}catch(c){Ca("Module.instantiateWasm callback failed with error: "+c),ba(c)}cb(b,function(c){a(c.instance)}).catch(ba);return{}})(); var wd=r._malloc=a=>(wd=r._malloc=G.bd)(a),qc=r._free=a=>(qc=r._free=G.dd)(a),pc=a=>(pc=G.ed)(a);r.__embind_initialize_bindings=()=>(r.__embind_initialize_bindings=G.fd)();var ae=(a,b)=>(ae=G.gd)(a,b),be=()=>(be=G.hd)(),ce=a=>(ce=G.id)(a);r.dynCall_viji=(a,b,c,e,f)=>(r.dynCall_viji=G.kd)(a,b,c,e,f);r.dynCall_vijiii=(a,b,c,e,f,k,l)=>(r.dynCall_vijiii=G.ld)(a,b,c,e,f,k,l);r.dynCall_viiiiij=(a,b,c,e,f,k,l,m)=>(r.dynCall_viiiiij=G.md)(a,b,c,e,f,k,l,m);r.dynCall_jii=(a,b,c)=>(r.dynCall_jii=G.nd)(a,b,c); r.dynCall_vij=(a,b,c,e)=>(r.dynCall_vij=G.od)(a,b,c,e);r.dynCall_iiij=(a,b,c,e,f)=>(r.dynCall_iiij=G.pd)(a,b,c,e,f);r.dynCall_iiiij=(a,b,c,e,f,k)=>(r.dynCall_iiiij=G.qd)(a,b,c,e,f,k);r.dynCall_viij=(a,b,c,e,f)=>(r.dynCall_viij=G.rd)(a,b,c,e,f);r.dynCall_viiij=(a,b,c,e,f,k)=>(r.dynCall_viiij=G.sd)(a,b,c,e,f,k);r.dynCall_jiiiiii=(a,b,c,e,f,k,l)=>(r.dynCall_jiiiiii=G.td)(a,b,c,e,f,k,l);r.dynCall_jiiiiji=(a,b,c,e,f,k,l,m)=>(r.dynCall_jiiiiji=G.ud)(a,b,c,e,f,k,l,m); r.dynCall_ji=(a,b)=>(r.dynCall_ji=G.vd)(a,b);r.dynCall_iijj=(a,b,c,e,f,k)=>(r.dynCall_iijj=G.wd)(a,b,c,e,f,k);r.dynCall_jiji=(a,b,c,e,f)=>(r.dynCall_jiji=G.xd)(a,b,c,e,f);r.dynCall_viijii=(a,b,c,e,f,k,l)=>(r.dynCall_viijii=G.yd)(a,b,c,e,f,k,l);r.dynCall_iiiiij=(a,b,c,e,f,k,l)=>(r.dynCall_iiiiij=G.zd)(a,b,c,e,f,k,l);r.dynCall_iiiiijj=(a,b,c,e,f,k,l,m,q)=>(r.dynCall_iiiiijj=G.Ad)(a,b,c,e,f,k,l,m,q);r.dynCall_iiiiiijj=(a,b,c,e,f,k,l,m,q,w)=>(r.dynCall_iiiiiijj=G.Bd)(a,b,c,e,f,k,l,m,q,w); function Wd(a,b,c,e,f){var k=be();try{Na.get(a)(b,c,e,f)}catch(l){ce(k);if(l!==l+0)throw l;ae(1,0)}}function Od(a,b,c){var e=be();try{return Na.get(a)(b,c)}catch(f){ce(e);if(f!==f+0)throw f;ae(1,0)}}function Ud(a,b,c){var e=be();try{Na.get(a)(b,c)}catch(f){ce(e);if(f!==f+0)throw f;ae(1,0)}}function Nd(a,b){var c=be();try{return Na.get(a)(b)}catch(e){ce(c);if(e!==e+0)throw e;ae(1,0)}}function Td(a,b){var c=be();try{Na.get(a)(b)}catch(e){ce(c);if(e!==e+0)throw e;ae(1,0)}} function Pd(a,b,c,e){var f=be();try{return Na.get(a)(b,c,e)}catch(k){ce(f);if(k!==k+0)throw k;ae(1,0)}}function Zd(a,b,c,e,f,k,l,m,q,w){var y=be();try{Na.get(a)(b,c,e,f,k,l,m,q,w)}catch(B){ce(y);if(B!==B+0)throw B;ae(1,0)}}function Vd(a,b,c,e){var f=be();try{Na.get(a)(b,c,e)}catch(k){ce(f);if(k!==k+0)throw k;ae(1,0)}}function Yd(a,b,c,e,f,k,l){var m=be();try{Na.get(a)(b,c,e,f,k,l)}catch(q){ce(m);if(q!==q+0)throw q;ae(1,0)}} function Qd(a,b,c,e,f){var k=be();try{return Na.get(a)(b,c,e,f)}catch(l){ce(k);if(l!==l+0)throw l;ae(1,0)}}function Rd(a,b,c,e,f,k,l){var m=be();try{return Na.get(a)(b,c,e,f,k,l)}catch(q){ce(m);if(q!==q+0)throw q;ae(1,0)}}function Xd(a,b,c,e,f,k){var l=be();try{Na.get(a)(b,c,e,f,k)}catch(m){ce(l);if(m!==m+0)throw m;ae(1,0)}}function Sd(a,b,c,e,f,k,l,m,q,w){var y=be();try{return Na.get(a)(b,c,e,f,k,l,m,q,w)}catch(B){ce(y);if(B!==B+0)throw B;ae(1,0)}}var de;Wa=function ee(){de||fe();de||(Wa=ee)}; function fe(){function a(){if(!de&&(de=!0,r.calledRun=!0,!Ga)){eb(Pa);aa(r);if(r.onRuntimeInitialized)r.onRuntimeInitialized();if(r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;){var b=r.postRun.shift();Qa.unshift(b)}eb(Qa)}}if(!(0 CanvasKitInit); ================================================ FILE: legacy/dist/canvaskit/chromium/canvaskit.js.symbols ================================================ 0:_embind_register_class_function 1:_embind_register_enum_value 2:_emval_decref 3:_embind_register_value_object_field 4:_embind_register_class_class_function 5:_emval_new_cstring 6:_emval_take_value 7:_emval_set_property 8:_embind_register_enum 9:invoke_iiii 10:abort 11:_embind_register_class 12:_emval_incref 13:invoke_ii 14:invoke_viii 15:_embind_register_smart_ptr 16:_emval_get_method_caller 17:_embind_register_memory_view 18:_embind_register_constant 19:_emval_call_void_method 20:invoke_iii 21:_embind_register_function 22:invoke_viiii 23:invoke_vi 24:invoke_vii 25:_emval_run_destructors 26:_emval_get_property 27:_embind_register_class_constructor 28:_embind_register_value_object 29:_embind_finalize_value_object 30:_embind_register_integer 31:_emval_new_object 32:_emval_as 33:__cxa_throw 34:_emval_new_array 35:invoke_iiiii 36:glGetIntegerv 37:_emval_new 38:_emval_get_global 39:_emval_call_method 40:_embind_register_std_wstring 41:invoke_iiiiiiiiii 42:invoke_iiiiiii 43:glGetString 44:glClearStencil 45:glClearColor 46:glClear 47:glBindFramebuffer 48:_embind_register_std_string 49:_embind_register_float 50:__wasi_fd_write 51:__wasi_fd_close 52:__syscall_fcntl64 53:strftime_l 54:legalimport$glWaitSync 55:legalimport$glClientWaitSync 56:legalimport$_munmap_js 57:legalimport$_mmap_js 58:legalimport$_embind_register_bigint 59:legalimport$__wasi_fd_seek 60:legalimport$__wasi_fd_pread 61:invoke_viiiiiiiii 62:invoke_viiiiii 63:invoke_viiiii 64:glViewport 65:glVertexAttribPointer 66:glVertexAttribIPointer 67:glVertexAttribDivisor 68:glVertexAttrib4fv 69:glVertexAttrib3fv 70:glVertexAttrib2fv 71:glVertexAttrib1f 72:glUseProgram 73:glUniformMatrix4fv 74:glUniformMatrix3fv 75:glUniformMatrix2fv 76:glUniform4iv 77:glUniform4i 78:glUniform4fv 79:glUniform4f 80:glUniform3iv 81:glUniform3i 82:glUniform3fv 83:glUniform3f 84:glUniform2iv 85:glUniform2i 86:glUniform2fv 87:glUniform2f 88:glUniform1iv 89:glUniform1i 90:glUniform1fv 91:glUniform1f 92:glTexSubImage2D 93:glTexStorage2D 94:glTexParameteriv 95:glTexParameteri 96:glTexParameterfv 97:glTexParameterf 98:glTexImage2D 99:glStencilOpSeparate 100:glStencilOp 101:glStencilMaskSeparate 102:glStencilMask 103:glStencilFuncSeparate 104:glStencilFunc 105:glShaderSource 106:glScissor 107:glSamplerParameteriv 108:glSamplerParameteri 109:glSamplerParameterf 110:glRenderbufferStorageMultisample 111:glRenderbufferStorage 112:glReadPixels 113:glReadBuffer 114:glPixelStorei 115:glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL 116:glMultiDrawArraysInstancedBaseInstanceWEBGL 117:glLinkProgram 118:glLineWidth 119:glIsTexture 120:glIsSync 121:glInvalidateSubFramebuffer 122:glInvalidateFramebuffer 123:glGetUniformLocation 124:glGetStringi 125:glGetShaderiv 126:glGetShaderPrecisionFormat 127:glGetShaderInfoLog 128:glGetRenderbufferParameteriv 129:glGetProgramiv 130:glGetProgramInfoLog 131:glGetFramebufferAttachmentParameteriv 132:glGetFloatv 133:glGetError 134:glGetBufferParameteriv 135:glGenerateMipmap 136:glGenVertexArraysOES 137:glGenVertexArrays 138:glGenTextures 139:glGenSamplers 140:glGenRenderbuffers 141:glGenFramebuffers 142:glGenBuffers 143:glFrontFace 144:glFramebufferTexture2D 145:glFramebufferRenderbuffer 146:glFlush 147:glFinish 148:glFenceSync 149:glEnableVertexAttribArray 150:glEnable 151:glDrawRangeElements 152:glDrawElementsInstancedBaseVertexBaseInstanceWEBGL 153:glDrawElementsInstanced 154:glDrawElements 155:glDrawBuffers 156:glDrawArraysInstancedBaseInstanceWEBGL 157:glDrawArraysInstanced 158:glDrawArrays 159:glDisableVertexAttribArray 160:glDisable 161:glDepthMask 162:glDeleteVertexArraysOES 163:glDeleteVertexArrays 164:glDeleteTextures 165:glDeleteSync 166:glDeleteShader 167:glDeleteSamplers 168:glDeleteRenderbuffers 169:glDeleteProgram 170:glDeleteFramebuffers 171:glDeleteBuffers 172:glCullFace 173:glCreateShader 174:glCreateProgram 175:glCopyTexSubImage2D 176:glCopyBufferSubData 177:glCompressedTexSubImage2D 178:glCompressedTexImage2D 179:glCompileShader 180:glColorMask 181:glCheckFramebufferStatus 182:glBufferSubData 183:glBufferData 184:glBlitFramebuffer 185:glBlendFunc 186:glBlendEquation 187:glBlendColor 188:glBindVertexArrayOES 189:glBindVertexArray 190:glBindTexture 191:glBindSampler 192:glBindRenderbuffer 193:glBindBuffer 194:glBindAttribLocation 195:glAttachShader 196:glActiveTexture 197:exit 198:emscripten_webgl_get_current_context 199:emscripten_resize_heap 200:emscripten_get_now 201:_emval_not 202:_emscripten_throw_longjmp 203:_emscripten_get_now_is_monotonic 204:_embind_register_void 205:_embind_register_emval 206:_embind_register_bool 207:__wasi_fd_read 208:__wasi_environ_sizes_get 209:__wasi_environ_get 210:__syscall_stat64 211:__syscall_openat 212:__syscall_newfstatat 213:__syscall_ioctl 214:__syscall_fstat64 215:dlfree 216:operator\20new\28unsigned\20long\29 217:void\20emscripten::internal::raw_destructor\28SkColorSpace*\29 218:__memcpy 219:SkString::~SkString\28\29 220:__memset 221:GrGLSLShaderBuilder::codeAppendf\28char\20const*\2c\20...\29 222:SkColorInfo::~SkColorInfo\28\29 223:SkContainerAllocator::allocate\28int\2c\20double\29 224:SkDebugf\28char\20const*\2c\20...\29 225:SkString::SkString\28\29 226:SkData::~SkData\28\29 227:SkString::insert\28unsigned\20long\2c\20char\20const*\29 228:memcmp 229:memmove 230:hb_blob_destroy 231:sk_report_container_overflow_and_die\28\29 232:std::__2::basic_string\2c\20std::__2::allocator>::append\28char\20const*\29 233:SkPath::~SkPath\28\29 234:std::__2::__function::__func\2c\20void\20\28int\2c\20skia::textlayout::Paragraph::VisitorInfo\20const*\29>::~__func\28\29 235:SkArenaAlloc::ensureSpace\28unsigned\20int\2c\20unsigned\20int\29 236:SkSL::ErrorReporter::error\28SkSL::Position\2c\20std::__2::basic_string_view>\29 237:SkRasterPipeline::append\28SkRasterPipelineOp\2c\20void*\29 238:ft_mem_free 239:SkString::SkString\28char\20const*\29 240:FT_MulFix 241:emscripten::default_smart_ptr_trait>::share\28void*\29 242:SkTDStorage::append\28\29 243:SkMatrix::computeTypeMask\28\29\20const 244:GrGpuResource::notifyARefCntIsZero\28GrIORef::LastRemovedRef\29\20const 245:SkWriter32::growToAtLeast\28unsigned\20long\29 246:testSetjmp 247:std::__2::basic_string\2c\20std::__2::allocator>::append\28char\20const*\2c\20unsigned\20long\29 248:fmaxf 249:std::__2::basic_string\2c\20std::__2::allocator>::size\5babi:v160004\5d\28\29\20const 250:SkString::SkString\28SkString&&\29 251:std::__2::basic_string\2c\20std::__2::allocator>::__throw_length_error\5babi:v160004\5d\28\29\20const 252:SkSL::Pool::AllocMemory\28unsigned\20long\29 253:GrColorInfo::~GrColorInfo\28\29 254:strlen 255:SkIRect::intersect\28SkIRect\20const&\2c\20SkIRect\20const&\29 256:GrBackendFormat::~GrBackendFormat\28\29 257:std::__2::basic_string\2c\20std::__2::allocator>::insert\28unsigned\20long\2c\20char\20const*\29 258:std::__2::vector>::__throw_length_error\5babi:v160004\5d\28\29\20const 259:GrContext_Base::caps\28\29\20const 260:SkPaint::~SkPaint\28\29 261:SkTDStorage::~SkTDStorage\28\29 262:SkSL::RP::Generator::pushExpression\28SkSL::Expression\20const&\2c\20bool\29 263:sk_malloc_throw\28unsigned\20long\2c\20unsigned\20long\29 264:SkTDStorage::SkTDStorage\28int\29 265:SkStrokeRec::getStyle\28\29\20const 266:strncmp 267:SkString::SkString\28SkString\20const&\29 268:hb_ot_map_builder_t::add_feature\28unsigned\20int\2c\20hb_ot_map_feature_flags_t\2c\20unsigned\20int\29 269:void\20emscripten::internal::raw_destructor\28SkContourMeasure*\29 270:SkMatrix::mapRect\28SkRect*\2c\20SkRect\20const&\2c\20SkApplyPerspectiveClip\29\20const 271:SkBitmap::~SkBitmap\28\29 272:hb_buffer_t::make_room_for\28unsigned\20int\2c\20unsigned\20int\29 273:SkArenaAlloc::installFooter\28char*\20\28*\29\28char*\29\2c\20unsigned\20int\29 274:SkArenaAlloc::allocObjectWithFooter\28unsigned\20int\2c\20unsigned\20int\29 275:fminf 276:strcmp 277:skia_private::TArray::push_back\28SkPoint\20const&\29 278:SkString::operator=\28SkString&&\29 279:SkSemaphore::osSignal\28int\29 280:SkPath::SkPath\28\29 281:std::__2::__shared_weak_count::__release_weak\28\29 282:skia_png_error 283:hb_buffer_t::message\28hb_font_t*\2c\20char\20const*\2c\20...\29 284:SkSL::Parser::nextRawToken\28\29 285:SkArenaAlloc::~SkArenaAlloc\28\29 286:SkMatrix::computePerspectiveTypeMask\28\29\20const 287:SkColorInfo::SkColorInfo\28SkColorInfo\20const&\29 288:SkFontMgr*\20emscripten::base::convertPointer\28skia::textlayout::TypefaceFontProvider*\29 289:SkSemaphore::osWait\28\29 290:SkIntersections::insert\28double\2c\20double\2c\20SkDPoint\20const&\29 291:dlmalloc 292:std::__throw_bad_array_new_length\5babi:v160004\5d\28\29 293:FT_DivFix 294:SkString::appendf\28char\20const*\2c\20...\29 295:std::__2::basic_string\2c\20std::__2::allocator>::~basic_string\28\29 296:skia_png_free 297:SkPath::lineTo\28float\2c\20float\29 298:skia_png_crc_finish 299:skia_png_chunk_benign_error 300:SkChecksum::Hash32\28void\20const*\2c\20unsigned\20long\2c\20unsigned\20int\29 301:SkMatrix::mapPoints\28SkPoint*\2c\20SkPoint\20const*\2c\20int\29\20const 302:dlrealloc 303:SkMatrix::setTranslate\28float\2c\20float\29 304:skia_png_warning 305:OT::VarData::get_delta\28unsigned\20int\2c\20int\20const*\2c\20unsigned\20int\2c\20OT::VarRegionList\20const&\2c\20float*\29\20const 306:ft_mem_qrealloc 307:SkColorInfo::bytesPerPixel\28\29\20const 308:SkPaint::SkPaint\28SkPaint\20const&\29 309:GrVertexChunkBuilder::allocChunk\28int\29 310:skia_private::TArray::push_back\28unsigned\20long\20const&\29 311:OT::DeltaSetIndexMap::map\28unsigned\20int\29\20const 312:ft_mem_realloc 313:SkReadBuffer::readUInt\28\29 314:SkMatrix::reset\28\29 315:SkImageInfo::MakeUnknown\28int\2c\20int\29 316:GrSurfaceProxyView::asRenderTargetProxy\28\29\20const 317:skia_private::TArray::push_back\28unsigned\20char&&\29 318:SkPath::SkPath\28SkPath\20const&\29 319:SkPaint::SkPaint\28\29 320:ft_validator_error 321:SkSL::RP::Builder::appendInstruction\28SkSL::RP::BuilderOp\2c\20SkSL::RP::Builder::SlotList\2c\20int\2c\20int\2c\20int\2c\20int\29 322:SkBlitter::~SkBlitter\28\29 323:SkBitmap::SkBitmap\28\29 324:strstr 325:SkOpPtT::segment\28\29\20const 326:sk_malloc_flags\28unsigned\20long\2c\20unsigned\20int\29 327:SkSL::Parser::expect\28SkSL::Token::Kind\2c\20char\20const*\2c\20SkSL::Token*\29 328:SkJSONWriter::appendName\28char\20const*\29 329:SkImageGenerator::onGetYUVAPlanes\28SkYUVAPixmaps\20const&\29 330:std::__2::basic_string\2c\20std::__2::allocator>::__get_pointer\5babi:v160004\5d\28\29 331:skia_private::TArray\2c\20true>::push_back\28sk_sp&&\29 332:SkMatrix::invertNonIdentity\28SkMatrix*\29\20const 333:SkJSONWriter::beginValue\28bool\29 334:GrTextureGenerator::isTextureGenerator\28\29\20const 335:dlcalloc 336:skia_png_get_uint_32 337:skia_png_calculate_crc 338:std::__2::basic_string\2c\20std::__2::allocator>::resize\5babi:v160004\5d\28unsigned\20long\29 339:skgpu::Swizzle::Swizzle\28char\20const*\29 340:SkSL::GLSLCodeGenerator::writeExpression\28SkSL::Expression\20const&\2c\20SkSL::OperatorPrecedence\29 341:SkPoint::Length\28float\2c\20float\29 342:GrImageInfo::GrImageInfo\28GrImageInfo\20const&\29 343:std::__2::basic_string\2c\20std::__2::allocator>::operator\5b\5d\5babi:v160004\5d\28unsigned\20long\29\20const 344:std::__2::locale::~locale\28\29 345:SkPath::getBounds\28\29\20const 346:skia_private::TArray::push_back\28SkString&&\29 347:SkRect::intersect\28SkRect\20const&\29 348:FT_Stream_Seek 349:skia_private::TArray::push_back\28SkSL::RP::Instruction&&\29 350:SkRect::join\28SkRect\20const&\29 351:SkPathRef::Editor::Editor\28sk_sp*\2c\20int\2c\20int\2c\20int\29 352:hb_blob_reference 353:cf2_stack_popFixed 354:SkRect::setBoundsCheck\28SkPoint\20const*\2c\20int\29 355:GrGLExtensions::has\28char\20const*\29\20const 356:SkCachedData::internalUnref\28bool\29\20const 357:GrProcessor::operator\20new\28unsigned\20long\29 358:FT_MulDiv 359:std::__2::to_string\28int\29 360:std::__2::__throw_bad_function_call\5babi:v160004\5d\28\29 361:skia_private::TArray>\2c\20true>::operator=\28skia_private::TArray>\2c\20true>&&\29 362:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul>::__dispatch\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>::__destroy\5babi:v160004\5d\28\29::'lambda'\28auto&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&>\28auto\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\29 363:SkRasterPipeline::uncheckedAppend\28SkRasterPipelineOp\2c\20void*\29 364:std::__2::ios_base::getloc\28\29\20const 365:SkRegion::~SkRegion\28\29 366:skia_png_read_push_finish_row 367:skia::textlayout::TextStyle::~TextStyle\28\29 368:hb_blob_make_immutable 369:SkString::operator=\28char\20const*\29 370:SkReadBuffer::setInvalid\28\29 371:hb_ot_map_builder_t::add_pause\28unsigned\20int\2c\20bool\20\28*\29\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29\29 372:cff1_path_procs_extents_t::curve\28CFF::cff1_cs_interp_env_t&\2c\20cff1_extents_param_t&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\29 373:VP8GetValue 374:SkSemaphore::~SkSemaphore\28\29 375:SkColorInfo::operator=\28SkColorInfo&&\29 376:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28\29 377:skgpu::ganesh::SurfaceContext::caps\28\29\20const 378:SkSL::Type::matches\28SkSL::Type\20const&\29\20const 379:SkSL::String::printf\28char\20const*\2c\20...\29 380:SkPoint::normalize\28\29 381:SkColorInfo::operator=\28SkColorInfo\20const&\29 382:SkArenaAlloc::SkArenaAlloc\28char*\2c\20unsigned\20long\2c\20unsigned\20long\29 383:FT_Stream_ReadUShort 384:jdiv_round_up 385:SkSL::RP::Builder::binary_op\28SkSL::RP::BuilderOp\2c\20int\29 386:std::__2::basic_string\2c\20std::__2::allocator>::capacity\5babi:v160004\5d\28\29\20const 387:jzero_far 388:hb_blob_get_data_writable 389:SkPathRef::growForVerb\28int\2c\20float\29 390:SkColorInfo::SkColorInfo\28SkColorInfo&&\29 391:skia_png_write_data 392:bool\20std::__2::operator==\5babi:v160004\5d>\28std::__2::istreambuf_iterator>\20const&\2c\20std::__2::istreambuf_iterator>\20const&\29 393:SkRuntimeEffect::uniformSize\28\29\20const 394:SkImageGenerator::onQueryYUVAInfo\28SkYUVAPixmapInfo::SupportedDataTypes\20const&\2c\20SkYUVAPixmapInfo*\29\20const 395:FT_Stream_ExitFrame 396:subtag_matches\28char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20unsigned\20int\29 397:skia_private::TArray::push_back_raw\28int\29 398:__shgetc 399:SkBlitter::~SkBlitter\28\29.1 400:FT_Stream_GetUShort 401:std::__2::basic_string\2c\20std::__2::allocator>::operator=\5babi:v160004\5d\28wchar_t\20const*\29 402:std::__2::basic_string\2c\20std::__2::allocator>::operator=\5babi:v160004\5d\28char\20const*\29 403:bool\20std::__2::operator==\5babi:v160004\5d>\28std::__2::istreambuf_iterator>\20const&\2c\20std::__2::istreambuf_iterator>\20const&\29 404:SkPoint::scale\28float\2c\20SkPoint*\29\20const 405:SkNullBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 406:GrFragmentProcessor::ProgramImpl::invokeChild\28int\2c\20char\20const*\2c\20char\20const*\2c\20GrFragmentProcessor::ProgramImpl::EmitArgs&\2c\20std::__2::basic_string_view>\29 407:sktext::gpu::BagOfBytes::~BagOfBytes\28\29 408:skia_png_chunk_error 409:hb_face_reference_table 410:SkMatrix::setConcat\28SkMatrix\20const&\2c\20SkMatrix\20const&\29 411:GrSurfaceProxyView::asTextureProxy\28\29\20const 412:RoughlyEqualUlps\28float\2c\20float\29 413:GrGLSLVaryingHandler::addVarying\28char\20const*\2c\20GrGLSLVarying*\2c\20GrGLSLVaryingHandler::Interpolation\29 414:SkTDStorage::reserve\28int\29 415:SkStringPrintf\28char\20const*\2c\20...\29 416:SkSL::SymbolTable::addWithoutOwnershipOrDie\28SkSL::Symbol*\29 417:SkPath::Iter::next\28SkPoint*\29 418:OT::Layout::Common::Coverage::get_coverage\28unsigned\20int\29\20const 419:GrQuad::MakeFromRect\28SkRect\20const&\2c\20SkMatrix\20const&\29 420:round 421:SkRecord::grow\28\29 422:SkRGBA4f<\28SkAlphaType\293>::toBytes_RGBA\28\29\20const 423:GrProcessor::operator\20new\28unsigned\20long\2c\20unsigned\20long\29 424:std::__2::default_delete::operator\28\29\5babi:v160004\5d\28SkSL::SymbolTable*\29\20const 425:skgpu::ganesh::SurfaceDrawContext::addDrawOp\28GrClip\20const*\2c\20std::__2::unique_ptr>\2c\20std::__2::function\20const&\29 426:skgpu::ResourceKeyHash\28unsigned\20int\20const*\2c\20unsigned\20long\29 427:VP8LoadFinalBytes 428:SkSL::TProgramVisitor::visitStatement\28SkSL::Statement\20const&\29 429:SkSL::RP::Builder::discard_stack\28int\2c\20int\29 430:SkPath::moveTo\28float\2c\20float\29 431:SkPath::conicTo\28float\2c\20float\2c\20float\2c\20float\2c\20float\29 432:SkCanvas::predrawNotify\28bool\29 433:std::__2::__cloc\28\29 434:sscanf 435:SkSurfaceProps::SkSurfaceProps\28\29 436:SkStrikeSpec::~SkStrikeSpec\28\29 437:GrSkSLFP::GrSkSLFP\28sk_sp\2c\20char\20const*\2c\20GrSkSLFP::OptFlags\29 438:GrBackendFormat::GrBackendFormat\28\29 439:__multf3 440:VP8LReadBits 441:SkTDStorage::append\28int\29 442:SkPath::isFinite\28\29\20const 443:SkMatrix::setScale\28float\2c\20float\29 444:SkIRect\20skif::Mapping::map\28SkIRect\20const&\2c\20SkMatrix\20const&\29 445:GrOpsRenderPass::setScissorRect\28SkIRect\20const&\29 446:GrOpsRenderPass::bindPipeline\28GrProgramInfo\20const&\2c\20SkRect\20const&\29 447:hb_draw_funcs_t::start_path\28void*\2c\20hb_draw_state_t&\29 448:SkPath::operator=\28SkPath\20const&\29 449:SkColorSpaceXformSteps::SkColorSpaceXformSteps\28SkColorSpace\20const*\2c\20SkAlphaType\2c\20SkColorSpace\20const*\2c\20SkAlphaType\29 450:GrSimpleMeshDrawOpHelper::~GrSimpleMeshDrawOpHelper\28\29 451:GrProcessorSet::GrProcessorSet\28GrPaint&&\29 452:GrCaps::getDefaultBackendFormat\28GrColorType\2c\20skgpu::Renderable\29\20const 453:GrBackendFormats::AsGLFormat\28GrBackendFormat\20const&\29 454:std::__2::locale::id::__get\28\29 455:std::__2::locale::facet::facet\5babi:v160004\5d\28unsigned\20long\29 456:skia_private::TArray::push_back_raw\28int\29 457:hb_buffer_t::_infos_set_glyph_flags\28hb_glyph_info_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 458:SkSL::PipelineStage::PipelineStageCodeGenerator::writeExpression\28SkSL::Expression\20const&\2c\20SkSL::OperatorPrecedence\29 459:SkSL::Inliner::inlineExpression\28SkSL::Position\2c\20skia_private::THashMap>\2c\20SkGoodHash>*\2c\20SkSL::SymbolTable*\2c\20SkSL::Expression\20const&\29 460:SkSL::GLSLCodeGenerator::writeIdentifier\28std::__2::basic_string_view>\29 461:SkPath::reset\28\29 462:SkPath::isEmpty\28\29\20const 463:SkPaint::setStyle\28SkPaint::Style\29 464:GrGeometryProcessor::AttributeSet::initImplicit\28GrGeometryProcessor::Attribute\20const*\2c\20int\29 465:GrContext_Base::contextID\28\29\20const 466:FT_Stream_EnterFrame 467:AlmostEqualUlps\28float\2c\20float\29 468:std::__2::locale::__imp::install\28std::__2::locale::facet*\2c\20long\29 469:skia_png_read_data 470:SkSpinlock::contendedAcquire\28\29 471:SkSL::evaluate_n_way_intrinsic\28SkSL::Context\20const&\2c\20SkSL::Expression\20const*\2c\20SkSL::Expression\20const*\2c\20SkSL::Expression\20const*\2c\20SkSL::Type\20const&\2c\20double\20\28*\29\28double\2c\20double\2c\20double\29\29\20\28.18\29 472:SkSL::FunctionDeclaration::description\28\29\20const 473:SkRuntimeEffect::MakeForShader\28SkString\2c\20SkRuntimeEffect::Options\20const&\29 474:SkDPoint::approximatelyEqual\28SkDPoint\20const&\29\20const 475:GrSurfaceProxy::backingStoreDimensions\28\29\20const 476:GrOpsRenderPass::bindTextures\28GrGeometryProcessor\20const&\2c\20GrSurfaceProxy\20const*\20const*\2c\20GrPipeline\20const&\29 477:std::__2::basic_string\2c\20std::__2::allocator>::~basic_string\28\29 478:skgpu::ganesh::SurfaceContext::drawingManager\28\29 479:skgpu::UniqueKey::GenerateDomain\28\29 480:hb_buffer_t::_set_glyph_flags\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20bool\2c\20bool\29 481:emscripten_longjmp 482:SkDynamicMemoryWStream::write\28void\20const*\2c\20unsigned\20long\29 483:GrMeshDrawOp::GrMeshDrawOp\28unsigned\20int\29 484:FT_RoundFix 485:std::__2::unique_ptr::~unique_ptr\5babi:v160004\5d\28\29 486:std::__2::unique_ptr::unique_ptr\5babi:v160004\5d\28unsigned\20char*\2c\20std::__2::__dependent_type\2c\20true>::__good_rval_ref_type\29 487:hb_face_get_glyph_count 488:cf2_stack_pushFixed 489:__multi3 490:SkSL::RP::Builder::push_duplicates\28int\29 491:SkSL::ConstructorCompound::MakeFromConstants\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20double\20const*\29 492:SkMatrix::postTranslate\28float\2c\20float\29 493:SkBlockAllocator::reset\28\29 494:SkBitmapDevice::drawMesh\28SkMesh\20const&\2c\20sk_sp\2c\20SkPaint\20const&\29 495:GrTextureEffect::Make\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkMatrix\20const&\2c\20SkFilterMode\2c\20SkMipmapMode\29 496:GrGLSLVaryingHandler::addPassThroughAttribute\28GrShaderVar\20const&\2c\20char\20const*\2c\20GrGLSLVaryingHandler::Interpolation\29 497:GrFragmentProcessor::registerChild\28std::__2::unique_ptr>\2c\20SkSL::SampleUsage\29 498:FT_Stream_ReleaseFrame 499:std::__2::istreambuf_iterator>::operator*\5babi:v160004\5d\28\29\20const 500:skia::textlayout::TextStyle::TextStyle\28skia::textlayout::TextStyle\20const&\29 501:hb_buffer_t::merge_clusters_impl\28unsigned\20int\2c\20unsigned\20int\29 502:decltype\28fp.sanitize\28this\29\29\20hb_sanitize_context_t::_dispatch\28OT::Layout::Common::Coverage\20const&\2c\20hb_priority<1u>\29 503:byn$mgfn-shared$decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28\29::'lambda'\28void*\29>\28SkNullBlitter&&\29::'lambda'\28char*\29::__invoke\28char*\29 504:SkWStream::writePackedUInt\28unsigned\20long\29 505:SkSurface_Base::aboutToDraw\28SkSurface::ContentChangeMode\29 506:SkSL::RP::Builder::push_constant_i\28int\2c\20int\29 507:SkSL::BreakStatement::~BreakStatement\28\29 508:SkNullBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 509:SkColorInfo::refColorSpace\28\29\20const 510:GrPipeline::visitProxies\28std::__2::function\20const&\29\20const 511:GrGeometryProcessor::GrGeometryProcessor\28GrProcessor::ClassID\29 512:std::__2::istreambuf_iterator>::operator*\5babi:v160004\5d\28\29\20const 513:SkSL::fold_expression\28SkSL::Position\2c\20double\2c\20SkSL::Type\20const*\29 514:SkSL::Transform::FindAndDeclareBuiltinFunctions\28SkSL::Program&\29::$_0::operator\28\29\28SkSL::FunctionDefinition\20const*\2c\20SkSL::FunctionDefinition\20const*\29\20const 515:SkSL::RP::Generator::binaryOp\28SkSL::Type\20const&\2c\20SkSL::RP::Generator::TypedOps\20const&\29 516:SkJSONWriter::appendf\28char\20const*\2c\20...\29 517:SkDynamicMemoryWStream::~SkDynamicMemoryWStream\28\29 518:SkBitmap::setImmutable\28\29 519:GrGeometryProcessor::Attribute&\20skia_private::TArray::emplace_back\28char\20const\20\28&\29\20\5b10\5d\2c\20GrVertexAttribType&&\2c\20SkSLType&&\29 520:Cr_z_crc32 521:std::__2::basic_string\2c\20std::__2::allocator>::push_back\28char\29 522:skia_png_push_save_buffer 523:cosf 524:SkShaderBase::SkShaderBase\28\29 525:SkSL::RP::SlotManager::getVariableSlots\28SkSL::Variable\20const&\29 526:SkSL::RP::Builder::unary_op\28SkSL::RP::BuilderOp\2c\20int\29 527:SkSL::Pool::FreeMemory\28void*\29 528:SkReadBuffer::readScalar\28\29 529:SkPaint::setShader\28sk_sp\29 530:GrProcessorSet::visitProxies\28std::__2::function\20const&\29\20const 531:GrGLTexture::target\28\29\20const 532:sk_srgb_singleton\28\29 533:fma 534:SkPaint::SkPaint\28SkPaint&&\29 535:SkDPoint::ApproximatelyEqual\28SkPoint\20const&\2c\20SkPoint\20const&\29 536:SkBitmap::SkBitmap\28SkBitmap\20const&\29 537:void\20std::__2::vector>\2c\20std::__2::allocator>>>::__push_back_slow_path>>\28std::__2::unique_ptr>&&\29 538:std::__2::basic_string\2c\20std::__2::allocator>::__init_copy_ctor_external\28char\20const*\2c\20unsigned\20long\29 539:skip_spaces 540:sk_realloc_throw\28void*\2c\20unsigned\20long\29 541:emscripten::smart_ptr_trait>::get\28sk_sp\20const&\29 542:cff2_path_param_t::cubic_to\28CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\29 543:cff1_path_param_t::cubic_to\28CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\29 544:bool\20OT::Layout::Common::Coverage::collect_coverage\2c\20hb_set_digest_combiner_t\2c\20hb_set_digest_bits_pattern_t>>>\28hb_set_digest_combiner_t\2c\20hb_set_digest_combiner_t\2c\20hb_set_digest_bits_pattern_t>>*\29\20const 545:SkString::operator=\28SkString\20const&\29 546:SkSL::Type::toCompound\28SkSL::Context\20const&\2c\20int\2c\20int\29\20const 547:SkPath::transform\28SkMatrix\20const&\2c\20SkPath*\2c\20SkApplyPerspectiveClip\29\20const 548:SkPath::quadTo\28float\2c\20float\2c\20float\2c\20float\29 549:SkBlockAllocator::addBlock\28int\2c\20int\29 550:SkAAClipBlitter::~SkAAClipBlitter\28\29 551:OT::hb_ot_apply_context_t::match_properties_mark\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29\20const 552:GrThreadSafeCache::VertexData::~VertexData\28\29 553:GrShape::asPath\28SkPath*\2c\20bool\29\20const 554:GrShaderVar::appendDecl\28GrShaderCaps\20const*\2c\20SkString*\29\20const 555:GrPixmapBase::~GrPixmapBase\28\29 556:GrGLSLVaryingHandler::emitAttributes\28GrGeometryProcessor\20const&\29 557:void\20emscripten::internal::raw_destructor\28GrDirectContext*\29 558:std::__2::unique_ptr::reset\5babi:v160004\5d\28unsigned\20char*\29 559:std::__2::istreambuf_iterator>::operator++\5babi:v160004\5d\28\29 560:skia_private::TArray::push_back\28SkPaint\20const&\29 561:skcms_Transform 562:png_icc_profile_error 563:SkString::equals\28SkString\20const&\29\20const 564:SkSL::evaluate_pairwise_intrinsic\28SkSL::Context\20const&\2c\20std::__2::array\20const&\2c\20SkSL::Type\20const&\2c\20double\20\28*\29\28double\2c\20double\2c\20double\29\29 565:SkSL::Type::MakeAliasType\28std::__2::basic_string_view>\2c\20SkSL::Type\20const&\29 566:SkSL::TProgramVisitor::visitExpression\28SkSL::Expression\20const&\29 567:SkRasterClip::~SkRasterClip\28\29 568:SkPixmap::reset\28SkImageInfo\20const&\2c\20void\20const*\2c\20unsigned\20long\29 569:SkPath::countPoints\28\29\20const 570:SkPaint::computeFastBounds\28SkRect\20const&\2c\20SkRect*\29\20const 571:SkPaint::canComputeFastBounds\28\29\20const 572:SkOpPtT::contains\28SkOpPtT\20const*\29\20const 573:SkOpAngle::segment\28\29\20const 574:SkMatrix::preConcat\28SkMatrix\20const&\29 575:SkMatrix::mapVectors\28SkPoint*\2c\20SkPoint\20const*\2c\20int\29\20const 576:SkMasks::getRed\28unsigned\20int\29\20const 577:SkMasks::getGreen\28unsigned\20int\29\20const 578:SkMasks::getBlue\28unsigned\20int\29\20const 579:SkColorInfo::shiftPerPixel\28\29\20const 580:SkBitmap::tryAllocPixels\28SkImageInfo\20const&\2c\20unsigned\20long\29 581:GrProcessorSet::~GrProcessorSet\28\29 582:GrMeshDrawOp::createProgramInfo\28GrMeshDrawTarget*\29 583:FT_Stream_ReadFields 584:AutoLayerForImageFilter::~AutoLayerForImageFilter\28\29 585:std::__2::istreambuf_iterator>::operator++\5babi:v160004\5d\28\29 586:saveSetjmp 587:operator==\28SkMatrix\20const&\2c\20SkMatrix\20const&\29 588:hb_face_t::load_num_glyphs\28\29\20const 589:fmodf 590:emscripten::internal::MethodInvoker::invoke\28int\20\28SkAnimatedImage::*\20const&\29\28\29\2c\20SkAnimatedImage*\29 591:emscripten::default_smart_ptr_trait>::construct_null\28\29 592:VP8GetSignedValue 593:SkSafeMath::Mul\28unsigned\20long\2c\20unsigned\20long\29 594:SkSL::Type::MakeVectorType\28std::__2::basic_string_view>\2c\20char\20const*\2c\20SkSL::Type\20const&\2c\20int\29 595:SkRasterPipeline::SkRasterPipeline\28SkArenaAlloc*\29 596:SkPoint::setLength\28float\29 597:SkMatrix::postConcat\28SkMatrix\20const&\29 598:OT::GDEF::accelerator_t::mark_set_covers\28unsigned\20int\2c\20unsigned\20int\29\20const 599:GrTextureProxy::mipmapped\28\29\20const 600:GrGpuResource::~GrGpuResource\28\29 601:FT_Stream_GetULong 602:FT_Get_Char_Index 603:Cr_z__tr_flush_bits 604:void\20emscripten::internal::raw_destructor>\28sk_sp*\29 605:void\20emscripten::internal::MemberAccess::setWire\28int\20RuntimeEffectUniform::*\20const&\2c\20RuntimeEffectUniform&\2c\20int\29 606:std::__2::ctype::widen\5babi:v160004\5d\28char\29\20const 607:std::__2::__throw_overflow_error\5babi:v160004\5d\28char\20const*\29 608:skia_private::THashMap::set\28char\20const*\2c\20unsigned\20int\29 609:skia_png_chunk_report 610:skgpu::UniqueKey::operator=\28skgpu::UniqueKey\20const&\29 611:sk_double_nearly_zero\28double\29 612:int\20emscripten::internal::MemberAccess::getWire\28int\20RuntimeEffectUniform::*\20const&\2c\20RuntimeEffectUniform\20const&\29 613:hb_font_get_glyph 614:ft_mem_qalloc 615:fit_linear\28skcms_Curve\20const*\2c\20int\2c\20float\2c\20float*\2c\20float*\2c\20float*\29 616:_output_with_dotted_circle\28hb_buffer_t*\29 617:WebPSafeMalloc 618:SkStream::readS32\28int*\29 619:SkSL::GLSLCodeGenerator::getTypeName\28SkSL::Type\20const&\29 620:SkRGBA4f<\28SkAlphaType\293>::FromColor\28unsigned\20int\29 621:SkPathRef::~SkPathRef\28\29 622:SkPath::Iter::Iter\28SkPath\20const&\2c\20bool\29 623:SkPaint::setPathEffect\28sk_sp\29 624:SkMatrix::setRectToRect\28SkRect\20const&\2c\20SkRect\20const&\2c\20SkMatrix::ScaleToFit\29 625:SkImageShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const::$_3::operator\28\29\28\28anonymous\20namespace\29::MipLevelHelper\20const*\29\20const 626:SkImageFilter::getInput\28int\29\20const 627:SkGlyph::rowBytes\28\29\20const 628:SkDrawable::getFlattenableType\28\29\20const 629:SkDrawable::getBounds\28\29 630:SkDCubic::ptAtT\28double\29\20const 631:SkColorSpace::MakeSRGB\28\29 632:SkColorInfo::SkColorInfo\28\29 633:GrOpFlushState::drawMesh\28GrSimpleMesh\20const&\29 634:GrImageInfo::GrImageInfo\28SkImageInfo\20const&\29 635:DefaultGeoProc::Impl::~Impl\28\29 636:out 637:jpeg_fill_bit_buffer 638:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkCanvas&\2c\20unsigned\20long\2c\20SkClipOp\2c\20bool\29\2c\20SkCanvas*\2c\20unsigned\20long\2c\20SkClipOp\2c\20bool\29 639:SkString::data\28\29 640:SkSL::Type::coerceExpression\28std::__2::unique_ptr>\2c\20SkSL::Context\20const&\29\20const 641:SkSL::Type::MakeGenericType\28char\20const*\2c\20SkSpan\2c\20SkSL::Type\20const*\29 642:SkSL::ConstantFolder::GetConstantValueForVariable\28SkSL::Expression\20const&\29 643:SkSL::Analysis::HasSideEffects\28SkSL::Expression\20const&\29 644:SkRegion::setRect\28SkIRect\20const&\29 645:SkRegion::SkRegion\28\29 646:SkRecords::FillBounds::adjustForSaveLayerPaints\28SkRect*\2c\20int\29\20const 647:SkPathStroker::lineTo\28SkPoint\20const&\2c\20SkPath::Iter\20const*\29 648:SkPaint::setMaskFilter\28sk_sp\29 649:SkPaint::setColor\28unsigned\20int\29 650:SkOpContourBuilder::flush\28\29 651:SkCanvas::restoreToCount\28int\29 652:SkCanvas::internalQuickReject\28SkRect\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const*\29 653:SkAutoPixmapStorage::~SkAutoPixmapStorage\28\29 654:GrMatrixEffect::Make\28SkMatrix\20const&\2c\20std::__2::unique_ptr>\29 655:std::__2::char_traits::assign\28char&\2c\20char\20const&\29 656:std::__2::basic_string\2c\20std::__2::allocator>::operator=\5babi:v160004\5d\28std::__2::basic_string\2c\20std::__2::allocator>&&\29 657:std::__2::__check_grouping\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int*\2c\20unsigned\20int*\2c\20unsigned\20int&\29 658:skia_png_malloc 659:skia::textlayout::Cluster::run\28\29\20const 660:skgpu::ganesh::SurfaceDrawContext::drawFilledQuad\28GrClip\20const*\2c\20GrPaint&&\2c\20DrawQuad*\2c\20GrUserStencilSettings\20const*\29 661:sk_sp::~sk_sp\28\29 662:png_write_complete_chunk 663:pad 664:hb_lockable_set_t::fini\28hb_mutex_t&\29 665:ft_mem_alloc 666:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkCanvas&\2c\20unsigned\20long\2c\20SkBlendMode\29\2c\20SkCanvas*\2c\20unsigned\20long\2c\20SkBlendMode\29 667:byn$mgfn-shared$std::__2::__function::__func\2c\20void\20\28SkIRect\20const&\29>::__clone\28\29\20const 668:__ashlti3 669:SkWBuffer::writeNoSizeCheck\28void\20const*\2c\20unsigned\20long\29 670:SkTCoincident::setPerp\28SkTCurve\20const&\2c\20double\2c\20SkDPoint\20const&\2c\20SkTCurve\20const&\29 671:SkStrokeRec::SkStrokeRec\28SkStrokeRec::InitStyle\29 672:SkString::printf\28char\20const*\2c\20...\29 673:SkSL::Type::MakeMatrixType\28std::__2::basic_string_view>\2c\20char\20const*\2c\20SkSL::Type\20const&\2c\20int\2c\20signed\20char\29 674:SkSL::Operator::tightOperatorName\28\29\20const 675:SkReadBuffer::readColor4f\28SkRGBA4f<\28SkAlphaType\293>*\29 676:SkPixmap::reset\28\29 677:SkPictureData::requiredPaint\28SkReadBuffer*\29\20const 678:SkPath::cubicTo\28float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 679:SkPath::close\28\29 680:SkPaintToGrPaint\28GrRecordingContext*\2c\20GrColorInfo\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\2c\20SkSurfaceProps\20const&\2c\20GrPaint*\29 681:SkPaint::setColor\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkColorSpace*\29 682:SkMatrix::preTranslate\28float\2c\20float\29 683:SkMatrix::mapXY\28float\2c\20float\2c\20SkPoint*\29\20const 684:SkFindUnitQuadRoots\28float\2c\20float\2c\20float\2c\20float*\29 685:SkDeque::push_back\28\29 686:SkData::MakeWithCopy\28void\20const*\2c\20unsigned\20long\29 687:SkCanvas::~SkCanvas\28\29.1 688:SkCanvas::concat\28SkMatrix\20const&\29 689:SkBinaryWriteBuffer::writeBool\28bool\29 690:OT::hb_paint_context_t::return_t\20OT::Paint::dispatch\28OT::hb_paint_context_t*\29\20const 691:GrProgramInfo::GrProgramInfo\28GrCaps\20const&\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrPipeline\20const*\2c\20GrUserStencilSettings\20const*\2c\20GrGeometryProcessor\20const*\2c\20GrPrimitiveType\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 692:GrPixmapBase::GrPixmapBase\28GrImageInfo\2c\20void*\2c\20unsigned\20long\29 693:GrColorInfo::GrColorInfo\28GrColorType\2c\20SkAlphaType\2c\20sk_sp\29 694:FT_Outline_Translate 695:FT_Load_Glyph 696:FT_GlyphLoader_CheckPoints 697:DefaultGeoProc::~DefaultGeoProc\28\29 698:uprv_malloc_skia 699:std::__2::ctype\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 700:std::__2::basic_string\2c\20std::__2::allocator>::__set_short_size\5babi:v160004\5d\28unsigned\20long\29 701:std::__2::basic_string\2c\20std::__2::allocator>::__set_long_size\5babi:v160004\5d\28unsigned\20long\29 702:skcms_TransferFunction_eval 703:sinf 704:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28GrDirectContext&\2c\20unsigned\20long\29\2c\20GrDirectContext*\2c\20unsigned\20long\29 705:cbrtf 706:byn$mgfn-shared$std::__2::__function::__func\2c\20float\20\28skia::textlayout::SkRange\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29>::__clone\28\29\20const 707:SkTextBlob::~SkTextBlob\28\29 708:SkRasterPipeline::extend\28SkRasterPipeline\20const&\29 709:SkPaint::setBlendMode\28SkBlendMode\29 710:SkMatrix::mapRadius\28float\29\20const 711:SkImageGenerator::onIsValid\28GrRecordingContext*\29\20const 712:SkIRect::join\28SkIRect\20const&\29 713:SkData::MakeUninitialized\28unsigned\20long\29 714:SkDQuad::RootsValidT\28double\2c\20double\2c\20double\2c\20double*\29 715:SkDLine::nearPoint\28SkDPoint\20const&\2c\20bool*\29\20const 716:SkConic::chopIntoQuadsPOW2\28SkPoint*\2c\20int\29\20const 717:SkColorSpaceXformSteps::apply\28float*\29\20const 718:SkCodec::applyColorXform\28void*\2c\20void\20const*\2c\20int\29\20const 719:SkCachedData::internalRef\28bool\29\20const 720:SkBitmap::installPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20void\20\28*\29\28void*\2c\20void*\29\2c\20void*\29 721:GrSurface::RefCntedReleaseProc::~RefCntedReleaseProc\28\29 722:GrStyle::initPathEffect\28sk_sp\29 723:GrShape::bounds\28\29\20const 724:GrProcessor::operator\20delete\28void*\29 725:GrColorSpaceXformEffect::onMakeProgramImpl\28\29\20const::Impl::~Impl\28\29 726:GrBufferAllocPool::~GrBufferAllocPool\28\29.1 727:AutoLayerForImageFilter::AutoLayerForImageFilter\28SkCanvas*\2c\20SkPaint\20const&\2c\20SkRect\20const*\2c\20bool\29 728:std::__2::numpunct::thousands_sep\5babi:v160004\5d\28\29\20const 729:std::__2::numpunct::grouping\5babi:v160004\5d\28\29\20const 730:std::__2::ctype\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 731:skia_png_malloc_warn 732:rewind\28GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::Comparator\20const&\29 733:cf2_stack_popInt 734:SkSL::Analysis::IsCompileTimeConstant\28SkSL::Expression\20const&\29 735:SkPaint::setColorFilter\28sk_sp\29 736:SkMatrixPriv::MapRect\28SkM44\20const&\2c\20SkRect\20const&\29 737:SkImageGenerator::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkImageGenerator::Options\20const&\29 738:SkDevice::createDevice\28SkDevice::CreateInfo\20const&\2c\20SkPaint\20const*\29 739:SkData::MakeEmpty\28\29 740:SkConic::computeQuadPOW2\28float\29\20const 741:SkColorInfo::makeColorType\28SkColorType\29\20const 742:SkCodec::~SkCodec\28\29 743:SkAAClip::quickContains\28int\2c\20int\2c\20int\2c\20int\29\20const 744:SkAAClip::isRect\28\29\20const 745:GrSurface::ComputeSize\28GrBackendFormat\20const&\2c\20SkISize\2c\20int\2c\20skgpu::Mipmapped\2c\20bool\29 746:GrSimpleMeshDrawOpHelper::GrSimpleMeshDrawOpHelper\28GrProcessorSet*\2c\20GrAAType\2c\20GrSimpleMeshDrawOpHelper::InputFlags\29 747:GrGeometryProcessor::ProgramImpl::SetTransform\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrResourceHandle\20const&\2c\20SkMatrix\20const&\2c\20SkMatrix*\29 748:GrDrawingManager::flushIfNecessary\28\29 749:GrBlendFragmentProcessor::Make\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20SkBlendMode\2c\20bool\29 750:FT_Stream_ExtractFrame 751:AAT::Lookup>::get_value\28unsigned\20int\2c\20unsigned\20int\29\20const 752:std::__2::ctype::widen\5babi:v160004\5d\28char\29\20const 753:std::__2::basic_string\2c\20std::__2::allocator>::__is_long\5babi:v160004\5d\28\29\20const 754:std::__2::__throw_bad_optional_access\5babi:v160004\5d\28\29 755:snprintf 756:skia_png_malloc_base 757:skgpu::ganesh::SurfaceDrawContext::~SurfaceDrawContext\28\29 758:skgpu::ganesh::AsView\28GrRecordingContext*\2c\20SkImage\20const*\2c\20skgpu::Mipmapped\2c\20GrImageTexGenPolicy\29 759:hb_ot_face_t::init0\28hb_face_t*\29 760:hb_lazy_loader_t\2c\20hb_face_t\2c\2025u\2c\20OT::GSUB_accelerator_t>::get\28\29\20const 761:__addtf3 762:SkUTF::NextUTF8\28char\20const**\2c\20char\20const*\29 763:SkTDStorage::reset\28\29 764:SkScan::AntiHairLineRgn\28SkPoint\20const*\2c\20int\2c\20SkRegion\20const*\2c\20SkBlitter*\29 765:SkSL::TProgramVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 766:SkSL::RP::Builder::label\28int\29 767:SkSL::BinaryExpression::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20SkSL::Operator\2c\20std::__2::unique_ptr>\29 768:SkRuntimeEffect::MakeForColorFilter\28SkString\2c\20SkRuntimeEffect::Options\20const&\29 769:SkReadBuffer::skip\28unsigned\20long\2c\20unsigned\20long\29 770:SkPath::countVerbs\28\29\20const 771:SkMatrix::set9\28float\20const*\29 772:SkMatrix::getMaxScale\28\29\20const 773:SkImageInfo::computeByteSize\28unsigned\20long\29\20const 774:SkImageInfo::Make\28int\2c\20int\2c\20SkColorType\2c\20SkAlphaType\2c\20sk_sp\29 775:SkImageInfo::MakeA8\28int\2c\20int\29 776:SkImageFilter_Base::SkImageFilter_Base\28sk_sp\20const*\2c\20int\2c\20std::__2::optional\29 777:SkDrawBase::drawPath\28SkPath\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const*\2c\20bool\2c\20bool\2c\20SkBlitter*\29\20const 778:SkData::MakeWithProc\28void\20const*\2c\20unsigned\20long\2c\20void\20\28*\29\28void\20const*\2c\20void*\29\2c\20void*\29 779:SkColorTypeIsAlwaysOpaque\28SkColorType\29 780:SkBlockAllocator::SkBlockAllocator\28SkBlockAllocator::GrowthPolicy\2c\20unsigned\20long\2c\20unsigned\20long\29 781:SkBlender::Mode\28SkBlendMode\29 782:ReadHuffmanCode 783:GrSurfaceProxy::~GrSurfaceProxy\28\29 784:GrRenderTask::makeClosed\28GrRecordingContext*\29 785:GrGpuBuffer::unmap\28\29 786:GrContext_Base::options\28\29\20const 787:GrCaps::getReadSwizzle\28GrBackendFormat\20const&\2c\20GrColorType\29\20const 788:GrBufferAllocPool::reset\28\29 789:FT_Stream_ReadByte 790:std::__2::char_traits::assign\28wchar_t&\2c\20wchar_t\20const&\29 791:std::__2::char_traits::copy\28char*\2c\20char\20const*\2c\20unsigned\20long\29 792:std::__2::basic_string\2c\20std::__2::allocator>::begin\5babi:v160004\5d\28\29 793:std::__2::__next_prime\28unsigned\20long\29 794:std::__2::__libcpp_snprintf_l\28char*\2c\20unsigned\20long\2c\20__locale_struct*\2c\20char\20const*\2c\20...\29 795:skif::LayerSpace::mapRect\28skif::LayerSpace\20const&\29\20const 796:is_equal\28std::type_info\20const*\2c\20std::type_info\20const*\2c\20bool\29 797:hb_buffer_t::sync\28\29 798:__floatsitf 799:WebPSafeCalloc 800:StreamRemainingLengthIsBelow\28SkStream*\2c\20unsigned\20long\29 801:SkSL::RP::Builder::swizzle\28int\2c\20SkSpan\29 802:SkSL::Parser::expression\28\29 803:SkRGBA4f<\28SkAlphaType\293>::toSkColor\28\29\20const 804:SkPath::isConvex\28\29\20const 805:SkPaint::asBlendMode\28\29\20const 806:SkImageFilter_Base::getFlattenableType\28\29\20const 807:SkImageFilter_Base::getChildOutputLayerBounds\28int\2c\20skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 808:SkImageFilter_Base::getChildInputLayerBounds\28int\2c\20skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 809:SkIDChangeListener::List::~List\28\29 810:SkFontMgr::countFamilies\28\29\20const 811:SkDQuad::ptAtT\28double\29\20const 812:SkDLine::exactPoint\28SkDPoint\20const&\29\20const 813:SkDConic::ptAtT\28double\29\20const 814:SkColorInfo::makeAlphaType\28SkAlphaType\29\20const 815:SkCanvas::save\28\29 816:SkCanvas::drawImage\28SkImage\20const*\2c\20float\2c\20float\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\29 817:SkBitmap::setInfo\28SkImageInfo\20const&\2c\20unsigned\20long\29 818:SkAAClip::Builder::addRun\28int\2c\20int\2c\20unsigned\20int\2c\20int\29 819:GrSkSLFP::addChild\28std::__2::unique_ptr>\2c\20bool\29 820:GrGpuResource::hasRef\28\29\20const 821:GrGLSLShaderBuilder::appendTextureLookup\28SkString*\2c\20GrResourceHandle\2c\20char\20const*\29\20const 822:GrFragmentProcessor::cloneAndRegisterAllChildProcessors\28GrFragmentProcessor\20const&\29 823:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::~SwizzleFragmentProcessor\28\29 824:GrDrawOpAtlas::~GrDrawOpAtlas\28\29 825:GrBackendFormat::GrBackendFormat\28GrBackendFormat\20const&\29 826:AutoFTAccess::AutoFTAccess\28SkTypeface_FreeType\20const*\29 827:AlmostPequalUlps\28float\2c\20float\29 828:void\20std::__2::vector>\2c\20std::__2::allocator>>>::__emplace_back_slow_path>\28unsigned\20int\20const&\2c\20sk_sp&&\29 829:strchr 830:std::__2::ctype::is\5babi:v160004\5d\28unsigned\20long\2c\20char\29\20const 831:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28char\20const*\29 832:std::__2::basic_string\2c\20std::__2::allocator>::__set_long_cap\5babi:v160004\5d\28unsigned\20long\29 833:skia_private::TArray::operator=\28skia_private::TArray&&\29 834:skia_png_reset_crc 835:memchr 836:hb_buffer_t::sync_so_far\28\29 837:hb_buffer_t::move_to\28unsigned\20int\29 838:VP8ExitCritical 839:SkTDStorage::resize\28int\29 840:SkSwizzler::swizzle\28void*\2c\20unsigned\20char\20const*\29 841:SkStream::readPackedUInt\28unsigned\20long*\29 842:SkSL::Type::coercionCost\28SkSL::Type\20const&\29\20const 843:SkSL::Type::clone\28SkSL::Context\20const&\2c\20SkSL::SymbolTable*\29\20const 844:SkSL::RP::Generator::writeStatement\28SkSL::Statement\20const&\29 845:SkSL::Parser::operatorRight\28SkSL::Parser::AutoDepth&\2c\20SkSL::OperatorKind\2c\20std::__2::unique_ptr>\20\28SkSL::Parser::*\29\28\29\2c\20std::__2::unique_ptr>&\29 846:SkResourceCache::Key::init\28void*\2c\20unsigned\20long\20long\2c\20unsigned\20long\29 847:SkReadBuffer::skip\28unsigned\20long\29 848:SkReadBuffer::readFlattenable\28SkFlattenable::Type\29 849:SkRBuffer::read\28void*\2c\20unsigned\20long\29 850:SkIDChangeListener::List::List\28\29 851:SkGlyph::path\28\29\20const 852:GrStyledShape::GrStyledShape\28GrStyledShape\20const&\29 853:GrRenderTargetProxy::arenas\28\29 854:GrOpFlushState::caps\28\29\20const 855:GrGpuResource::hasNoCommandBufferUsages\28\29\20const 856:GrGeometryProcessor::ProgramImpl::WriteLocalCoord\28GrGLSLVertexBuilder*\2c\20GrGLSLUniformHandler*\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\2c\20GrShaderVar\2c\20SkMatrix\20const&\2c\20GrResourceHandle*\29 857:GrGLTextureParameters::SamplerOverriddenState::SamplerOverriddenState\28\29 858:GrGLGpu::deleteFramebuffer\28unsigned\20int\29 859:GrFragmentProcessors::Make\28SkShader\20const*\2c\20GrFPArgs\20const&\2c\20SkShaders::MatrixRec\20const&\29 860:FT_Stream_ReadULong 861:FT_Get_Module 862:Cr_z__tr_flush_block 863:AlmostBequalUlps\28float\2c\20float\29 864:uprv_realloc_skia 865:std::__2::numpunct::truename\5babi:v160004\5d\28\29\20const 866:std::__2::moneypunct::do_grouping\28\29\20const 867:std::__2::locale::use_facet\28std::__2::locale::id&\29\20const 868:std::__2::ctype::is\5babi:v160004\5d\28unsigned\20long\2c\20wchar_t\29\20const 869:std::__2::basic_string\2c\20std::__2::allocator>::empty\5babi:v160004\5d\28\29\20const 870:sktext::gpu::BagOfBytes::needMoreBytes\28int\2c\20int\29 871:skia_png_save_int_32 872:skia_png_safecat 873:skia_png_gamma_significant 874:skgpu::ganesh::SurfaceContext::readPixels\28GrDirectContext*\2c\20GrPixmap\2c\20SkIPoint\29 875:hb_lazy_loader_t\2c\20hb_face_t\2c\2026u\2c\20OT::GPOS_accelerator_t>::get\28\29\20const 876:hb_font_get_nominal_glyph 877:hb_buffer_t::clear_output\28\29 878:emscripten::internal::MethodInvoker::invoke\28void\20\28SkCanvas::*\20const&\29\28SkPaint\20const&\29\2c\20SkCanvas*\2c\20SkPaint*\29 879:cff_parse_num 880:SkTSect::SkTSect\28SkTCurve\20const&\29 881:SkStrokeRec::SkStrokeRec\28SkPaint\20const&\2c\20float\29 882:SkString::set\28char\20const*\2c\20unsigned\20long\29 883:SkSize\20skif::Mapping::map\28SkSize\20const&\2c\20SkMatrix\20const&\29 884:SkSL::SymbolTable::addWithoutOwnership\28SkSL::Context\20const&\2c\20SkSL::Symbol*\29 885:SkSL::Swizzle::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20skia_private::STArray<4\2c\20signed\20char\2c\20true>\29 886:SkSL::String::appendf\28std::__2::basic_string\2c\20std::__2::allocator>*\2c\20char\20const*\2c\20...\29 887:SkSL::Parser::layoutInt\28\29 888:SkSL::Parser::expectIdentifier\28SkSL::Token*\29 889:SkRegion::Cliperator::next\28\29 890:SkRegion::Cliperator::Cliperator\28SkRegion\20const&\2c\20SkIRect\20const&\29 891:SkRRect::initializeRect\28SkRect\20const&\29 892:SkPictureRecorder::~SkPictureRecorder\28\29 893:SkPathRef::CreateEmpty\28\29 894:SkPath::addRect\28SkRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\29 895:SkPaint::setImageFilter\28sk_sp\29 896:SkMasks::getAlpha\28unsigned\20int\29\20const 897:SkM44::setConcat\28SkM44\20const&\2c\20SkM44\20const&\29 898:SkImageFilters::Crop\28SkRect\20const&\2c\20SkTileMode\2c\20sk_sp\29 899:SkImageFilter_Base::getChildOutput\28int\2c\20skif::Context\20const&\29\20const 900:SkData::MakeFromMalloc\28void\20const*\2c\20unsigned\20long\29 901:SkDRect::setBounds\28SkTCurve\20const&\29 902:SkColorFilter::isAlphaUnchanged\28\29\20const 903:SkChopCubicAt\28SkPoint\20const*\2c\20SkPoint*\2c\20float\29 904:SkCanvas::translate\28float\2c\20float\29 905:SkBitmapCache::Rec::getKey\28\29\20const 906:PS_Conv_ToFixed 907:OT::hb_ot_apply_context_t::hb_ot_apply_context_t\28unsigned\20int\2c\20hb_font_t*\2c\20hb_buffer_t*\2c\20hb_blob_t*\29 908:GrTriangulator::Line::intersect\28GrTriangulator::Line\20const&\2c\20SkPoint*\29\20const 909:GrSimpleMeshDrawOpHelper::isCompatible\28GrSimpleMeshDrawOpHelper\20const&\2c\20GrCaps\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20bool\29\20const 910:GrQuad::MakeFromSkQuad\28SkPoint\20const*\2c\20SkMatrix\20const&\29 911:GrOpsRenderPass::bindBuffers\28sk_sp\2c\20sk_sp\2c\20sk_sp\2c\20GrPrimitiveRestart\29 912:GrImageInfo::GrImageInfo\28GrColorType\2c\20SkAlphaType\2c\20sk_sp\2c\20SkISize\20const&\29 913:GrColorInfo::GrColorInfo\28SkColorInfo\20const&\29 914:AlmostDequalUlps\28double\2c\20double\29 915:tt_face_get_name 916:std::__2::vector>::size\5babi:v160004\5d\28\29\20const 917:std::__2::to_string\28long\20long\29 918:std::__2::__libcpp_locale_guard::~__libcpp_locale_guard\5babi:v160004\5d\28\29 919:std::__2::__libcpp_locale_guard::__libcpp_locale_guard\5babi:v160004\5d\28__locale_struct*&\29 920:skia_png_benign_error 921:skia_png_app_error 922:skgpu::ganesh::SurfaceFillContext::getOpsTask\28\29 923:isdigit 924:hb_sanitize_context_t::return_t\20OT::Paint::dispatch\28hb_sanitize_context_t*\29\20const 925:hb_ot_layout_lookup_would_substitute 926:hb_buffer_t::unsafe_to_break\28unsigned\20int\2c\20unsigned\20int\29 927:ft_module_get_service 928:expf 929:emscripten::internal::FunctionInvoker::invoke\28unsigned\20long\20\28**\29\28GrDirectContext&\29\2c\20GrDirectContext*\29 930:cf2_hintmap_map 931:byn$mgfn-shared$std::__2::__function::__func\2c\20void\20\28int\2c\20skia::textlayout::Paragraph::VisitorInfo\20const*\29>::__clone\28std::__2::__function::__base*\29\20const 932:byn$mgfn-shared$std::__2::__function::__func\2c\20void\20\28int\2c\20skia::textlayout::Paragraph::VisitorInfo\20const*\29>::__clone\28\29\20const 933:blit_trapezoid_row\28AdditiveBlitter*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char*\2c\20bool\2c\20bool\2c\20bool\29 934:__sindf 935:__shlim 936:__cosdf 937:SkTiffImageFileDirectory::getEntryValuesGeneric\28unsigned\20short\2c\20unsigned\20short\2c\20unsigned\20int\2c\20void*\29\20const 938:SkSurface::getCanvas\28\29 939:SkSL::cast_expression\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Type\20const&\29 940:SkSL::\28anonymous\20namespace\29::ProgramUsageVisitor::visitType\28SkSL::Type\20const&\29 941:SkSL::Variable::initialValue\28\29\20const 942:SkSL::SymbolTable::addArrayDimension\28SkSL::Context\20const&\2c\20SkSL::Type\20const*\2c\20int\29 943:SkSL::StringStream::str\28\29\20const 944:SkSL::RP::Program::appendCopy\28skia_private::TArray*\2c\20SkArenaAlloc*\2c\20std::byte*\2c\20SkSL::RP::ProgramOp\2c\20unsigned\20int\2c\20int\2c\20unsigned\20int\2c\20int\2c\20int\29\20const 945:SkSL::RP::Generator::makeLValue\28SkSL::Expression\20const&\2c\20bool\29 946:SkSL::RP::DynamicIndexLValue::dynamicSlotRange\28\29 947:SkSL::GLSLCodeGenerator::writeStatement\28SkSL::Statement\20const&\29 948:SkSL::Expression::description\28\29\20const 949:SkSL::Analysis::UpdateVariableRefKind\28SkSL::Expression*\2c\20SkSL::VariableRefKind\2c\20SkSL::ErrorReporter*\29 950:SkRegion::setEmpty\28\29 951:SkRasterPipeline::appendLoadDst\28SkColorType\2c\20SkRasterPipeline_MemoryCtx\20const*\29 952:SkRRect::setRectRadii\28SkRect\20const&\2c\20SkPoint\20const*\29 953:SkRRect::setOval\28SkRect\20const&\29 954:SkPointPriv::DistanceToLineSegmentBetweenSqd\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\29 955:SkPath::arcTo\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\29 956:SkPath::addPath\28SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkPath::AddPathMode\29 957:SkPaint::operator=\28SkPaint&&\29 958:SkOpSpanBase::contains\28SkOpSegment\20const*\29\20const 959:SkMipmap::ComputeLevelCount\28int\2c\20int\29 960:SkMatrix::mapHomogeneousPoints\28SkPoint3*\2c\20SkPoint\20const*\2c\20int\29\20const 961:SkIDChangeListener::List::changed\28\29 962:SkDynamicMemoryWStream::detachAsData\28\29 963:SkDevice::makeSpecial\28SkBitmap\20const&\29 964:SkColorFilter::filterColor4f\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkColorSpace*\2c\20SkColorSpace*\29\20const 965:SkCanvas::drawPath\28SkPath\20const&\2c\20SkPaint\20const&\29 966:SkAutoPixmapStorage::SkAutoPixmapStorage\28\29 967:SkAAClipBlitterWrapper::init\28SkRasterClip\20const&\2c\20SkBlitter*\29 968:SkAAClipBlitterWrapper::SkAAClipBlitterWrapper\28\29 969:RunBasedAdditiveBlitter::flush\28\29 970:GrSurface::onRelease\28\29 971:GrStyledShape::unstyledKeySize\28\29\20const 972:GrShape::convex\28bool\29\20const 973:GrRecordingContext::threadSafeCache\28\29 974:GrProxyProvider::caps\28\29\20const 975:GrOp::GrOp\28unsigned\20int\29 976:GrMakeUncachedBitmapProxyView\28GrRecordingContext*\2c\20SkBitmap\20const&\2c\20skgpu::Mipmapped\2c\20SkBackingFit\2c\20skgpu::Budgeted\29 977:GrGLSLShaderBuilder::getMangledFunctionName\28char\20const*\29 978:GrGLGpu::bindBuffer\28GrGpuBufferType\2c\20GrBuffer\20const*\29 979:GrGLAttribArrayState::set\28GrGLGpu*\2c\20int\2c\20GrBuffer\20const*\2c\20GrVertexAttribType\2c\20SkSLType\2c\20int\2c\20unsigned\20long\2c\20int\29 980:GrAAConvexTessellator::Ring::computeNormals\28GrAAConvexTessellator\20const&\29 981:GrAAConvexTessellator::Ring::computeBisectors\28GrAAConvexTessellator\20const&\29 982:FT_Activate_Size 983:Cr_z_adler32 984:vsnprintf 985:void\20extend_pts<\28SkPaint::Cap\292>\28SkPath::Verb\2c\20SkPath::Verb\2c\20SkPoint*\2c\20int\29 986:void\20extend_pts<\28SkPaint::Cap\291>\28SkPath::Verb\2c\20SkPath::Verb\2c\20SkPoint*\2c\20int\29 987:top12 988:toSkImageInfo\28SimpleImageInfo\20const&\29 989:std::__2::pair::type\2c\20std::__2::__unwrap_ref_decay::type>\20std::__2::make_pair\5babi:v160004\5d\28char\20const*&&\2c\20char*&&\29 990:std::__2::basic_string\2c\20std::__2::allocator>::operator=\5babi:v160004\5d\28std::__2::basic_string\2c\20std::__2::allocator>&&\29 991:std::__2::basic_string\2c\20std::__2::allocator>\20std::__2::operator+\2c\20std::__2::allocator>\28char\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 992:std::__2::__tree\2c\20std::__2::__map_value_compare\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator>>::destroy\28std::__2::__tree_node\2c\20void*>*\29 993:std::__2::__num_put_base::__identify_padding\28char*\2c\20char*\2c\20std::__2::ios_base\20const&\29 994:std::__2::__num_get_base::__get_base\28std::__2::ios_base&\29 995:std::__2::__libcpp_asprintf_l\28char**\2c\20__locale_struct*\2c\20char\20const*\2c\20...\29 996:skif::RoundOut\28SkRect\29 997:skia_private::THashTable::Traits>::removeSlot\28int\29 998:skia_png_zstream_error 999:skia::textlayout::TextLine::iterateThroughVisualRuns\28bool\2c\20std::__2::function\2c\20float*\29>\20const&\29\20const 1000:skia::textlayout::ParagraphImpl::cluster\28unsigned\20long\29 1001:skia::textlayout::Cluster::runOrNull\28\29\20const 1002:skgpu::ganesh::SurfaceFillContext::replaceOpsTask\28\29 1003:skcms_TransferFunction_getType 1004:skcms_GetTagBySignature 1005:read_curve\28unsigned\20char\20const*\2c\20unsigned\20int\2c\20skcms_Curve*\2c\20unsigned\20int*\29 1006:pow 1007:int\20std::__2::__get_up_to_n_digits\5babi:v160004\5d>>\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\2c\20int\29 1008:int\20std::__2::__get_up_to_n_digits\5babi:v160004\5d>>\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\2c\20int\29 1009:hb_serialize_context_t::pop_pack\28bool\29 1010:hb_lazy_loader_t\2c\20hb_face_t\2c\206u\2c\20hb_blob_t>::get\28\29\20const 1011:bool\20std::__2::operator!=\5babi:v160004\5d\28std::__2::__wrap_iter\20const&\2c\20std::__2::__wrap_iter\20const&\29 1012:afm_parser_read_vals 1013:__extenddftf2 1014:\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29 1015:\28anonymous\20namespace\29::colrv1_traverse_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29 1016:\28anonymous\20namespace\29::colrv1_transform\28FT_FaceRec_*\2c\20FT_COLR_Paint_\20const&\2c\20SkCanvas*\2c\20SkMatrix*\29 1017:WebPRescalerImport 1018:SkTDStorage::removeShuffle\28int\29 1019:SkString::SkString\28char\20const*\2c\20unsigned\20long\29 1020:SkScan::HairLineRgn\28SkPoint\20const*\2c\20int\2c\20SkRegion\20const*\2c\20SkBlitter*\29 1021:SkSL::VariableReference::VariableReference\28SkSL::Position\2c\20SkSL::Variable\20const*\2c\20SkSL::VariableRefKind\29 1022:SkSL::SymbolTable::lookup\28SkSL::SymbolTable::SymbolKey\20const&\29\20const 1023:SkSL::ProgramUsage::get\28SkSL::Variable\20const&\29\20const 1024:SkSL::Inliner::inlineStatement\28SkSL::Position\2c\20skia_private::THashMap>\2c\20SkGoodHash>*\2c\20SkSL::SymbolTable*\2c\20std::__2::unique_ptr>*\2c\20SkSL::Analysis::ReturnComplexity\2c\20SkSL::Statement\20const&\2c\20SkSL::ProgramUsage\20const&\2c\20bool\29 1025:SkSL::InlineCandidateAnalyzer::visitExpression\28std::__2::unique_ptr>*\29 1026:SkSL::GLSLCodeGenerator::getTypePrecision\28SkSL::Type\20const&\29 1027:SkRuntimeEffect::Uniform::sizeInBytes\28\29\20const 1028:SkReadBuffer::readByteArray\28void*\2c\20unsigned\20long\29 1029:SkRasterPipeline::run\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29\20const 1030:SkPictureData::optionalPaint\28SkReadBuffer*\29\20const 1031:SkPathWriter::isClosed\28\29\20const 1032:SkPath::isRect\28SkRect*\2c\20bool*\2c\20SkPathDirection*\29\20const 1033:SkPaint::setStrokeWidth\28float\29 1034:SkOpSegment::nextChase\28SkOpSpanBase**\2c\20int*\2c\20SkOpSpan**\2c\20SkOpSpanBase**\29\20const 1035:SkOpSegment::addCurveTo\28SkOpSpanBase\20const*\2c\20SkOpSpanBase\20const*\2c\20SkPathWriter*\29\20const 1036:SkMemoryStream::Make\28sk_sp\29 1037:SkMatrix::preScale\28float\2c\20float\29 1038:SkMatrix::postScale\28float\2c\20float\29 1039:SkMatrix::isSimilarity\28float\29\20const 1040:SkMask::computeImageSize\28\29\20const 1041:SkIntersections::removeOne\28int\29 1042:SkImageInfo::Make\28int\2c\20int\2c\20SkColorType\2c\20SkAlphaType\29 1043:SkDLine::ptAtT\28double\29\20const 1044:SkColorSpace::Equals\28SkColorSpace\20const*\2c\20SkColorSpace\20const*\29 1045:SkColorFilter::makeComposed\28sk_sp\29\20const 1046:SkBulkGlyphMetrics::~SkBulkGlyphMetrics\28\29 1047:SkBitmap::peekPixels\28SkPixmap*\29\20const 1048:SkAAClip::setEmpty\28\29 1049:PS_Conv_Strtol 1050:OT::Layout::GSUB_impl::SubstLookup*\20hb_serialize_context_t::push\28\29 1051:GrTriangulator::makeConnectingEdge\28GrTriangulator::Vertex*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::EdgeType\2c\20GrTriangulator::Comparator\20const&\2c\20int\29 1052:GrTextureProxy::~GrTextureProxy\28\29 1053:GrSimpleMeshDrawOpHelper::createProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrGeometryProcessor*\2c\20GrPrimitiveType\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 1054:GrResourceAllocator::addInterval\28GrSurfaceProxy*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20GrResourceAllocator::ActualUse\2c\20GrResourceAllocator::AllowRecycling\29 1055:GrRecordingContextPriv::makeSFCWithFallback\28GrImageInfo\2c\20SkBackingFit\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrSurfaceOrigin\2c\20skgpu::Budgeted\29 1056:GrGpuBuffer::updateData\28void\20const*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\29 1057:GrGLTextureParameters::NonsamplerState::NonsamplerState\28\29 1058:GrGLSLShaderBuilder::~GrGLSLShaderBuilder\28\29 1059:GrGLSLProgramBuilder::nameVariable\28char\2c\20char\20const*\2c\20bool\29 1060:GrGLGpu::prepareToDraw\28GrPrimitiveType\29 1061:GrGLFormatFromGLEnum\28unsigned\20int\29 1062:GrBackendTexture::getBackendFormat\28\29\20const 1063:GrBackendFormats::MakeGL\28unsigned\20int\2c\20unsigned\20int\29 1064:GrBackendFormatToCompressionType\28GrBackendFormat\20const&\29 1065:FilterLoop24_C 1066:FT_Stream_Skip 1067:CFF::CFFIndex>::operator\5b\5d\28unsigned\20int\29\20const 1068:AAT::Lookup::sanitize\28hb_sanitize_context_t*\29\20const 1069:write_trc_tag\28skcms_Curve\20const&\29 1070:uprv_free_skia 1071:strcpy 1072:std::__2::time_get>>::get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\2c\20wchar_t\20const*\2c\20wchar_t\20const*\29\20const 1073:std::__2::time_get>>::get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\2c\20char\20const*\2c\20char\20const*\29\20const 1074:std::__2::enable_if::type\20skgpu::tess::PatchWriter\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\2964>\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\2932>\2c\20skgpu::tess::AddTrianglesWhenChopping\2c\20skgpu::tess::DiscardFlatCurves>::writeTriangleStack\28skgpu::tess::MiddleOutPolygonTriangulator::PoppedTriangleStack&&\29 1075:std::__2::ctype::widen\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20wchar_t*\29\20const 1076:std::__2::char_traits::eq_int_type\28int\2c\20int\29 1077:std::__2::basic_string\2c\20std::__2::allocator>::__get_long_cap\5babi:v160004\5d\28\29\20const 1078:skif::LayerSpace::ceil\28\29\20const 1079:skia_private::TArray::push_back\28float\20const&\29 1080:skia_private::TArray::operator=\28skia_private::TArray\20const&\29 1081:skia_png_write_finish_row 1082:skia::textlayout::ParagraphImpl::ensureUTF16Mapping\28\29 1083:scalbn 1084:hb_lazy_loader_t\2c\20hb_face_t\2c\2022u\2c\20hb_blob_t>::get\28\29\20const 1085:hb_lazy_loader_t\2c\20hb_face_t\2c\2024u\2c\20OT::GDEF_accelerator_t>::get\28\29\20const 1086:hb_buffer_get_glyph_infos 1087:hb_buffer_destroy 1088:cff2_path_param_t::line_to\28CFF::point_t\20const&\29 1089:cff1_path_param_t::line_to\28CFF::point_t\20const&\29 1090:cf2_stack_getReal 1091:byn$mgfn-shared$GrGLProgramDataManager::set1iv\28GrResourceHandle\2c\20int\2c\20int\20const*\29\20const 1092:antifilldot8\28int\2c\20int\2c\20int\2c\20int\2c\20SkBlitter*\2c\20bool\29 1093:afm_stream_skip_spaces 1094:WebPRescalerInit 1095:WebPRescalerExportRow 1096:SkWStream::writeDecAsText\28int\29 1097:SkTextBlobBuilder::allocInternal\28SkFont\20const&\2c\20SkTextBlob::GlyphPositioning\2c\20int\2c\20int\2c\20SkPoint\2c\20SkRect\20const*\29 1098:SkTDStorage::append\28void\20const*\2c\20int\29 1099:SkString::Rec::Make\28char\20const*\2c\20unsigned\20long\29::$_0::operator\28\29\28\29\20const 1100:SkStrike::digestFor\28skglyph::ActionType\2c\20SkPackedGlyphID\29 1101:SkShaders::Color\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20sk_sp\29 1102:SkSafeMath::Add\28unsigned\20long\2c\20unsigned\20long\29 1103:SkSL::Parser::assignmentExpression\28\29 1104:SkSL::GLSLCodeGenerator::write\28std::__2::basic_string_view>\29 1105:SkSL::ConstructorSplat::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>\29 1106:SkSL::ConstructorScalarCast::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>\29 1107:SkRuntimeEffectBuilder::writableUniformData\28\29 1108:SkRuntimeEffect::findUniform\28std::__2::basic_string_view>\29\20const 1109:SkResourceCache::Find\28SkResourceCache::Key\20const&\2c\20bool\20\28*\29\28SkResourceCache::Rec\20const&\2c\20void*\29\2c\20void*\29 1110:SkRegion::SkRegion\28SkIRect\20const&\29 1111:SkRect::toQuad\28SkPoint*\29\20const 1112:SkRasterPipeline::appendTransferFunction\28skcms_TransferFunction\20const&\29 1113:SkRasterPipeline::appendStore\28SkColorType\2c\20SkRasterPipeline_MemoryCtx\20const*\29 1114:SkRasterPipeline::appendConstantColor\28SkArenaAlloc*\2c\20float\20const*\29 1115:SkRasterClip::SkRasterClip\28\29 1116:SkRRect::checkCornerContainment\28float\2c\20float\29\20const 1117:SkPictureData::getImage\28SkReadBuffer*\29\20const 1118:SkPathMeasure::getLength\28\29 1119:SkPathBuilder::~SkPathBuilder\28\29 1120:SkPathBuilder::detach\28\29 1121:SkPathBuilder::SkPathBuilder\28\29 1122:SkPath::getGenerationID\28\29\20const 1123:SkPath::addPoly\28SkPoint\20const*\2c\20int\2c\20bool\29 1124:SkParse::FindScalars\28char\20const*\2c\20float*\2c\20int\29 1125:SkPaint::refPathEffect\28\29\20const 1126:SkPaint::operator=\28SkPaint\20const&\29 1127:SkMipmap::getLevel\28int\2c\20SkMipmap::Level*\29\20const 1128:SkKnownRuntimeEffects::GetKnownRuntimeEffect\28SkKnownRuntimeEffects::StableKey\29 1129:SkJSONWriter::endArray\28\29 1130:SkJSONWriter::appendCString\28char\20const*\2c\20char\20const*\29 1131:SkIntersections::setCoincident\28int\29 1132:SkImageInfo::computeOffset\28int\2c\20int\2c\20unsigned\20long\29\20const 1133:SkImageFilter_Base::flatten\28SkWriteBuffer&\29\20const 1134:SkImageFilter::countInputs\28\29\20const 1135:SkDrawBase::SkDrawBase\28\29 1136:SkDLine::NearPointV\28SkDPoint\20const&\2c\20double\2c\20double\2c\20double\29 1137:SkDLine::NearPointH\28SkDPoint\20const&\2c\20double\2c\20double\2c\20double\29 1138:SkDLine::ExactPointV\28SkDPoint\20const&\2c\20double\2c\20double\2c\20double\29 1139:SkDLine::ExactPointH\28SkDPoint\20const&\2c\20double\2c\20double\2c\20double\29 1140:SkColorSpaceXformSteps::apply\28SkRasterPipeline*\29\20const 1141:SkColorFilter::asAColorMode\28unsigned\20int*\2c\20SkBlendMode*\29\20const 1142:SkCodec::SkCodec\28SkEncodedInfo&&\2c\20skcms_PixelFormat\2c\20std::__2::unique_ptr>\2c\20SkEncodedOrigin\29 1143:SkCanvas::drawPicture\28SkPicture\20const*\2c\20SkMatrix\20const*\2c\20SkPaint\20const*\29 1144:SkCanvas::drawColor\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkBlendMode\29 1145:SkBulkGlyphMetrics::SkBulkGlyphMetrics\28SkStrikeSpec\20const&\29 1146:SkBlockMemoryStream::getLength\28\29\20const 1147:SkBlockAllocator::releaseBlock\28SkBlockAllocator::Block*\29 1148:SkBitmap::asImage\28\29\20const 1149:SkAAClipBlitterWrapper::SkAAClipBlitterWrapper\28SkRasterClip\20const&\2c\20SkBlitter*\29 1150:OT::MVAR::get_var\28unsigned\20int\2c\20int\20const*\2c\20unsigned\20int\29\20const 1151:GrXferProcessor::GrXferProcessor\28GrProcessor::ClassID\2c\20bool\2c\20GrProcessorAnalysisCoverage\29 1152:GrTextureEffect::Make\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkMatrix\20const&\2c\20GrSamplerState\2c\20GrCaps\20const&\2c\20float\20const*\29 1153:GrTextureEffect::MakeSubset\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkMatrix\20const&\2c\20GrSamplerState\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20GrCaps\20const&\2c\20float\20const*\29 1154:GrSimpleMeshDrawOpHelper::finalizeProcessors\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\2c\20GrProcessorAnalysisCoverage\2c\20SkRGBA4f<\28SkAlphaType\292>*\2c\20bool*\29 1155:GrResourceProvider::findResourceByUniqueKey\28skgpu::UniqueKey\20const&\29 1156:GrRecordingContext::OwnedArenas::get\28\29 1157:GrProxyProvider::createProxy\28GrBackendFormat\20const&\2c\20SkISize\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Mipmapped\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\2c\20GrInternalSurfaceFlags\2c\20GrSurfaceProxy::UseAllocator\29 1158:GrProxyProvider::assignUniqueKeyToProxy\28skgpu::UniqueKey\20const&\2c\20GrTextureProxy*\29 1159:GrProcessorSet::finalize\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\2c\20GrAppliedClip\20const*\2c\20GrUserStencilSettings\20const*\2c\20GrCaps\20const&\2c\20GrClampType\2c\20SkRGBA4f<\28SkAlphaType\292>*\29 1160:GrOpFlushState::allocator\28\29 1161:GrOp::cutChain\28\29 1162:GrMeshDrawTarget::makeVertexWriter\28unsigned\20long\2c\20int\2c\20sk_sp*\2c\20int*\29 1163:GrGpuResource::GrGpuResource\28GrGpu*\2c\20std::__2::basic_string_view>\29 1164:GrGeometryProcessor::TextureSampler::reset\28GrSamplerState\2c\20GrBackendFormat\20const&\2c\20skgpu::Swizzle\20const&\29 1165:GrGeometryProcessor::AttributeSet::end\28\29\20const 1166:GrGeometryProcessor::AttributeSet::Iter::operator++\28\29 1167:GrGeometryProcessor::AttributeSet::Iter::operator*\28\29\20const 1168:GrGLTextureParameters::set\28GrGLTextureParameters::SamplerOverriddenState\20const*\2c\20GrGLTextureParameters::NonsamplerState\20const&\2c\20unsigned\20long\20long\29 1169:GrGLSLShaderBuilder::appendTextureLookup\28GrResourceHandle\2c\20char\20const*\2c\20GrGLSLColorSpaceXformHelper*\29 1170:GrClip::GetPixelIBounds\28SkRect\20const&\2c\20GrAA\2c\20GrClip::BoundsType\29 1171:GrBackendTexture::~GrBackendTexture\28\29 1172:FT_Outline_Get_CBox 1173:FT_Get_Sfnt_Table 1174:std::__2::vector>::__destroy_vector::__destroy_vector\28std::__2::vector>&\29 1175:std::__2::moneypunct::negative_sign\5babi:v160004\5d\28\29\20const 1176:std::__2::moneypunct::neg_format\5babi:v160004\5d\28\29\20const 1177:std::__2::moneypunct::frac_digits\5babi:v160004\5d\28\29\20const 1178:std::__2::moneypunct::do_pos_format\28\29\20const 1179:std::__2::ctype::widen\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20char*\29\20const 1180:std::__2::char_traits::copy\28wchar_t*\2c\20wchar_t\20const*\2c\20unsigned\20long\29 1181:std::__2::basic_string\2c\20std::__2::allocator>::end\5babi:v160004\5d\28\29 1182:std::__2::basic_string\2c\20std::__2::allocator>::end\5babi:v160004\5d\28\29 1183:std::__2::basic_string\2c\20std::__2::allocator>::__set_size\5babi:v160004\5d\28unsigned\20long\29 1184:std::__2::basic_string\2c\20std::__2::allocator>::__assign_external\28char\20const*\2c\20unsigned\20long\29 1185:std::__2::__itoa::__append2\5babi:v160004\5d\28char*\2c\20unsigned\20int\29 1186:sktext::gpu::GlyphVector::glyphs\28\29\20const 1187:sktext::SkStrikePromise::SkStrikePromise\28sktext::SkStrikePromise&&\29 1188:skif::FilterResult::resolve\28skif::Context\20const&\2c\20skif::LayerSpace\2c\20bool\29\20const 1189:skia_png_read_finish_row 1190:skia_png_handle_unknown 1191:skia_png_gamma_correct 1192:skia_png_colorspace_sync 1193:skia_png_app_warning 1194:skia::textlayout::TextStyle::operator=\28skia::textlayout::TextStyle\20const&\29 1195:skia::textlayout::TextLine::offset\28\29\20const 1196:skia::textlayout::Run::placeholderStyle\28\29\20const 1197:skia::textlayout::Cluster::Cluster\28skia::textlayout::ParagraphImpl*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkSpan\2c\20float\2c\20float\29 1198:skgpu::ganesh::SurfaceFillContext::fillRectWithFP\28SkIRect\20const&\2c\20std::__2::unique_ptr>\29 1199:skgpu::ganesh::SurfaceDrawContext::Make\28GrRecordingContext*\2c\20GrColorType\2c\20sk_sp\2c\20SkBackingFit\2c\20SkISize\2c\20SkSurfaceProps\20const&\2c\20std::__2::basic_string_view>\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrSurfaceOrigin\2c\20skgpu::Budgeted\29 1200:skgpu::ganesh::SurfaceContext::PixelTransferResult::~PixelTransferResult\28\29 1201:skgpu::ganesh::ClipStack::SaveRecord::state\28\29\20const 1202:skcms_Matrix3x3_invert 1203:sk_doubles_nearly_equal_ulps\28double\2c\20double\2c\20unsigned\20char\29 1204:ps_parser_to_token 1205:isspace 1206:hb_face_t::load_upem\28\29\20const 1207:hb_buffer_t::merge_out_clusters\28unsigned\20int\2c\20unsigned\20int\29 1208:hb_buffer_t::enlarge\28unsigned\20int\29 1209:hb_buffer_reverse 1210:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkCanvas&\2c\20SkCanvas::PointMode\2c\20unsigned\20long\2c\20int\2c\20SkPaint&\29\2c\20SkCanvas*\2c\20SkCanvas::PointMode\2c\20unsigned\20long\2c\20int\2c\20SkPaint*\29 1211:cff_index_init 1212:cf2_glyphpath_curveTo 1213:atan2f 1214:WebPCopyPlane 1215:SkTMaskGamma_build_correcting_lut\28unsigned\20char*\2c\20unsigned\20int\2c\20float\2c\20SkColorSpaceLuminance\20const&\2c\20float\2c\20SkColorSpaceLuminance\20const&\2c\20float\29 1216:SkSurface_Raster::type\28\29\20const 1217:SkString::swap\28SkString&\29 1218:SkString::reset\28\29 1219:SkSampler::Fill\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::ZeroInitialized\29 1220:SkSL::Type::MakeTextureType\28char\20const*\2c\20SpvDim_\2c\20bool\2c\20bool\2c\20bool\2c\20SkSL::Type::TextureAccess\29 1221:SkSL::Type::MakeSpecialType\28char\20const*\2c\20char\20const*\2c\20SkSL::Type::TypeKind\29 1222:SkSL::RP::Builder::push_slots_or_immutable\28SkSL::RP::SlotRange\2c\20SkSL::RP::BuilderOp\29 1223:SkSL::RP::Builder::push_clone_from_stack\28SkSL::RP::SlotRange\2c\20int\2c\20int\29 1224:SkSL::Program::~Program\28\29 1225:SkSL::PipelineStage::PipelineStageCodeGenerator::writeStatement\28SkSL::Statement\20const&\29 1226:SkSL::Operator::isAssignment\28\29\20const 1227:SkSL::InlineCandidateAnalyzer::visitStatement\28std::__2::unique_ptr>*\2c\20bool\29 1228:SkSL::GLSLCodeGenerator::writeModifiers\28SkSL::Layout\20const&\2c\20SkSL::ModifierFlags\2c\20bool\29 1229:SkSL::ExpressionStatement::Make\28SkSL::Context\20const&\2c\20std::__2::unique_ptr>\29 1230:SkSL::ConstructorCompound::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray\29 1231:SkSL::Analysis::GetReturnComplexity\28SkSL::FunctionDefinition\20const&\29 1232:SkSL::AliasType::resolve\28\29\20const 1233:SkResourceCache::Add\28SkResourceCache::Rec*\2c\20void*\29 1234:SkRegion::writeToMemory\28void*\29\20const 1235:SkRect\20skif::Mapping::map\28SkRect\20const&\2c\20SkMatrix\20const&\29 1236:SkReadBuffer::readMatrix\28SkMatrix*\29 1237:SkReadBuffer::readBool\28\29 1238:SkRasterClip::setRect\28SkIRect\20const&\29 1239:SkRasterClip::SkRasterClip\28SkRasterClip\20const&\29 1240:SkPathMeasure::~SkPathMeasure\28\29 1241:SkPathMeasure::SkPathMeasure\28SkPath\20const&\2c\20bool\2c\20float\29 1242:SkPath::swap\28SkPath&\29 1243:SkPaint::setAlphaf\28float\29 1244:SkOpSpan::computeWindSum\28\29 1245:SkOpSegment::existing\28double\2c\20SkOpSegment\20const*\29\20const 1246:SkOpPtT::find\28SkOpSegment\20const*\29\20const 1247:SkOpCoincidence::addEndMovedSpans\28SkOpSpan\20const*\2c\20SkOpSpanBase\20const*\29 1248:SkNoDrawCanvas::onDrawImageRect2\28SkImage\20const*\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 1249:SkMakeImageFromRasterBitmap\28SkBitmap\20const&\2c\20SkCopyPixelsMode\29 1250:SkImage_Ganesh::SkImage_Ganesh\28sk_sp\2c\20unsigned\20int\2c\20GrSurfaceProxyView\2c\20SkColorInfo\29 1251:SkImageInfo::makeColorSpace\28sk_sp\29\20const 1252:SkImage::refColorSpace\28\29\20const 1253:SkGlyph::imageSize\28\29\20const 1254:SkFont::textToGlyphs\28void\20const*\2c\20unsigned\20long\2c\20SkTextEncoding\2c\20unsigned\20short*\2c\20int\29\20const 1255:SkFont::setSubpixel\28bool\29 1256:SkDraw::SkDraw\28\29 1257:SkColorTypeBytesPerPixel\28SkColorType\29 1258:SkChopQuadAt\28SkPoint\20const*\2c\20SkPoint*\2c\20float\29 1259:SkCanvas::drawImageRect\28SkImage\20const*\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 1260:SkBmpCodec::getDstRow\28int\2c\20int\29\20const 1261:SkAutoDescriptor::SkAutoDescriptor\28\29 1262:OT::DeltaSetIndexMap::sanitize\28hb_sanitize_context_t*\29\20const 1263:OT::ClassDef::sanitize\28hb_sanitize_context_t*\29\20const 1264:GrTriangulator::Comparator::sweep_lt\28SkPoint\20const&\2c\20SkPoint\20const&\29\20const 1265:GrTextureProxy::textureType\28\29\20const 1266:GrSurfaceProxy::createSurfaceImpl\28GrResourceProvider*\2c\20int\2c\20skgpu::Renderable\2c\20skgpu::Mipmapped\29\20const 1267:GrStyledShape::writeUnstyledKey\28unsigned\20int*\29\20const 1268:GrStyledShape::simplify\28\29 1269:GrSkSLFP::setInput\28std::__2::unique_ptr>\29 1270:GrSimpleMeshDrawOpHelperWithStencil::GrSimpleMeshDrawOpHelperWithStencil\28GrProcessorSet*\2c\20GrAAType\2c\20GrUserStencilSettings\20const*\2c\20GrSimpleMeshDrawOpHelper::InputFlags\29 1271:GrShape::operator=\28GrShape\20const&\29 1272:GrResourceProvider::createPatternedIndexBuffer\28unsigned\20short\20const*\2c\20int\2c\20int\2c\20int\2c\20skgpu::UniqueKey\20const*\29 1273:GrRenderTarget::~GrRenderTarget\28\29 1274:GrRecordingContextPriv::makeSC\28GrSurfaceProxyView\2c\20GrColorInfo\20const&\29 1275:GrOpFlushState::detachAppliedClip\28\29 1276:GrGpuBuffer::map\28\29 1277:GrGeometryProcessor::ProgramImpl::WriteOutputPosition\28GrGLSLVertexBuilder*\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\2c\20char\20const*\29 1278:GrGLSLShaderBuilder::declAppend\28GrShaderVar\20const&\29 1279:GrGLGpu::didDrawTo\28GrRenderTarget*\29 1280:GrFragmentProcessors::Make\28GrRecordingContext*\2c\20SkColorFilter\20const*\2c\20std::__2::unique_ptr>\2c\20GrColorInfo\20const&\2c\20SkSurfaceProps\20const&\29 1281:GrColorSpaceXformEffect::Make\28std::__2::unique_ptr>\2c\20GrColorInfo\20const&\2c\20GrColorInfo\20const&\29 1282:GrCaps::validateSurfaceParams\28SkISize\20const&\2c\20GrBackendFormat\20const&\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Mipmapped\2c\20GrTextureType\29\20const 1283:GrBufferAllocPool::putBack\28unsigned\20long\29 1284:GrBlurUtils::GaussianBlur\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20GrColorType\2c\20SkAlphaType\2c\20sk_sp\2c\20SkIRect\2c\20SkIRect\2c\20float\2c\20float\2c\20SkTileMode\2c\20SkBackingFit\29::$_0::operator\28\29\28SkIRect\2c\20SkIRect\29\20const 1285:GrAAConvexTessellator::createInsetRing\28GrAAConvexTessellator::Ring\20const&\2c\20GrAAConvexTessellator::Ring*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20bool\29 1286:FT_Stream_GetByte 1287:FT_Set_Transform 1288:FT_Add_Module 1289:CFF::CFFIndex>::sanitize\28hb_sanitize_context_t*\29\20const 1290:AlmostLessOrEqualUlps\28float\2c\20float\29 1291:ActiveEdge::intersect\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20unsigned\20short\2c\20unsigned\20short\29\20const 1292:wrapper_cmp 1293:void\20std::__2::reverse\5babi:v160004\5d\28char*\2c\20char*\29 1294:void\20std::__2::__hash_table\2c\20std::__2::equal_to\2c\20std::__2::allocator>::__do_rehash\28unsigned\20long\29 1295:ubidi_getParaLevelAtIndex_skia 1296:tanf 1297:std::__2::vector>::operator\5b\5d\5babi:v160004\5d\28unsigned\20long\29 1298:std::__2::vector>::capacity\5babi:v160004\5d\28\29\20const 1299:std::__2::ostreambuf_iterator>\20std::__2::__pad_and_output\5babi:v160004\5d>\28std::__2::ostreambuf_iterator>\2c\20wchar_t\20const*\2c\20wchar_t\20const*\2c\20wchar_t\20const*\2c\20std::__2::ios_base&\2c\20wchar_t\29 1300:std::__2::ostreambuf_iterator>\20std::__2::__pad_and_output\5babi:v160004\5d>\28std::__2::ostreambuf_iterator>\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20std::__2::ios_base&\2c\20char\29 1301:std::__2::char_traits::to_int_type\28char\29 1302:std::__2::basic_string\2c\20std::__2::allocator>::__recommend\5babi:v160004\5d\28unsigned\20long\29 1303:std::__2::basic_ios>::~basic_ios\28\29 1304:std::__2::basic_ios>::setstate\5babi:v160004\5d\28unsigned\20int\29 1305:std::__2::__compressed_pair_elem::__compressed_pair_elem\5babi:v160004\5d\28void\20\28*&&\29\28void*\29\29 1306:sktext::gpu::GlyphVector::~GlyphVector\28\29 1307:sktext::StrikeMutationMonitor::~StrikeMutationMonitor\28\29 1308:sktext::StrikeMutationMonitor::StrikeMutationMonitor\28sktext::StrikeForGPU*\29 1309:skif::LayerSpace::contains\28skif::LayerSpace\20const&\29\20const 1310:skif::Backend::~Backend\28\29.1 1311:skia_private::TArray::push_back\28skif::FilterResult::Builder::SampledFilterResult&&\29 1312:skia_private::TArray::operator=\28skia_private::TArray&&\29 1313:skia_private::STArray<2\2c\20std::__2::unique_ptr>\2c\20true>::~STArray\28\29 1314:skia_png_chunk_unknown_handling 1315:skia::textlayout::TextStyle::TextStyle\28\29 1316:skia::textlayout::TextLine::iterateThroughSingleRunByStyles\28skia::textlayout::TextLine::TextAdjustment\2c\20skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::StyleType\2c\20std::__2::function\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\20const&\29\20const 1317:skgpu::ganesh::SurfaceFillContext::internalClear\28SkIRect\20const*\2c\20std::__2::array\2c\20bool\29 1318:skgpu::ganesh::SurfaceDrawContext::fillRectToRect\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 1319:skgpu::SkSLToBackend\28SkSL::ShaderCaps\20const*\2c\20bool\20\28*\29\28SkSL::Program&\2c\20SkSL::ShaderCaps\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>*\29\2c\20char\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20SkSL::ProgramKind\2c\20SkSL::ProgramSettings\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>*\2c\20SkSL::ProgramInterface*\2c\20skgpu::ShaderErrorHandler*\29 1320:skgpu::GetApproxSize\28SkISize\29 1321:powf 1322:non-virtual\20thunk\20to\20GrOpFlushState::allocator\28\29 1323:hb_lazy_loader_t\2c\20hb_face_t\2c\2011u\2c\20hb_blob_t>::get\28\29\20const 1324:hb_lazy_loader_t\2c\20hb_face_t\2c\202u\2c\20hb_blob_t>::get\28\29\20const 1325:hb_lazy_loader_t\2c\20hb_face_t\2c\204u\2c\20hb_blob_t>::get\28\29\20const 1326:hb_font_t::scale_glyph_extents\28hb_glyph_extents_t*\29 1327:hb_font_t::get_glyph_h_origin_with_fallback\28unsigned\20int\2c\20int*\2c\20int*\29 1328:hb_buffer_append 1329:emscripten::internal::MethodInvoker\29\2c\20void\2c\20SkFont*\2c\20sk_sp>::invoke\28void\20\28SkFont::*\20const&\29\28sk_sp\29\2c\20SkFont*\2c\20sk_sp*\29 1330:emscripten::internal::Invoker::invoke\28unsigned\20long\20\28*\29\28\29\29 1331:emscripten::internal::FunctionInvoker\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkPaint\20const*\29\2c\20void\2c\20SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkPaint\20const*>::invoke\28void\20\28**\29\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkPaint\20const*\29\2c\20SkCanvas*\2c\20sk_sp*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkPaint\20const*\29 1332:cos 1333:cf2_glyphpath_lineTo 1334:byn$mgfn-shared$SkTDStorage::calculateSizeOrDie\28int\29::$_0::operator\28\29\28\29\20const 1335:alloc_small 1336:af_latin_hints_compute_segments 1337:_hb_glyph_info_set_unicode_props\28hb_glyph_info_t*\2c\20hb_buffer_t*\29 1338:__lshrti3 1339:__letf2 1340:__cxx_global_array_dtor.3 1341:\28anonymous\20namespace\29::SkBlurImageFilter::~SkBlurImageFilter\28\29 1342:SkUTF::ToUTF16\28int\2c\20unsigned\20short*\29 1343:SkTextBlobBuilder::~SkTextBlobBuilder\28\29 1344:SkTextBlobBuilder::make\28\29 1345:SkSurface::makeImageSnapshot\28\29 1346:SkString::insert\28unsigned\20long\2c\20char\20const*\2c\20unsigned\20long\29 1347:SkString::insertUnichar\28unsigned\20long\2c\20int\29 1348:SkStrikeSpec::findOrCreateScopedStrike\28sktext::StrikeForGPUCacheInterface*\29\20const 1349:SkStrikeCache::GlobalStrikeCache\28\29 1350:SkSpecialImages::MakeDeferredFromGpu\28GrRecordingContext*\2c\20SkIRect\20const&\2c\20unsigned\20int\2c\20GrSurfaceProxyView\2c\20GrColorInfo\20const&\2c\20SkSurfaceProps\20const&\29 1351:SkShader::isAImage\28SkMatrix*\2c\20SkTileMode*\29\20const 1352:SkSL::is_constant_value\28SkSL::Expression\20const&\2c\20double\29 1353:SkSL::compile_and_shrink\28SkSL::Compiler*\2c\20SkSL::ProgramKind\2c\20char\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20SkSL::Module\20const*\29 1354:SkSL::\28anonymous\20namespace\29::ReturnsOnAllPathsVisitor::visitStatement\28SkSL::Statement\20const&\29 1355:SkSL::Type::MakeScalarType\28std::__2::basic_string_view>\2c\20char\20const*\2c\20SkSL::Type::NumberKind\2c\20signed\20char\2c\20signed\20char\29 1356:SkSL::RP::Generator::pushBinaryExpression\28SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\29 1357:SkSL::RP::Builder::push_clone\28int\2c\20int\29 1358:SkSL::ProgramUsage::remove\28SkSL::Statement\20const*\29 1359:SkSL::Parser::statement\28bool\29 1360:SkSL::Operator::determineBinaryType\28SkSL::Context\20const&\2c\20SkSL::Type\20const&\2c\20SkSL::Type\20const&\2c\20SkSL::Type\20const**\2c\20SkSL::Type\20const**\2c\20SkSL::Type\20const**\29\20const 1361:SkSL::ModifierFlags::description\28\29\20const 1362:SkSL::Layout::paddedDescription\28\29\20const 1363:SkSL::FieldAccess::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20int\2c\20SkSL::FieldAccessOwnerKind\29 1364:SkSL::ConstructorCompoundCast::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>\29 1365:SkSL::Compiler::~Compiler\28\29 1366:SkSL::Analysis::IsSameExpressionTree\28SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\29 1367:SkRectPriv::Subtract\28SkIRect\20const&\2c\20SkIRect\20const&\2c\20SkIRect*\29 1368:SkPictureRecorder::SkPictureRecorder\28\29 1369:SkPictureData::~SkPictureData\28\29 1370:SkPathMeasure::nextContour\28\29 1371:SkPathMeasure::getSegment\28float\2c\20float\2c\20SkPath*\2c\20bool\29 1372:SkPathMeasure::getPosTan\28float\2c\20SkPoint*\2c\20SkPoint*\29 1373:SkPathBuilder::lineTo\28SkPoint\29 1374:SkPath::getPoint\28int\29\20const 1375:SkPath::getLastPt\28SkPoint*\29\20const 1376:SkPaint::setBlender\28sk_sp\29 1377:SkOpSegment::addT\28double\29 1378:SkNoPixelsDevice::ClipState&\20skia_private::TArray::emplace_back\28SkIRect&&\2c\20bool&&\2c\20bool&&\29 1379:SkNextID::ImageID\28\29 1380:SkMessageBus::Inbox::Inbox\28unsigned\20int\29 1381:SkJSONWriter::endObject\28\29 1382:SkImage_Lazy::generator\28\29\20const 1383:SkImage_Base::~SkImage_Base\28\29 1384:SkImage_Base::SkImage_Base\28SkImageInfo\20const&\2c\20unsigned\20int\29 1385:SkFont::getWidthsBounds\28unsigned\20short\20const*\2c\20int\2c\20float*\2c\20SkRect*\2c\20SkPaint\20const*\29\20const 1386:SkFont::getMetrics\28SkFontMetrics*\29\20const 1387:SkFont::SkFont\28sk_sp\2c\20float\29 1388:SkFont::SkFont\28\29 1389:SkDrawBase::drawRect\28SkRect\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const*\2c\20SkRect\20const*\29\20const 1390:SkDevice::setGlobalCTM\28SkM44\20const&\29 1391:SkDevice::onReadPixels\28SkPixmap\20const&\2c\20int\2c\20int\29 1392:SkDescriptor::operator==\28SkDescriptor\20const&\29\20const 1393:SkConvertPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkImageInfo\20const&\2c\20void\20const*\2c\20unsigned\20long\29 1394:SkConic::chopAt\28float\2c\20SkConic*\29\20const 1395:SkColorSpace::gammaIsLinear\28\29\20const 1396:SkColorSpace::MakeRGB\28skcms_TransferFunction\20const&\2c\20skcms_Matrix3x3\20const&\29 1397:SkCodec::fillIncompleteImage\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::ZeroInitialized\2c\20int\2c\20int\29 1398:SkCanvas::saveLayer\28SkRect\20const*\2c\20SkPaint\20const*\29 1399:SkCanvas::drawPaint\28SkPaint\20const&\29 1400:SkCanvas::ImageSetEntry::~ImageSetEntry\28\29 1401:SkBulkGlyphMetrics::glyphs\28SkSpan\29 1402:SkBlendMode_AsCoeff\28SkBlendMode\2c\20SkBlendModeCoeff*\2c\20SkBlendModeCoeff*\29 1403:SkBitmap::getGenerationID\28\29\20const 1404:SkArenaAllocWithReset::reset\28\29 1405:OT::Layout::GPOS_impl::AnchorFormat3::sanitize\28hb_sanitize_context_t*\29\20const 1406:OT::GDEF::get_glyph_props\28unsigned\20int\29\20const 1407:OT::CmapSubtable::get_glyph\28unsigned\20int\2c\20unsigned\20int*\29\20const 1408:Ins_UNKNOWN 1409:GrTextureEffect::MakeSubset\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkMatrix\20const&\2c\20GrSamplerState\2c\20SkRect\20const&\2c\20GrCaps\20const&\2c\20float\20const*\2c\20bool\29 1410:GrSurfaceProxyView::mipmapped\28\29\20const 1411:GrSurfaceProxy::instantiateImpl\28GrResourceProvider*\2c\20int\2c\20skgpu::Renderable\2c\20skgpu::Mipmapped\2c\20skgpu::UniqueKey\20const*\29 1412:GrSimpleMeshDrawOpHelperWithStencil::isCompatible\28GrSimpleMeshDrawOpHelperWithStencil\20const&\2c\20GrCaps\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20bool\29\20const 1413:GrSimpleMeshDrawOpHelperWithStencil::finalizeProcessors\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\2c\20GrProcessorAnalysisCoverage\2c\20SkRGBA4f<\28SkAlphaType\292>*\2c\20bool*\29 1414:GrShape::simplifyRect\28SkRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\2c\20unsigned\20int\29 1415:GrQuad::projectedBounds\28\29\20const 1416:GrProcessorSet::MakeEmptySet\28\29 1417:GrPorterDuffXPFactory::SimpleSrcOverXP\28\29 1418:GrPixmap::Allocate\28GrImageInfo\20const&\29 1419:GrPathTessellationShader::MakeSimpleTriangleShader\28SkArenaAlloc*\2c\20SkMatrix\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\29 1420:GrMakeCachedBitmapProxyView\28GrRecordingContext*\2c\20SkBitmap\20const&\2c\20std::__2::basic_string_view>\2c\20skgpu::Mipmapped\29 1421:GrImageInfo::operator=\28GrImageInfo&&\29 1422:GrImageInfo::makeColorType\28GrColorType\29\20const 1423:GrGpuResource::setUniqueKey\28skgpu::UniqueKey\20const&\29 1424:GrGpuResource::release\28\29 1425:GrGpuResource::isPurgeable\28\29\20const 1426:GrGeometryProcessor::textureSampler\28int\29\20const 1427:GrGeometryProcessor::AttributeSet::begin\28\29\20const 1428:GrGLSLShaderBuilder::addFeature\28unsigned\20int\2c\20char\20const*\29 1429:GrGLGpu::clearErrorsAndCheckForOOM\28\29 1430:GrGLGpu::bindSurfaceFBOForPixelOps\28GrSurface*\2c\20int\2c\20unsigned\20int\2c\20GrGLGpu::TempFBOTarget\29 1431:GrGLCompileAndAttachShader\28GrGLContext\20const&\2c\20unsigned\20int\2c\20unsigned\20int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20bool\2c\20GrThreadSafePipelineBuilder::Stats*\2c\20skgpu::ShaderErrorHandler*\29 1432:GrFragmentProcessor::MakeColor\28SkRGBA4f<\28SkAlphaType\292>\29 1433:GrDirectContextPriv::flushSurfaces\28SkSpan\2c\20SkSurfaces::BackendSurfaceAccess\2c\20GrFlushInfo\20const&\2c\20skgpu::MutableTextureState\20const*\29 1434:GrDefaultGeoProcFactory::Make\28SkArenaAlloc*\2c\20GrDefaultGeoProcFactory::Color\20const&\2c\20GrDefaultGeoProcFactory::Coverage\20const&\2c\20GrDefaultGeoProcFactory::LocalCoords\20const&\2c\20SkMatrix\20const&\29 1435:GrConvertPixels\28GrPixmap\20const&\2c\20GrCPixmap\20const&\2c\20bool\29 1436:GrColorSpaceXformEffect::Make\28std::__2::unique_ptr>\2c\20SkColorSpace*\2c\20SkAlphaType\2c\20SkColorSpace*\2c\20SkAlphaType\29 1437:GrColorInfo::GrColorInfo\28\29 1438:GrBlurUtils::convolve_gaussian_1d\28skgpu::ganesh::SurfaceFillContext*\2c\20GrSurfaceProxyView\2c\20SkIRect\20const&\2c\20SkIPoint\2c\20SkIRect\20const&\2c\20SkAlphaType\2c\20GrBlurUtils::\28anonymous\20namespace\29::Direction\2c\20int\2c\20float\2c\20SkTileMode\29 1439:GrBackendTexture::GrBackendTexture\28\29 1440:GrBackendFormat::operator=\28GrBackendFormat\20const&\29 1441:FT_Stream_Read 1442:FT_GlyphLoader_Rewind 1443:FT_Done_Face 1444:Cr_z_inflate 1445:CFF::CFFIndex>::operator\5b\5d\28unsigned\20int\29\20const 1446:void\20std::__2::__stable_sort\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::'lambda'\28\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\29&\2c\20std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>\28std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>\2c\20std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::'lambda'\28\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\29&\2c\20std::__2::iterator_traits\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>::difference_type\2c\20std::__2::iterator_traits\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>::value_type*\2c\20long\29 1447:void\20std::__2::__double_or_nothing\5babi:v160004\5d\28std::__2::unique_ptr&\2c\20unsigned\20int*&\2c\20unsigned\20int*&\29 1448:void\20hb_serialize_context_t::add_link\2c\20true>>\28OT::OffsetTo\2c\20true>&\2c\20unsigned\20int\2c\20hb_serialize_context_t::whence_t\2c\20unsigned\20int\29 1449:void\20emscripten::internal::MemberAccess::setWire\28bool\20RuntimeEffectUniform::*\20const&\2c\20RuntimeEffectUniform&\2c\20bool\29 1450:unsigned\20int\20std::__2::__sort3\5babi:v160004\5d\28skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::finish\28skia::textlayout::Block\20const&\2c\20float\2c\20float&\29::$_0&\29 1451:unsigned\20int\20std::__2::__sort3\5babi:v160004\5d\28\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::EntryComparator&\29 1452:unsigned\20int\20std::__2::__sort3\5babi:v160004\5d\28SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::Transform::\28anonymous\20namespace\29::BuiltinVariableScanner::sortNewElements\28\29::'lambda'\28SkSL::ProgramElement\20const*\2c\20SkSL::ProgramElement\20const*\29&\29 1453:unsigned\20int\20std::__2::__sort3\5babi:v160004\5d\28SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::Transform::FindAndDeclareBuiltinFunctions\28SkSL::Program&\29::$_0&\29 1454:toupper 1455:top12.2 1456:std::__2::numpunct\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 1457:std::__2::numpunct\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 1458:std::__2::default_delete\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot\20\5b\5d>::_EnableIfConvertible\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot>::type\20std::__2::default_delete\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot\20\5b\5d>::operator\28\29\5babi:v160004\5d\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot>\28skia_private::THashTable\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot*\29\20const 1459:std::__2::ctype::narrow\5babi:v160004\5d\28char\2c\20char\29\20const 1460:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28wchar_t\20const*\29 1461:std::__2::basic_string\2c\20std::__2::allocator>::__recommend\5babi:v160004\5d\28unsigned\20long\29 1462:std::__2::basic_streambuf>::~basic_streambuf\28\29 1463:std::__2::basic_streambuf>::setg\5babi:v160004\5d\28char*\2c\20char*\2c\20char*\29 1464:std::__2::__num_get::__stage2_int_loop\28wchar_t\2c\20int\2c\20char*\2c\20char*&\2c\20unsigned\20int&\2c\20wchar_t\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int*\2c\20unsigned\20int*&\2c\20wchar_t\20const*\29 1465:std::__2::__num_get::__stage2_int_loop\28char\2c\20int\2c\20char*\2c\20char*&\2c\20unsigned\20int&\2c\20char\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int*\2c\20unsigned\20int*&\2c\20char\20const*\29 1466:std::__2::__allocation_result>::pointer>\20std::__2::__allocate_at_least\5babi:v160004\5d>\28std::__2::allocator&\2c\20unsigned\20long\29 1467:std::__2::__allocation_result>::pointer>\20std::__2::__allocate_at_least\5babi:v160004\5d>\28std::__2::allocator&\2c\20unsigned\20long\29 1468:src_p\28unsigned\20char\2c\20unsigned\20char\29 1469:skif::FilterResult::analyzeBounds\28SkMatrix\20const&\2c\20SkIRect\20const&\2c\20skif::FilterResult::BoundsScope\29\20const 1470:skif::FilterResult::AutoSurface::snap\28\29 1471:skif::FilterResult::AutoSurface::AutoSurface\28skif::Context\20const&\2c\20skif::LayerSpace\20const&\2c\20skif::FilterResult::PixelBoundary\2c\20bool\2c\20SkSurfaceProps\20const*\29 1472:skia_private::THashMap::operator\5b\5d\28SkSL::Variable\20const*\20const&\29 1473:skia_private::TArray::operator=\28skia_private::TArray\20const&\29 1474:skia_private::TArray::resize_back\28int\29 1475:skia_private::TArray::operator=\28skia_private::TArray&&\29 1476:skia_png_get_valid 1477:skia_png_gamma_8bit_correct 1478:skia_png_free_data 1479:skia_png_chunk_warning 1480:skia::textlayout::TextLine::measureTextInsideOneRun\28skia::textlayout::SkRange\2c\20skia::textlayout::Run\20const*\2c\20float\2c\20float\2c\20bool\2c\20skia::textlayout::TextLine::TextAdjustment\29\20const 1481:skia::textlayout::Run::positionX\28unsigned\20long\29\20const 1482:skia::textlayout::Run::Run\28skia::textlayout::ParagraphImpl*\2c\20SkShaper::RunHandler::RunInfo\20const&\2c\20unsigned\20long\2c\20float\2c\20bool\2c\20float\2c\20unsigned\20long\2c\20float\29 1483:skia::textlayout::ParagraphCacheKey::operator==\28skia::textlayout::ParagraphCacheKey\20const&\29\20const 1484:skia::textlayout::FontCollection::enableFontFallback\28\29 1485:skgpu::tess::PatchWriter\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\294>\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\298>\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\2964>\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\2932>\2c\20skgpu::tess::ReplicateLineEndPoints\2c\20skgpu::tess::TrackJoinControlPoints>::chopAndWriteCubics\28skvx::Vec<2\2c\20float>\2c\20skvx::Vec<2\2c\20float>\2c\20skvx::Vec<2\2c\20float>\2c\20skvx::Vec<2\2c\20float>\2c\20int\29 1486:skgpu::ganesh::SmallPathAtlasMgr::reset\28\29 1487:skgpu::ganesh::QuadPerEdgeAA::VertexSpec::vertexSize\28\29\20const 1488:skgpu::ganesh::Device::readSurfaceView\28\29 1489:skgpu::ganesh::ClipStack::clip\28skgpu::ganesh::ClipStack::RawElement&&\29 1490:skgpu::ganesh::ClipStack::RawElement::contains\28skgpu::ganesh::ClipStack::RawElement\20const&\29\20const 1491:skgpu::ganesh::ClipStack::RawElement::RawElement\28SkMatrix\20const&\2c\20GrShape\20const&\2c\20GrAA\2c\20SkClipOp\29 1492:skgpu::TAsyncReadResult::Plane&\20skia_private::TArray::Plane\2c\20false>::emplace_back\2c\20unsigned\20long&>\28sk_sp&&\2c\20unsigned\20long&\29 1493:skgpu::Swizzle::asString\28\29\20const 1494:skgpu::ScratchKey::GenerateResourceType\28\29 1495:skgpu::GetBlendFormula\28bool\2c\20bool\2c\20SkBlendMode\29 1496:select_curve_ops\28skcms_Curve\20const*\2c\20int\2c\20OpAndArg*\29 1497:sbrk 1498:ps_tofixedarray 1499:processPropertySeq\28UBiDi*\2c\20LevState*\2c\20unsigned\20char\2c\20int\2c\20int\29 1500:png_format_buffer 1501:png_check_keyword 1502:nextafterf 1503:jpeg_huff_decode 1504:hb_unicode_funcs_destroy 1505:hb_serialize_context_t::pop_discard\28\29 1506:hb_buffer_set_flags 1507:hb_blob_create_sub_blob 1508:hb_array_t::hash\28\29\20const 1509:hairquad\28SkPoint\20const*\2c\20SkRegion\20const*\2c\20SkRect\20const*\2c\20SkRect\20const*\2c\20SkBlitter*\2c\20int\2c\20void\20\28*\29\28SkPoint\20const*\2c\20int\2c\20SkRegion\20const*\2c\20SkBlitter*\29\29 1510:haircubic\28SkPoint\20const*\2c\20SkRegion\20const*\2c\20SkRect\20const*\2c\20SkRect\20const*\2c\20SkBlitter*\2c\20int\2c\20void\20\28*\29\28SkPoint\20const*\2c\20int\2c\20SkRegion\20const*\2c\20SkBlitter*\29\29 1511:fmt_u 1512:flush_pending 1513:emscripten::internal::Invoker>::invoke\28sk_sp\20\28*\29\28\29\29 1514:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkPath&\29\2c\20SkPath*\29 1515:do_fixed 1516:destroy_face 1517:decltype\28fp\28\28SkRecords::NoOp*\29\28nullptr\29\29\29\20SkRecord::Record::mutate\28SkRecord::Destroyer&\29 1518:char*\20const&\20std::__2::max\5babi:v160004\5d\28char*\20const&\2c\20char*\20const&\29 1519:cf2_stack_pushInt 1520:cf2_interpT2CharString 1521:cf2_glyphpath_moveTo 1522:byn$mgfn-shared$SkSL::ConstructorArrayCast::clone\28SkSL::Position\29\20const 1523:byn$mgfn-shared$GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::onMakeProgramImpl\28\29\20const 1524:bool\20hb_hashmap_t::set_with_hash\28unsigned\20int\20const&\2c\20unsigned\20int\2c\20unsigned\20int\20const&\2c\20bool\29 1525:bool\20emscripten::internal::MemberAccess::getWire\28bool\20RuntimeEffectUniform::*\20const&\2c\20RuntimeEffectUniform\20const&\29 1526:_hb_ot_metrics_get_position_common\28hb_font_t*\2c\20hb_ot_metrics_tag_t\2c\20int*\29 1527:__tandf 1528:__floatunsitf 1529:__cxa_allocate_exception 1530:\28anonymous\20namespace\29::PathGeoBuilder::createMeshAndPutBackReserve\28\29 1531:\28anonymous\20namespace\29::MeshOp::fixedFunctionFlags\28\29\20const 1532:\28anonymous\20namespace\29::DrawAtlasOpImpl::fixedFunctionFlags\28\29\20const 1533:WebPDemuxGetI 1534:VP8LDoFillBitWindow 1535:VP8LClear 1536:TT_Get_MM_Var 1537:SkWStream::writeScalar\28float\29 1538:SkUTF::UTF8ToUTF16\28unsigned\20short*\2c\20int\2c\20char\20const*\2c\20unsigned\20long\29 1539:SkTypeface::MakeEmpty\28\29 1540:SkTSect::BinarySearch\28SkTSect*\2c\20SkTSect*\2c\20SkIntersections*\29 1541:SkTConic::operator\5b\5d\28int\29\20const 1542:SkTBlockList::reset\28\29 1543:SkTBlockList::reset\28\29 1544:SkSurfaces::RenderTarget\28GrRecordingContext*\2c\20skgpu::Budgeted\2c\20SkImageInfo\20const&\2c\20int\2c\20GrSurfaceOrigin\2c\20SkSurfaceProps\20const*\2c\20bool\2c\20bool\29 1545:SkString::insertU32\28unsigned\20long\2c\20unsigned\20int\29 1546:SkShaders::MatrixRec::applyForFragmentProcessor\28SkMatrix\20const&\29\20const 1547:SkScan::FillRect\28SkRect\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 1548:SkScan::FillIRect\28SkIRect\20const&\2c\20SkRegion\20const*\2c\20SkBlitter*\29 1549:SkSL::optimize_comparison\28SkSL::Context\20const&\2c\20std::__2::array\20const&\2c\20bool\20\28*\29\28double\2c\20double\29\29 1550:SkSL::Type::convertArraySize\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Position\2c\20long\20long\29\20const 1551:SkSL::RP::Builder::dot_floats\28int\29 1552:SkSL::ProgramUsage::get\28SkSL::FunctionDeclaration\20const&\29\20const 1553:SkSL::Parser::type\28SkSL::Modifiers*\29 1554:SkSL::Parser::modifiers\28\29 1555:SkSL::ConstructorDiagonalMatrix::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>\29 1556:SkSL::ConstructorArrayCast::~ConstructorArrayCast\28\29 1557:SkSL::ConstantFolder::MakeConstantValueForVariable\28SkSL::Position\2c\20std::__2::unique_ptr>\29 1558:SkSL::Compiler::Compiler\28\29 1559:SkSL::Analysis::IsTrivialExpression\28SkSL::Expression\20const&\29 1560:SkRuntimeEffectPriv::CanDraw\28SkCapabilities\20const*\2c\20SkRuntimeEffect\20const*\29 1561:SkRegion::setPath\28SkPath\20const&\2c\20SkRegion\20const&\29 1562:SkRegion::operator=\28SkRegion\20const&\29 1563:SkRegion::op\28SkRegion\20const&\2c\20SkRegion\20const&\2c\20SkRegion::Op\29 1564:SkRegion::Iterator::next\28\29 1565:SkRasterPipeline::compile\28\29\20const 1566:SkRasterPipeline::appendClampIfNormalized\28SkImageInfo\20const&\29 1567:SkRRect::transform\28SkMatrix\20const&\2c\20SkRRect*\29\20const 1568:SkPictureRecorder::beginRecording\28SkRect\20const&\2c\20SkBBHFactory*\29 1569:SkPathWriter::finishContour\28\29 1570:SkPathStroker::cubicPerpRay\28SkPoint\20const*\2c\20float\2c\20SkPoint*\2c\20SkPoint*\2c\20SkPoint*\29\20const 1571:SkPath::getSegmentMasks\28\29\20const 1572:SkPath::addRRect\28SkRRect\20const&\2c\20SkPathDirection\29 1573:SkPaintPriv::ComputeLuminanceColor\28SkPaint\20const&\29 1574:SkPaint::nothingToDraw\28\29\20const 1575:SkPaint::isSrcOver\28\29\20const 1576:SkOpAngle::linesOnOriginalSide\28SkOpAngle\20const*\29 1577:SkNotifyBitmapGenIDIsStale\28unsigned\20int\29 1578:SkNoDrawCanvas::onDrawPatch\28SkPoint\20const*\2c\20unsigned\20int\20const*\2c\20SkPoint\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 1579:SkMipmap::Build\28SkPixmap\20const&\2c\20SkDiscardableMemory*\20\28*\29\28unsigned\20long\29\2c\20bool\29 1580:SkMeshSpecification::~SkMeshSpecification\28\29 1581:SkMatrix::setSinCos\28float\2c\20float\2c\20float\2c\20float\29 1582:SkMatrix::setRSXform\28SkRSXform\20const&\29 1583:SkMatrix::mapHomogeneousPoints\28SkPoint3*\2c\20SkPoint3\20const*\2c\20int\29\20const 1584:SkMaskBuilder::AllocImage\28unsigned\20long\2c\20SkMaskBuilder::AllocType\29 1585:SkKnownRuntimeEffects::\28anonymous\20namespace\29::make_blur_2D_effect\28int\2c\20SkRuntimeEffect::Options\20const&\29 1586:SkKnownRuntimeEffects::\28anonymous\20namespace\29::make_blur_1D_effect\28int\2c\20SkRuntimeEffect::Options\20const&\29 1587:SkJSONWriter::appendString\28char\20const*\2c\20unsigned\20long\29 1588:SkIntersections::insertNear\28double\2c\20double\2c\20SkDPoint\20const&\2c\20SkDPoint\20const&\29 1589:SkIntersections::flip\28\29 1590:SkImageInfo::Make\28SkISize\2c\20SkColorType\2c\20SkAlphaType\2c\20sk_sp\29 1591:SkImageFilters::Empty\28\29 1592:SkImageFilter_Base::~SkImageFilter_Base\28\29 1593:SkImage::isAlphaOnly\28\29\20const 1594:SkGlyph::drawable\28\29\20const 1595:SkFont::unicharToGlyph\28int\29\20const 1596:SkFont::setTypeface\28sk_sp\29 1597:SkFont::setHinting\28SkFontHinting\29 1598:SkFindQuadMaxCurvature\28SkPoint\20const*\29 1599:SkEvalCubicAt\28SkPoint\20const*\2c\20float\2c\20SkPoint*\2c\20SkPoint*\2c\20SkPoint*\29 1600:SkDrawTiler::stepAndSetupTileDraw\28\29 1601:SkDrawTiler::SkDrawTiler\28SkBitmapDevice*\2c\20SkRect\20const*\29 1602:SkDevice::accessPixels\28SkPixmap*\29 1603:SkDeque::SkDeque\28unsigned\20long\2c\20void*\2c\20unsigned\20long\2c\20int\29 1604:SkDCubic::FindExtrema\28double\20const*\2c\20double*\29 1605:SkColorFilters::Blend\28unsigned\20int\2c\20SkBlendMode\29 1606:SkCodec::getPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const*\29 1607:SkCanvas::internalRestore\28\29 1608:SkCanvas::init\28sk_sp\29 1609:SkCanvas::drawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 1610:SkCanvas::clipRect\28SkRect\20const&\2c\20SkClipOp\2c\20bool\29 1611:SkCanvas::aboutToDraw\28SkPaint\20const&\2c\20SkRect\20const*\2c\20SkEnumBitMask\29 1612:SkBitmap::operator=\28SkBitmap&&\29 1613:SkBinaryWriteBuffer::~SkBinaryWriteBuffer\28\29 1614:SkAutoPixmapStorage::tryAlloc\28SkImageInfo\20const&\29 1615:SkAAClip::SkAAClip\28\29 1616:OT::glyf_accelerator_t::glyf_accelerator_t\28hb_face_t*\29 1617:OT::VariationStore::sanitize\28hb_sanitize_context_t*\29\20const 1618:OT::Layout::GPOS_impl::ValueFormat::sanitize_value_devices\28hb_sanitize_context_t*\2c\20void\20const*\2c\20OT::IntType\20const*\29\20const 1619:OT::Layout::GPOS_impl::ValueFormat::apply_value\28OT::hb_ot_apply_context_t*\2c\20void\20const*\2c\20OT::IntType\20const*\2c\20hb_glyph_position_t&\29\20const 1620:OT::HVARVVAR::sanitize\28hb_sanitize_context_t*\29\20const 1621:GrTriangulator::VertexList::insert\28GrTriangulator::Vertex*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::Vertex*\29 1622:GrTriangulator::Poly::addEdge\28GrTriangulator::Edge*\2c\20GrTriangulator::Side\2c\20GrTriangulator*\29 1623:GrTriangulator::EdgeList::remove\28GrTriangulator::Edge*\29 1624:GrStyledShape::operator=\28GrStyledShape\20const&\29 1625:GrSimpleMeshDrawOpHelperWithStencil::createProgramInfoWithStencil\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrGeometryProcessor*\2c\20GrPrimitiveType\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 1626:GrResourceCache::purgeAsNeeded\28\29 1627:GrRenderTask::addDependency\28GrDrawingManager*\2c\20GrSurfaceProxy*\2c\20skgpu::Mipmapped\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29 1628:GrRenderTask::GrRenderTask\28\29 1629:GrRenderTarget::onRelease\28\29 1630:GrProxyProvider::findOrCreateProxyByUniqueKey\28skgpu::UniqueKey\20const&\2c\20GrSurfaceProxy::UseAllocator\29 1631:GrProcessorSet::operator==\28GrProcessorSet\20const&\29\20const 1632:GrPathUtils::generateQuadraticPoints\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20SkPoint**\2c\20unsigned\20int\29 1633:GrMeshDrawOp::QuadHelper::QuadHelper\28GrMeshDrawTarget*\2c\20unsigned\20long\2c\20int\29 1634:GrIsStrokeHairlineOrEquivalent\28GrStyle\20const&\2c\20SkMatrix\20const&\2c\20float*\29 1635:GrImageContext::abandoned\28\29 1636:GrGpuResource::registerWithCache\28skgpu::Budgeted\29 1637:GrGpuBuffer::isMapped\28\29\20const 1638:GrGpu::submitToGpu\28GrSyncCpu\29 1639:GrGpu::didWriteToSurface\28GrSurface*\2c\20GrSurfaceOrigin\2c\20SkIRect\20const*\2c\20unsigned\20int\29\20const 1640:GrGeometryProcessor::ProgramImpl::setupUniformColor\28GrGLSLFPFragmentBuilder*\2c\20GrGLSLUniformHandler*\2c\20char\20const*\2c\20GrResourceHandle*\29 1641:GrGLGpu::flushRenderTarget\28GrGLRenderTarget*\2c\20bool\29 1642:GrFragmentProcessor::visitTextureEffects\28std::__2::function\20const&\29\20const 1643:GrFragmentProcessor::visitProxies\28std::__2::function\20const&\29\20const 1644:GrCpuBuffer::ref\28\29\20const 1645:GrBufferAllocPool::makeSpace\28unsigned\20long\2c\20unsigned\20long\2c\20sk_sp*\2c\20unsigned\20long*\29 1646:GrBackendTextures::GetGLTextureInfo\28GrBackendTexture\20const&\2c\20GrGLTextureInfo*\29 1647:FilterLoop26_C 1648:FT_Vector_Transform 1649:FT_Vector_NormLen 1650:FT_Outline_Transform 1651:CFF::dict_opset_t::process_op\28unsigned\20int\2c\20CFF::interp_env_t&\29 1652:AlmostBetweenUlps\28float\2c\20float\2c\20float\29 1653:void\20std::__2::vector>::__emplace_back_slow_path\28skia::textlayout::OneLineShaper::RunBlock&\29 1654:ubidi_getMemory_skia 1655:transform\28unsigned\20int*\2c\20unsigned\20char\20const*\29 1656:strcspn 1657:std::__2::vector>::__append\28unsigned\20long\29 1658:std::__2::unique_ptr>\20SkSL::coalesce_pairwise_vectors\28std::__2::array\20const&\2c\20double\2c\20SkSL::Type\20const&\2c\20double\20\28*\29\28double\2c\20double\2c\20double\29\2c\20double\20\28*\29\28double\29\29 1659:std::__2::locale::locale\28std::__2::locale\20const&\29 1660:std::__2::locale::classic\28\29 1661:std::__2::codecvt::do_unshift\28__mbstate_t&\2c\20char*\2c\20char*\2c\20char*&\29\20const 1662:std::__2::chrono::__libcpp_steady_clock_now\28\29 1663:std::__2::basic_string\2c\20std::__2::allocator>::__grow_by_and_replace\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20char\20const*\29 1664:std::__2::basic_string\2c\20std::__2::allocator>::__fits_in_sso\5babi:v160004\5d\28unsigned\20long\29 1665:std::__2::__wrap_iter::operator++\5babi:v160004\5d\28\29 1666:std::__2::__wrap_iter\20std::__2::vector>::insert\28std::__2::__wrap_iter\2c\20float\20const*\2c\20float\20const*\29 1667:std::__2::__wrap_iter::operator++\5babi:v160004\5d\28\29 1668:std::__2::__throw_bad_variant_access\5babi:v160004\5d\28\29 1669:std::__2::__split_buffer>::push_front\28skia::textlayout::OneLineShaper::RunBlock*&&\29 1670:std::__2::__shared_count::__release_shared\5babi:v160004\5d\28\29 1671:std::__2::__num_get::__stage2_int_prep\28std::__2::ios_base&\2c\20wchar_t&\29 1672:std::__2::__num_get::__do_widen\28std::__2::ios_base&\2c\20wchar_t*\29\20const 1673:std::__2::__num_get::__stage2_int_prep\28std::__2::ios_base&\2c\20char&\29 1674:std::__2::__itoa::__append1\5babi:v160004\5d\28char*\2c\20unsigned\20int\29 1675:sktext::gpu::VertexFiller::vertexStride\28SkMatrix\20const&\29\20const 1676:skif::Mapping::adjustLayerSpace\28SkMatrix\20const&\29 1677:skif::LayerSpace::round\28\29\20const 1678:skif::FilterResult::Builder::~Builder\28\29 1679:skif::FilterResult::Builder::Builder\28skif::Context\20const&\29 1680:skia_private::THashTable\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair\2c\20SkSL::Type\20const*\2c\20skia_private::THashMap\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair>::uncheckedSet\28skia_private::THashMap\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair&&\29 1681:skia_private::THashTable::AdaptedTraits>::removeIfExists\28skgpu::UniqueKey\20const&\29 1682:skia_private::TArray\2c\20true>::operator=\28skia_private::TArray\2c\20true>&&\29 1683:skia_private::TArray::resize_back\28int\29 1684:skia_private::TArray::push_back_raw\28int\29 1685:skia_png_sig_cmp 1686:skia_png_set_progressive_read_fn 1687:skia_png_set_longjmp_fn 1688:skia_png_set_interlace_handling 1689:skia_png_reciprocal 1690:skia_png_read_chunk_header 1691:skia_png_get_io_ptr 1692:skia_png_calloc 1693:skia::textlayout::TextLine::~TextLine\28\29 1694:skia::textlayout::ParagraphStyle::ParagraphStyle\28skia::textlayout::ParagraphStyle\20const&\29 1695:skia::textlayout::ParagraphCacheKey::~ParagraphCacheKey\28\29 1696:skia::textlayout::FontCollection::findTypefaces\28std::__2::vector>\20const&\2c\20SkFontStyle\2c\20std::__2::optional\20const&\29 1697:skia::textlayout::Cluster::trimmedWidth\28unsigned\20long\29\20const 1698:skgpu::ganesh::TextureOp::BatchSizeLimiter::createOp\28GrTextureSetEntry*\2c\20int\2c\20GrAAType\29 1699:skgpu::ganesh::SurfaceFillContext::fillWithFP\28std::__2::unique_ptr>\29 1700:skgpu::ganesh::SurfaceDrawContext::drawShapeUsingPathRenderer\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20GrStyledShape&&\2c\20bool\29 1701:skgpu::ganesh::SurfaceDrawContext::drawRect\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20GrStyle\20const*\29 1702:skgpu::ganesh::SurfaceDrawContext::drawRRect\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkRRect\20const&\2c\20GrStyle\20const&\29 1703:skgpu::ganesh::SurfaceContext::transferPixels\28GrColorType\2c\20SkIRect\20const&\29 1704:skgpu::ganesh::QuadPerEdgeAA::CalcIndexBufferOption\28GrAAType\2c\20int\29 1705:skgpu::ganesh::LockTextureProxyView\28GrRecordingContext*\2c\20SkImage_Lazy\20const*\2c\20GrImageTexGenPolicy\2c\20skgpu::Mipmapped\29::$_0::operator\28\29\28GrSurfaceProxyView\20const&\29\20const 1706:skgpu::ganesh::Device::targetProxy\28\29 1707:skgpu::ganesh::ClipStack::getConservativeBounds\28\29\20const 1708:skgpu::TAsyncReadResult::addTransferResult\28skgpu::ganesh::SurfaceContext::PixelTransferResult\20const&\2c\20SkISize\2c\20unsigned\20long\2c\20skgpu::TClientMappedBufferManager*\29 1709:skgpu::Plot::resetRects\28\29 1710:skcms_TransferFunction_isPQish 1711:skcms_TransferFunction_invert 1712:skcms_Matrix3x3_concat 1713:ps_dimension_add_t1stem 1714:log2f 1715:log 1716:jcopy_sample_rows 1717:hb_font_t::has_func\28unsigned\20int\29 1718:hb_buffer_create_similar 1719:getenv 1720:ft_service_list_lookup 1721:fseek 1722:fiprintf 1723:fflush 1724:expm1 1725:emscripten::internal::MethodInvoker::invoke\28void\20\28GrDirectContext::*\20const&\29\28\29\2c\20GrDirectContext*\29 1726:emscripten::internal::FunctionInvoker\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29\2c\20void\2c\20SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*>::invoke\28void\20\28**\29\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29\2c\20SkCanvas*\2c\20sk_sp*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29 1727:emscripten::internal::FunctionInvoker::invoke\28emscripten::val\20\28**\29\28SkFont&\29\2c\20SkFont*\29 1728:do_putc 1729:crc32_z 1730:cf2_hintmap_insertHint 1731:cf2_hintmap_build 1732:cf2_glyphpath_pushPrevElem 1733:byn$mgfn-shared$std::__2::__function::__func\20const&\29::$_0\2c\20std::__2::allocator\20const&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 1734:byn$mgfn-shared$std::__2::__function::__func\20const&\29::$_0\2c\20std::__2::allocator\20const&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 1735:byn$mgfn-shared$std::__2::__function::__func\2c\20void\20\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29>::__clone\28std::__2::__function::__base*\29\20const 1736:byn$mgfn-shared$std::__2::__function::__func\2c\20void\20\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29>::__clone\28\29\20const 1737:byn$mgfn-shared$skif::\28anonymous\20namespace\29::RasterBackend::~RasterBackend\28\29 1738:byn$mgfn-shared$skif::Backend::~Backend\28\29.1 1739:byn$mgfn-shared$skgpu::ganesh::\28anonymous\20namespace\29::QuadEdgeEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const 1740:append_multitexture_lookup\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20int\2c\20GrGLSLVarying\20const&\2c\20char\20const*\2c\20char\20const*\29 1741:afm_stream_read_one 1742:af_latin_hints_link_segments 1743:af_latin_compute_stem_width 1744:af_glyph_hints_reload 1745:acosf 1746:__wasi_syscall_ret 1747:__syscall_ret 1748:__sin 1749:__cos 1750:VP8LHuffmanTablesDeallocate 1751:SkWriter32::writeSampling\28SkSamplingOptions\20const&\29 1752:SkVertices::Builder::detach\28\29 1753:SkUTF::NextUTF8WithReplacement\28char\20const**\2c\20char\20const*\29 1754:SkTypeface_FreeType::~SkTypeface_FreeType\28\29 1755:SkTypeface_FreeType::FaceRec::~FaceRec\28\29 1756:SkTypeface::SkTypeface\28SkFontStyle\20const&\2c\20bool\29 1757:SkTreatAsSprite\28SkMatrix\20const&\2c\20SkISize\20const&\2c\20SkSamplingOptions\20const&\2c\20bool\29 1758:SkTextBlobBuilder::TightRunBounds\28SkTextBlob::RunRecord\20const&\29 1759:SkTextBlob::RunRecord::textSizePtr\28\29\20const 1760:SkTMultiMap::remove\28skgpu::ScratchKey\20const&\2c\20GrGpuResource\20const*\29 1761:SkTMultiMap::insert\28skgpu::ScratchKey\20const&\2c\20GrGpuResource*\29 1762:SkTDStorage::insert\28int\2c\20int\2c\20void\20const*\29 1763:SkTDPQueue<\28anonymous\20namespace\29::RunIteratorQueue::Entry\2c\20&\28anonymous\20namespace\29::RunIteratorQueue::CompareEntry\28\28anonymous\20namespace\29::RunIteratorQueue::Entry\20const&\2c\20\28anonymous\20namespace\29::RunIteratorQueue::Entry\20const&\29\2c\20\28int*\20\28*\29\28\28anonymous\20namespace\29::RunIteratorQueue::Entry\20const&\29\290>::insert\28\28anonymous\20namespace\29::RunIteratorQueue::Entry\29 1764:SkSwizzler::Make\28SkEncodedInfo\20const&\2c\20unsigned\20int\20const*\2c\20SkImageInfo\20const&\2c\20SkCodec::Options\20const&\2c\20SkIRect\20const*\29 1765:SkSurface_Base::~SkSurface_Base\28\29 1766:SkSurface::recordingContext\28\29\20const 1767:SkString::resize\28unsigned\20long\29 1768:SkStrikeSpec::SkStrikeSpec\28SkFont\20const&\2c\20SkPaint\20const&\2c\20SkSurfaceProps\20const&\2c\20SkScalerContextFlags\2c\20SkMatrix\20const&\29 1769:SkStrikeSpec::MakeMask\28SkFont\20const&\2c\20SkPaint\20const&\2c\20SkSurfaceProps\20const&\2c\20SkScalerContextFlags\2c\20SkMatrix\20const&\29 1770:SkStrikeSpec::MakeCanonicalized\28SkFont\20const&\2c\20SkPaint\20const*\29 1771:SkStrikeCache::findOrCreateStrike\28SkStrikeSpec\20const&\29 1772:SkSpecialImages::MakeFromRaster\28SkIRect\20const&\2c\20SkBitmap\20const&\2c\20SkSurfaceProps\20const&\29 1773:SkShaders::MatrixRec::apply\28SkStageRec\20const&\2c\20SkMatrix\20const&\29\20const 1774:SkShaders::MatrixRec::MatrixRec\28SkMatrix\20const&\29 1775:SkShaders::Blend\28SkBlendMode\2c\20sk_sp\2c\20sk_sp\29 1776:SkScan::FillPath\28SkPath\20const&\2c\20SkRegion\20const&\2c\20SkBlitter*\29 1777:SkScalerContext_FreeType::emboldenIfNeeded\28FT_FaceRec_*\2c\20FT_GlyphSlotRec_*\2c\20unsigned\20short\29 1778:SkSL::Type::displayName\28\29\20const 1779:SkSL::Type::checkForOutOfRangeLiteral\28SkSL::Context\20const&\2c\20double\2c\20SkSL::Position\29\20const 1780:SkSL::SymbolTable::find\28std::__2::basic_string_view>\29\20const 1781:SkSL::String::Separator\28\29::Output::~Output\28\29 1782:SkSL::RP::SlotManager::addSlotDebugInfoForGroup\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20SkSL::Type\20const&\2c\20SkSL::Position\2c\20int*\2c\20bool\29 1783:SkSL::RP::Generator::foldComparisonOp\28SkSL::Operator\2c\20int\29 1784:SkSL::RP::Builder::branch_if_no_lanes_active\28int\29 1785:SkSL::PrefixExpression::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Operator\2c\20std::__2::unique_ptr>\29 1786:SkSL::PipelineStage::PipelineStageCodeGenerator::typedVariable\28SkSL::Type\20const&\2c\20std::__2::basic_string_view>\29 1787:SkSL::Parser::parseArrayDimensions\28SkSL::Position\2c\20SkSL::Type\20const**\29 1788:SkSL::Parser::arraySize\28long\20long*\29 1789:SkSL::Operator::operatorName\28\29\20const 1790:SkSL::ModifierFlags::paddedDescription\28\29\20const 1791:SkSL::ConstantFolder::GetConstantValue\28SkSL::Expression\20const&\2c\20double*\29 1792:SkSL::ConstantFolder::GetConstantInt\28SkSL::Expression\20const&\2c\20long\20long*\29 1793:SkSL::Compiler::convertProgram\28SkSL::ProgramKind\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20SkSL::ProgramSettings\20const&\29 1794:SkRuntimeEffect::findChild\28std::__2::basic_string_view>\29\20const 1795:SkResourceCache::remove\28SkResourceCache::Rec*\29 1796:SkRegion::op\28SkRegion\20const&\2c\20SkIRect\20const&\2c\20SkRegion::Op\29 1797:SkRegion::Iterator::Iterator\28SkRegion\20const&\29 1798:SkRecords::FillBounds::bounds\28SkRecords::DrawArc\20const&\29\20const 1799:SkReadBuffer::setMemory\28void\20const*\2c\20unsigned\20long\29 1800:SkRasterClip::SkRasterClip\28SkIRect\20const&\29 1801:SkRRect::writeToMemory\28void*\29\20const 1802:SkRRect::setRectXY\28SkRect\20const&\2c\20float\2c\20float\29 1803:SkPointPriv::DistanceToLineBetweenSqd\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPointPriv::Side*\29 1804:SkPoint::setNormalize\28float\2c\20float\29 1805:SkPixmapUtils::SwapWidthHeight\28SkImageInfo\20const&\29 1806:SkPictureRecorder::finishRecordingAsPicture\28\29 1807:SkPathPriv::ComputeFirstDirection\28SkPath\20const&\29 1808:SkPathEffect::asADash\28SkPathEffect::DashInfo*\29\20const 1809:SkPathEdgeIter::SkPathEdgeIter\28SkPath\20const&\29 1810:SkPath::rewind\28\29 1811:SkPath::isLine\28SkPoint*\29\20const 1812:SkPath::incReserve\28int\2c\20int\2c\20int\29 1813:SkPath::addOval\28SkRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\29 1814:SkPaint::setStrokeCap\28SkPaint::Cap\29 1815:SkPaint::refShader\28\29\20const 1816:SkOpSpan::setWindSum\28int\29 1817:SkOpSegment::markAndChaseWinding\28SkOpSpanBase*\2c\20SkOpSpanBase*\2c\20int\2c\20int\2c\20SkOpSpanBase**\29 1818:SkOpContourBuilder::addCurve\28SkPath::Verb\2c\20SkPoint\20const*\2c\20float\29 1819:SkOpAngle::starter\28\29 1820:SkOpAngle::insert\28SkOpAngle*\29 1821:SkNoDestructor::SkNoDestructor\28SkSL::String::Separator\28\29::Output&&\29 1822:SkMatrix::setSinCos\28float\2c\20float\29 1823:SkMatrix::decomposeScale\28SkSize*\2c\20SkMatrix*\29\20const 1824:SkMaskFilterBase::getFlattenableType\28\29\20const 1825:SkMaskFilter::MakeBlur\28SkBlurStyle\2c\20float\2c\20bool\29 1826:SkMallocPixelRef::MakeAllocate\28SkImageInfo\20const&\2c\20unsigned\20long\29 1827:SkMD5::write\28void\20const*\2c\20unsigned\20long\29 1828:SkLineClipper::IntersectLine\28SkPoint\20const*\2c\20SkRect\20const&\2c\20SkPoint*\29 1829:SkImage_GaneshBase::SkImage_GaneshBase\28sk_sp\2c\20SkImageInfo\2c\20unsigned\20int\29 1830:SkImageGenerator::onRefEncodedData\28\29 1831:SkImage::makeShader\28SkTileMode\2c\20SkTileMode\2c\20SkSamplingOptions\20const&\2c\20SkMatrix\20const&\29\20const 1832:SkImage::makeRasterImage\28GrDirectContext*\2c\20SkImage::CachingHint\29\20const 1833:SkIDChangeListener::SkIDChangeListener\28\29 1834:SkIDChangeListener::List::reset\28\29 1835:SkGradientBaseShader::flatten\28SkWriteBuffer&\29\20const 1836:SkFontMgr::RefEmpty\28\29 1837:SkFont::setEdging\28SkFont::Edging\29 1838:SkEvalQuadAt\28SkPoint\20const*\2c\20float\29 1839:SkEncodedInfo::makeImageInfo\28\29\20const 1840:SkEdgeClipper::next\28SkPoint*\29 1841:SkDevice::scalerContextFlags\28\29\20const 1842:SkConic::evalAt\28float\2c\20SkPoint*\2c\20SkPoint*\29\20const 1843:SkColorInfo::SkColorInfo\28SkColorType\2c\20SkAlphaType\2c\20sk_sp\29 1844:SkCodec::skipScanlines\28int\29 1845:SkChopCubicAtHalf\28SkPoint\20const*\2c\20SkPoint*\29 1846:SkCapabilities::RasterBackend\28\29 1847:SkCanvas::topDevice\28\29\20const 1848:SkCanvas::saveLayer\28SkCanvas::SaveLayerRec\20const&\29 1849:SkCanvas::restore\28\29 1850:SkCanvas::imageInfo\28\29\20const 1851:SkCanvas::drawTextBlob\28SkTextBlob\20const*\2c\20float\2c\20float\2c\20SkPaint\20const&\29 1852:SkCanvas::drawDrawable\28SkDrawable*\2c\20SkMatrix\20const*\29 1853:SkCanvas::clipPath\28SkPath\20const&\2c\20SkClipOp\2c\20bool\29 1854:SkBmpBaseCodec::~SkBmpBaseCodec\28\29 1855:SkBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 1856:SkBlendMode\20SkReadBuffer::read32LE\28SkBlendMode\29 1857:SkBitmap::operator=\28SkBitmap\20const&\29 1858:SkBitmap::extractSubset\28SkBitmap*\2c\20SkIRect\20const&\29\20const 1859:SkBinaryWriteBuffer::writeByteArray\28void\20const*\2c\20unsigned\20long\29 1860:SkBinaryWriteBuffer::SkBinaryWriteBuffer\28SkSerialProcs\20const&\29 1861:SkBaseShadowTessellator::handleLine\28SkPoint\20const&\29 1862:SkAAClip::setRegion\28SkRegion\20const&\29 1863:R 1864:OT::hb_ot_apply_context_t::_set_glyph_class\28unsigned\20int\2c\20unsigned\20int\2c\20bool\2c\20bool\29 1865:OT::cmap::find_subtable\28unsigned\20int\2c\20unsigned\20int\29\20const 1866:GrXPFactory::FromBlendMode\28SkBlendMode\29 1867:GrTriangulator::setBottom\28GrTriangulator::Edge*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Comparator\20const&\29\20const 1868:GrTriangulator::mergeCollinearEdges\28GrTriangulator::Edge*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Comparator\20const&\29\20const 1869:GrTriangulator::Edge::disconnect\28\29 1870:GrThreadSafeCache::find\28skgpu::UniqueKey\20const&\29 1871:GrThreadSafeCache::add\28skgpu::UniqueKey\20const&\2c\20GrSurfaceProxyView\20const&\29 1872:GrThreadSafeCache::Entry::makeEmpty\28\29 1873:GrSurfaceProxyView::operator==\28GrSurfaceProxyView\20const&\29\20const 1874:GrSurfaceProxyView::Copy\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20skgpu::Mipmapped\2c\20SkIRect\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20std::__2::basic_string_view>\29 1875:GrSurfaceProxyPriv::doLazyInstantiation\28GrResourceProvider*\29 1876:GrSurfaceProxy::isFunctionallyExact\28\29\20const 1877:GrSurfaceProxy::Copy\28GrRecordingContext*\2c\20sk_sp\2c\20GrSurfaceOrigin\2c\20skgpu::Mipmapped\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20std::__2::basic_string_view>\2c\20sk_sp*\29 1878:GrSimpleMeshDrawOpHelperWithStencil::fixedFunctionFlags\28\29\20const 1879:GrSimpleMeshDrawOpHelper::finalizeProcessors\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrUserStencilSettings\20const*\2c\20GrClampType\2c\20GrProcessorAnalysisCoverage\2c\20GrProcessorAnalysisColor*\29 1880:GrSimpleMeshDrawOpHelper::CreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrGeometryProcessor*\2c\20GrProcessorSet&&\2c\20GrPrimitiveType\2c\20GrXferBarrierFlags\2c\20GrLoadOp\2c\20GrPipeline::InputFlags\2c\20GrUserStencilSettings\20const*\29 1881:GrSimpleMeshDrawOpHelper::CreatePipeline\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20skgpu::Swizzle\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrProcessorSet&&\2c\20GrPipeline::InputFlags\29 1882:GrResourceProvider::findOrMakeStaticBuffer\28GrGpuBufferType\2c\20unsigned\20long\2c\20void\20const*\2c\20skgpu::UniqueKey\20const&\29 1883:GrResourceProvider::findOrMakeStaticBuffer\28GrGpuBufferType\2c\20unsigned\20long\2c\20skgpu::UniqueKey\20const&\2c\20void\20\28*\29\28skgpu::VertexWriter\2c\20unsigned\20long\29\29 1884:GrResourceCache::findAndRefScratchResource\28skgpu::ScratchKey\20const&\29 1885:GrRecordingContextPriv::makeSFC\28GrImageInfo\2c\20std::__2::basic_string_view>\2c\20SkBackingFit\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrSurfaceOrigin\2c\20skgpu::Budgeted\29 1886:GrQuadUtils::TessellationHelper::Vertices::moveAlong\28GrQuadUtils::TessellationHelper::EdgeVectors\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\29 1887:GrQuad::asRect\28SkRect*\29\20const 1888:GrProcessorSet::GrProcessorSet\28GrProcessorSet&&\29 1889:GrPathUtils::generateCubicPoints\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20SkPoint**\2c\20unsigned\20int\29 1890:GrGpu::createBuffer\28unsigned\20long\2c\20GrGpuBufferType\2c\20GrAccessPattern\29 1891:GrGeometryProcessor::ProgramImpl::WriteOutputPosition\28GrGLSLVertexBuilder*\2c\20GrGLSLUniformHandler*\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\2c\20char\20const*\2c\20SkMatrix\20const&\2c\20GrResourceHandle*\29 1892:GrGLTexture::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 1893:GrGLSLShaderBuilder::appendColorGamutXform\28SkString*\2c\20char\20const*\2c\20GrGLSLColorSpaceXformHelper*\29 1894:GrGLSLColorSpaceXformHelper::emitCode\28GrGLSLUniformHandler*\2c\20GrColorSpaceXform\20const*\2c\20unsigned\20int\29 1895:GrGLRenderTarget::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 1896:GrGLRenderTarget::bindInternal\28unsigned\20int\2c\20bool\29 1897:GrGLGpu::getErrorAndCheckForOOM\28\29 1898:GrGLGpu::bindTexture\28int\2c\20GrSamplerState\2c\20skgpu::Swizzle\20const&\2c\20GrGLTexture*\29 1899:GrFragmentProcessors::Make\28SkShader\20const*\2c\20GrFPArgs\20const&\2c\20SkMatrix\20const&\29 1900:GrFragmentProcessor::visitWithImpls\28std::__2::function\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29\20const 1901:GrFragmentProcessor::ColorMatrix\28std::__2::unique_ptr>\2c\20float\20const*\2c\20bool\2c\20bool\2c\20bool\29 1902:GrDrawingManager::appendTask\28sk_sp\29 1903:GrColorInfo::GrColorInfo\28GrColorInfo\20const&\29 1904:GrCaps::isFormatCompressed\28GrBackendFormat\20const&\29\20const 1905:GrAAConvexTessellator::lineTo\28SkPoint\20const&\2c\20GrAAConvexTessellator::CurveState\29 1906:FT_Select_Metrics 1907:FT_Select_Charmap 1908:FT_Get_Next_Char 1909:FT_Get_Module_Interface 1910:FT_Done_Size 1911:DecodeImageStream 1912:CFF::opset_t::process_op\28unsigned\20int\2c\20CFF::interp_env_t&\29 1913:CFF::Charset::get_glyph\28unsigned\20int\2c\20unsigned\20int\29\20const 1914:wuffs_gif__decoder__num_decoded_frames 1915:void\20std::__2::vector\2c\20std::__2::allocator>>::__push_back_slow_path\20const&>\28sk_sp\20const&\29 1916:void\20std::__2::reverse\5babi:v160004\5d\28wchar_t*\2c\20wchar_t*\29 1917:void\20sort_r_simple<>\28void*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\20\28*\29\28void\20const*\2c\20void\20const*\29\29.2 1918:void\20merge_sort<&sweep_lt_vert\28SkPoint\20const&\2c\20SkPoint\20const&\29>\28GrTriangulator::VertexList*\29 1919:void\20merge_sort<&sweep_lt_horiz\28SkPoint\20const&\2c\20SkPoint\20const&\29>\28GrTriangulator::VertexList*\29 1920:void\20emscripten::internal::MemberAccess::setWire\28float\20StrokeOpts::*\20const&\2c\20StrokeOpts&\2c\20float\29 1921:validate_offsetToRestore\28SkReadBuffer*\2c\20unsigned\20long\29 1922:ubidi_setPara_skia 1923:ubidi_getVisualRun_skia 1924:ubidi_getRuns_skia 1925:ubidi_getClass_skia 1926:tt_set_mm_blend 1927:tt_face_get_ps_name 1928:trinkle 1929:std::__2::unique_ptr::release\5babi:v160004\5d\28\29 1930:std::__2::pair\2c\20void*>*>\2c\20bool>\20std::__2::__hash_table\2c\20std::__2::__unordered_map_hasher\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal\2c\20std::__2::equal_to\2c\20std::__2::hash\2c\20true>\2c\20std::__2::allocator>>::__emplace_unique_key_args\2c\20std::__2::tuple<>>\28GrTriangulator::Vertex*\20const&\2c\20std::__2::piecewise_construct_t\20const&\2c\20std::__2::tuple&&\2c\20std::__2::tuple<>&&\29 1931:std::__2::pair::pair\5babi:v160004\5d\28char\20const*&&\2c\20char*&&\29 1932:std::__2::moneypunct::do_decimal_point\28\29\20const 1933:std::__2::moneypunct::do_decimal_point\28\29\20const 1934:std::__2::istreambuf_iterator>::istreambuf_iterator\5babi:v160004\5d\28std::__2::basic_istream>&\29 1935:std::__2::ios_base::good\5babi:v160004\5d\28\29\20const 1936:std::__2::ctype::toupper\5babi:v160004\5d\28char\29\20const 1937:std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29 1938:std::__2::basic_string\2c\20std::__2::allocator>\20const*\20std::__2::__scan_keyword\5babi:v160004\5d>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::ctype>\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::ctype\20const&\2c\20unsigned\20int&\2c\20bool\29 1939:std::__2::basic_string\2c\20std::__2::allocator>::operator\5b\5d\5babi:v160004\5d\28unsigned\20long\29\20const 1940:std::__2::basic_string\2c\20std::__2::allocator>::__fits_in_sso\5babi:v160004\5d\28unsigned\20long\29 1941:std::__2::basic_string\2c\20std::__2::allocator>\20const*\20std::__2::__scan_keyword\5babi:v160004\5d>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::ctype>\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::ctype\20const&\2c\20unsigned\20int&\2c\20bool\29 1942:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28char\20const*\2c\20char\20const*\29 1943:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 1944:std::__2::basic_string\2c\20std::__2::allocator>::__get_short_size\5babi:v160004\5d\28\29\20const 1945:std::__2::basic_string\2c\20std::__2::allocator>&\20std::__2::basic_string\2c\20std::__2::allocator>::__assign_no_alias\28char\20const*\2c\20unsigned\20long\29 1946:std::__2::basic_streambuf>::__pbump\5babi:v160004\5d\28long\29 1947:std::__2::basic_iostream>::~basic_iostream\28\29.1 1948:std::__2::allocator_traits>::deallocate\5babi:v160004\5d\28std::__2::allocator&\2c\20wchar_t*\2c\20unsigned\20long\29 1949:std::__2::allocator_traits>::deallocate\5babi:v160004\5d\28std::__2::allocator&\2c\20char*\2c\20unsigned\20long\29 1950:std::__2::__num_put_base::__format_int\28char*\2c\20char\20const*\2c\20bool\2c\20unsigned\20int\29 1951:std::__2::__num_put_base::__format_float\28char*\2c\20char\20const*\2c\20unsigned\20int\29 1952:std::__2::__itoa::__append8\5babi:v160004\5d\28char*\2c\20unsigned\20int\29 1953:sktext::gpu::VertexFiller::deviceRectAndCheckTransform\28SkMatrix\20const&\29\20const 1954:sktext::gpu::TextBlob::Key::operator==\28sktext::gpu::TextBlob::Key\20const&\29\20const 1955:sktext::gpu::GlyphVector::packedGlyphIDToGlyph\28sktext::gpu::StrikeCache*\29 1956:sktext::SkStrikePromise::strike\28\29 1957:skif::RoundIn\28SkRect\29 1958:skif::LayerSpace::inverseMapRect\28skif::LayerSpace\20const&\2c\20skif::LayerSpace*\29\20const 1959:skif::FilterResult::applyTransform\28skif::Context\20const&\2c\20skif::LayerSpace\20const&\2c\20SkSamplingOptions\20const&\29\20const 1960:skia_private::THashTable>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::resize\28int\29 1961:skia_private::THashTable\2c\20SkGoodHash>::Pair\2c\20int\2c\20skia_private::THashMap\2c\20SkGoodHash>::Pair>::Slot::emplace\28skia_private::THashMap\2c\20SkGoodHash>::Pair&&\2c\20unsigned\20int\29 1962:skia_private::THashTable\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair\2c\20SkSL::Type\20const*\2c\20skia_private::THashMap\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair>::resize\28int\29 1963:skia_private::THashTable::Pair\2c\20SkSL::SymbolTable::SymbolKey\2c\20skia_private::THashMap::Pair>::uncheckedSet\28skia_private::THashMap::Pair&&\29 1964:skia_private::THashTable::Pair\2c\20SkSL::SymbolTable::SymbolKey\2c\20skia_private::THashMap::Pair>::resize\28int\29 1965:skia_private::THashTable::Traits>::resize\28int\29 1966:skia_private::TArray::move\28void*\29 1967:skia_private::TArray::push_back\28SkRasterPipeline_MemoryCtxInfo&&\29 1968:skia_private::TArray\2c\20true>::push_back\28SkRGBA4f<\28SkAlphaType\293>&&\29 1969:skia_png_set_text_2 1970:skia_png_set_palette_to_rgb 1971:skia_png_handle_IHDR 1972:skia_png_handle_IEND 1973:skia_png_destroy_write_struct 1974:skia::textlayout::operator==\28skia::textlayout::FontArguments\20const&\2c\20skia::textlayout::FontArguments\20const&\29 1975:skia::textlayout::TextWrapper::TextStretch::extend\28skia::textlayout::Cluster*\29 1976:skia::textlayout::FontCollection::getFontManagerOrder\28\29\20const 1977:skia::textlayout::FontArguments::FontArguments\28skia::textlayout::FontArguments\20const&\29 1978:skia::textlayout::Decorations::calculateGaps\28skia::textlayout::TextLine::ClipContext\20const&\2c\20SkRect\20const&\2c\20float\2c\20float\29 1979:skia::textlayout::Block&\20skia_private::TArray::emplace_back\28unsigned\20long&&\2c\20unsigned\20long&&\2c\20skia::textlayout::TextStyle\20const&\29 1980:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::fixedFunctionFlags\28\29\20const 1981:skgpu::ganesh::SurfaceFillContext::fillRectWithFP\28SkIRect\20const&\2c\20SkMatrix\20const&\2c\20std::__2::unique_ptr>\29 1982:skgpu::ganesh::SurfaceFillContext::SurfaceFillContext\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20GrSurfaceProxyView\2c\20GrColorInfo\20const&\29 1983:skgpu::ganesh::SurfaceDrawContext::drawShape\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20GrStyledShape&&\29 1984:skgpu::ganesh::SurfaceDrawContext::drawPaint\28GrClip\20const*\2c\20GrPaint&&\2c\20SkMatrix\20const&\29 1985:skgpu::ganesh::SurfaceDrawContext::MakeWithFallback\28GrRecordingContext*\2c\20GrColorType\2c\20sk_sp\2c\20SkBackingFit\2c\20SkISize\2c\20SkSurfaceProps\20const&\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrSurfaceOrigin\2c\20skgpu::Budgeted\29 1986:skgpu::ganesh::SurfaceContext::rescaleInto\28skgpu::ganesh::SurfaceFillContext*\2c\20SkIRect\2c\20SkIRect\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\29 1987:skgpu::ganesh::SurfaceContext::PixelTransferResult::operator=\28skgpu::ganesh::SurfaceContext::PixelTransferResult&&\29 1988:skgpu::ganesh::SmallPathAtlasMgr::addToAtlas\28GrResourceProvider*\2c\20GrDeferredUploadTarget*\2c\20int\2c\20int\2c\20void\20const*\2c\20skgpu::AtlasLocator*\29 1989:skgpu::ganesh::OpsTask::~OpsTask\28\29 1990:skgpu::ganesh::OpsTask::setColorLoadOp\28GrLoadOp\2c\20std::__2::array\29 1991:skgpu::ganesh::OpsTask::deleteOps\28\29 1992:skgpu::ganesh::FillRectOp::Make\28GrRecordingContext*\2c\20GrPaint&&\2c\20GrAAType\2c\20DrawQuad*\2c\20GrUserStencilSettings\20const*\2c\20GrSimpleMeshDrawOpHelper::InputFlags\29 1993:skgpu::ganesh::Device::drawEdgeAAImageSet\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29::$_0::operator\28\29\28int\29\20const 1994:skgpu::ganesh::ClipStack::~ClipStack\28\29 1995:skgpu::TClientMappedBufferManager::~TClientMappedBufferManager\28\29 1996:skgpu::Swizzle::apply\28SkRasterPipeline*\29\20const 1997:skgpu::Plot::addSubImage\28int\2c\20int\2c\20void\20const*\2c\20skgpu::AtlasLocator*\29 1998:skgpu::GetLCDBlendFormula\28SkBlendMode\29 1999:skcms_TransferFunction_isHLGish 2000:sk_srgb_linear_singleton\28\29 2001:shr 2002:shl 2003:setRegionCheck\28SkRegion*\2c\20SkRegion\20const&\29 2004:read_header\28SkStream*\2c\20SkPngChunkReader*\2c\20SkCodec**\2c\20png_struct_def**\2c\20png_info_def**\29 2005:ps_dimension_set_mask_bits 2006:operator==\28SkPath\20const&\2c\20SkPath\20const&\29 2007:mbrtowc 2008:jround_up 2009:jpeg_make_d_derived_tbl 2010:ilogbf 2011:hb_ucd_get_unicode_funcs 2012:hb_syllabic_insert_dotted_circles\28hb_font_t*\2c\20hb_buffer_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20int\2c\20int\29 2013:hb_shape_full 2014:hb_serialize_context_t::~hb_serialize_context_t\28\29 2015:hb_serialize_context_t::resolve_links\28\29 2016:hb_serialize_context_t::reset\28\29 2017:hb_lazy_loader_t\2c\20hb_face_t\2c\2016u\2c\20OT::cff1_accelerator_t>::get\28\29\20const 2018:hb_lazy_loader_t\2c\20hb_face_t\2c\2034u\2c\20hb_blob_t>::get\28\29\20const 2019:hb_language_from_string 2020:hb_font_t::mults_changed\28\29 2021:hb_font_destroy 2022:hb_buffer_t::next_glyph\28\29 2023:get_sof 2024:ftell 2025:ft_var_readpackedpoints 2026:ft_mem_strdup 2027:float\20emscripten::internal::MemberAccess::getWire\28float\20StrokeOpts::*\20const&\2c\20StrokeOpts\20const&\29 2028:fill_window 2029:exp 2030:encodeImage\28GrDirectContext*\2c\20sk_sp\2c\20SkEncodedImageFormat\2c\20int\29 2031:emscripten::val\20MakeTypedArray\28int\2c\20float\20const*\29 2032:emscripten::internal::MethodInvoker::invoke\28float\20\28SkContourMeasure::*\20const&\29\28\29\20const\2c\20SkContourMeasure\20const*\29 2033:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20unsigned\20long>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20unsigned\20long\29\2c\20unsigned\20long\2c\20unsigned\20long\29 2034:emscripten::internal::FunctionInvoker::invoke\28bool\20\28**\29\28SkPath\20const&\2c\20SkPath\20const&\29\2c\20SkPath*\2c\20SkPath*\29 2035:dquad_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 2036:do_clip_op\28SkReadBuffer*\2c\20SkCanvas*\2c\20SkRegion::Op\2c\20SkClipOp*\29 2037:do_anti_hairline\28int\2c\20int\2c\20int\2c\20int\2c\20SkIRect\20const*\2c\20SkBlitter*\29 2038:doWriteReverse\28char16_t\20const*\2c\20int\2c\20char16_t*\2c\20int\2c\20unsigned\20short\2c\20UErrorCode*\29 2039:doWriteForward\28char16_t\20const*\2c\20int\2c\20char16_t*\2c\20int\2c\20unsigned\20short\2c\20UErrorCode*\29 2040:dline_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 2041:dispose_chunk 2042:direct_blur_y\28void\20\28*\29\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29\2c\20int\2c\20int\2c\20unsigned\20short*\2c\20unsigned\20char\20const*\2c\20unsigned\20long\2c\20int\2c\20int\2c\20unsigned\20char*\2c\20unsigned\20long\29 2043:decltype\28fp\28\28SkRecords::NoOp\29\28\29\29\29\20SkRecord::Record::visit\28SkRecords::Draw&\29\20const 2044:dcubic_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 2045:dconic_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 2046:crop_rect_edge\28SkRect\20const&\2c\20int\2c\20int\2c\20int\2c\20int\2c\20float*\2c\20float*\2c\20float*\2c\20float*\2c\20float*\29 2047:char*\20std::__2::__rewrap_iter\5babi:v160004\5d>\28char*\2c\20char*\29 2048:cff_slot_load 2049:cff_parse_real 2050:cff_index_get_sid_string 2051:cff_index_access_element 2052:cf2_doStems 2053:cf2_doFlex 2054:byn$mgfn-shared$tt_cmap8_get_info 2055:byn$mgfn-shared$tt_cmap0_get_info 2056:byn$mgfn-shared$skia_png_set_strip_16 2057:byn$mgfn-shared$SkSL::Tracer::line\28int\29 2058:byn$mgfn-shared$AlmostBequalUlps\28float\2c\20float\29 2059:buffer_verify_error\28hb_buffer_t*\2c\20hb_font_t*\2c\20char\20const*\2c\20...\29 2060:blur_y_rect\28void\20\28*\29\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29\2c\20int\2c\20skvx::Vec<8\2c\20unsigned\20short>\20\28*\29\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29\2c\20int\2c\20unsigned\20short*\2c\20unsigned\20char\20const*\2c\20unsigned\20long\2c\20int\2c\20int\2c\20unsigned\20char*\2c\20unsigned\20long\29 2061:blur_column\28void\20\28*\29\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29\2c\20skvx::Vec<8\2c\20unsigned\20short>\20\28*\29\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29\2c\20int\2c\20int\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20unsigned\20char\20const*\2c\20unsigned\20long\2c\20int\2c\20unsigned\20char*\2c\20unsigned\20long\29::$_0::operator\28\29\28unsigned\20char*\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\29\20const 2062:af_sort_and_quantize_widths 2063:af_glyph_hints_align_weak_points 2064:af_glyph_hints_align_strong_points 2065:af_face_globals_new 2066:af_cjk_compute_stem_width 2067:add_huff_table 2068:addPoint\28UBiDi*\2c\20int\2c\20int\29 2069:__uselocale 2070:__math_xflow 2071:__cxxabiv1::__base_class_type_info::search_below_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 2072:\28anonymous\20namespace\29::make_vertices_spec\28bool\2c\20bool\29 2073:\28anonymous\20namespace\29::gather_lines_and_quads\28SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20float\2c\20bool\2c\20skia_private::TArray*\2c\20skia_private::TArray*\2c\20skia_private::TArray*\2c\20skia_private::TArray*\2c\20skia_private::TArray*\29::$_1::operator\28\29\28SkPoint\20const*\2c\20SkPoint\20const*\2c\20bool\29\20const 2074:\28anonymous\20namespace\29::draw_stencil_rect\28skgpu::ganesh::SurfaceDrawContext*\2c\20GrHardClip\20const&\2c\20GrUserStencilSettings\20const*\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20GrAA\29 2075:\28anonymous\20namespace\29::TentPass::blurSegment\28int\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int*\2c\20int\29::'lambda'\28skvx::Vec<4\2c\20unsigned\20int>\20const&\29::operator\28\29\28skvx::Vec<4\2c\20unsigned\20int>\20const&\29\20const 2076:\28anonymous\20namespace\29::PathSubRun::canReuse\28SkPaint\20const&\2c\20SkMatrix\20const&\29\20const 2077:\28anonymous\20namespace\29::GaussPass::blurSegment\28int\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int*\2c\20int\29::'lambda'\28skvx::Vec<4\2c\20unsigned\20int>\20const&\29::operator\28\29\28skvx::Vec<4\2c\20unsigned\20int>\20const&\29\20const 2078:\28anonymous\20namespace\29::CacheImpl::removeInternal\28\28anonymous\20namespace\29::CacheImpl::Value*\29 2079:WebPRescalerExport 2080:WebPInitAlphaProcessing 2081:WebPFreeDecBuffer 2082:WebPDemuxDelete 2083:VP8SetError 2084:VP8LInverseTransform 2085:VP8LDelete 2086:VP8LColorCacheClear 2087:TT_Load_Context 2088:StringBuffer\20apply_format_string<1024>\28char\20const*\2c\20void*\2c\20char\20\28&\29\20\5b1024\5d\2c\20SkString*\29 2089:SkYUVAPixmaps::operator=\28SkYUVAPixmaps\20const&\29 2090:SkYUVAPixmapInfo::SupportedDataTypes::enableDataType\28SkYUVAPixmapInfo::DataType\2c\20int\29 2091:SkWriter32::writeMatrix\28SkMatrix\20const&\29 2092:SkWriter32::snapshotAsData\28\29\20const 2093:SkVertices::uniqueID\28\29\20const 2094:SkVertices::approximateSize\28\29\20const 2095:SkTypefaceCache::NewTypefaceID\28\29 2096:SkTextBlobRunIterator::next\28\29 2097:SkTextBlobRunIterator::SkTextBlobRunIterator\28SkTextBlob\20const*\29 2098:SkTextBlobBuilder::SkTextBlobBuilder\28\29 2099:SkTextBlobBuilder::ConservativeRunBounds\28SkTextBlob::RunRecord\20const&\29 2100:SkTSpan::closestBoundedT\28SkDPoint\20const&\29\20const 2101:SkTSect::updateBounded\28SkTSpan*\2c\20SkTSpan*\2c\20SkTSpan*\29 2102:SkTSect::trim\28SkTSpan*\2c\20SkTSect*\29 2103:SkTDStorage::erase\28int\2c\20int\29 2104:SkTDPQueue::percolateUpIfNecessary\28int\29 2105:SkSurfaces::Raster\28SkImageInfo\20const&\2c\20unsigned\20long\2c\20SkSurfaceProps\20const*\29 2106:SkSurfaceProps::SkSurfaceProps\28unsigned\20int\2c\20SkPixelGeometry\2c\20float\2c\20float\29 2107:SkStrokerPriv::JoinFactory\28SkPaint::Join\29 2108:SkStrokeRec::setStrokeStyle\28float\2c\20bool\29 2109:SkStrokeRec::setFillStyle\28\29 2110:SkStrokeRec::applyToPath\28SkPath*\2c\20SkPath\20const&\29\20const 2111:SkString::set\28char\20const*\29 2112:SkStrikeSpec::findOrCreateStrike\28\29\20const 2113:SkStrikeSpec::MakeWithNoDevice\28SkFont\20const&\2c\20SkPaint\20const*\29 2114:SkStrike::unlock\28\29 2115:SkStrike::lock\28\29 2116:SkSharedMutex::SkSharedMutex\28\29 2117:SkShadowTessellator::MakeSpot\28SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkPoint3\20const&\2c\20SkPoint3\20const&\2c\20float\2c\20bool\2c\20bool\29 2118:SkShaders::Empty\28\29 2119:SkShaders::Color\28unsigned\20int\29 2120:SkShaderBase::appendRootStages\28SkStageRec\20const&\2c\20SkMatrix\20const&\29\20const 2121:SkScalerContext::~SkScalerContext\28\29.1 2122:SkSL::write_stringstream\28SkSL::StringStream\20const&\2c\20SkSL::OutputStream&\29 2123:SkSL::evaluate_3_way_intrinsic\28SkSL::Context\20const&\2c\20std::__2::array\20const&\2c\20SkSL::Type\20const&\2c\20double\20\28*\29\28double\2c\20double\2c\20double\29\29 2124:SkSL::VarDeclaration::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Modifiers\20const&\2c\20SkSL::Type\20const&\2c\20SkSL::Position\2c\20std::__2::basic_string_view>\2c\20SkSL::VariableStorage\2c\20std::__2::unique_ptr>\29 2125:SkSL::Type::priority\28\29\20const 2126:SkSL::Type::checkIfUsableInArray\28SkSL::Context\20const&\2c\20SkSL::Position\29\20const 2127:SkSL::SymbolTable::takeOwnershipOfString\28std::__2::basic_string\2c\20std::__2::allocator>\29 2128:SkSL::SymbolTable::isBuiltinType\28std::__2::basic_string_view>\29\20const 2129:SkSL::StructType::slotCount\28\29\20const 2130:SkSL::RP::SlotManager::mapVariableToSlots\28SkSL::Variable\20const&\2c\20SkSL::RP::SlotRange\29 2131:SkSL::RP::Program::appendStages\28SkRasterPipeline*\2c\20SkArenaAlloc*\2c\20SkSL::RP::Callbacks*\2c\20SkSpan\29\20const 2132:SkSL::RP::Generator::pushVectorizedExpression\28SkSL::Expression\20const&\2c\20SkSL::Type\20const&\29 2133:SkSL::RP::Builder::ternary_op\28SkSL::RP::BuilderOp\2c\20int\29 2134:SkSL::RP::Builder::simplifyPopSlotsUnmasked\28SkSL::RP::SlotRange*\29 2135:SkSL::RP::Builder::pop_slots_unmasked\28SkSL::RP::SlotRange\29 2136:SkSL::RP::Builder::pad_stack\28int\29 2137:SkSL::RP::Builder::exchange_src\28\29 2138:SkSL::ProgramUsage::remove\28SkSL::ProgramElement\20const&\29 2139:SkSL::ProgramUsage::isDead\28SkSL::Variable\20const&\29\20const 2140:SkSL::Pool::~Pool\28\29 2141:SkSL::PipelineStage::PipelineStageCodeGenerator::typeName\28SkSL::Type\20const&\29 2142:SkSL::LiteralType::priority\28\29\20const 2143:SkSL::IndexExpression::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 2144:SkSL::GLSLCodeGenerator::writeAnyConstructor\28SkSL::AnyConstructor\20const&\2c\20SkSL::OperatorPrecedence\29 2145:SkSL::ExpressionArray::clone\28\29\20const 2146:SkSL::Compiler::errorText\28bool\29 2147:SkSL::Block::Make\28SkSL::Position\2c\20skia_private::STArray<2\2c\20std::__2::unique_ptr>\2c\20true>\2c\20SkSL::Block::Kind\2c\20std::__2::unique_ptr>\29 2148:SkSL::Block::MakeBlock\28SkSL::Position\2c\20skia_private::STArray<2\2c\20std::__2::unique_ptr>\2c\20true>\2c\20SkSL::Block::Kind\2c\20std::__2::unique_ptr>\29 2149:SkSL::Analysis::DetectVarDeclarationWithoutScope\28SkSL::Statement\20const&\2c\20SkSL::ErrorReporter*\29 2150:SkRuntimeShaderBuilder::~SkRuntimeShaderBuilder\28\29 2151:SkRuntimeShaderBuilder::makeShader\28SkMatrix\20const*\29\20const 2152:SkRuntimeShaderBuilder::SkRuntimeShaderBuilder\28sk_sp\29 2153:SkRuntimeEffectPriv::TransformUniforms\28SkSpan\2c\20sk_sp\2c\20SkColorSpace\20const*\29 2154:SkRuntimeEffect::getRPProgram\28SkSL::DebugTracePriv*\29\20const 2155:SkRegion::getBoundaryPath\28SkPath*\29\20const 2156:SkRegion::Spanerator::next\28int*\2c\20int*\29 2157:SkRegion::SkRegion\28SkRegion\20const&\29 2158:SkReduceOrder::Quad\28SkPoint\20const*\2c\20SkPoint*\29 2159:SkReadBuffer::skipByteArray\28unsigned\20long*\29 2160:SkReadBuffer::readSampling\28\29 2161:SkReadBuffer::readRRect\28SkRRect*\29 2162:SkReadBuffer::checkInt\28int\2c\20int\29 2163:SkRasterPipeline::appendMatrix\28SkArenaAlloc*\2c\20SkMatrix\20const&\29 2164:SkQuads::RootsReal\28double\2c\20double\2c\20double\2c\20double*\29 2165:SkQuadraticEdge::updateQuadratic\28\29 2166:SkPngCodec::~SkPngCodec\28\29.1 2167:SkPngCodec::processData\28\29 2168:SkPixmap::readPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20int\2c\20int\29\20const 2169:SkPictureRecord::~SkPictureRecord\28\29 2170:SkPicture::~SkPicture\28\29.1 2171:SkPathStroker::quadStroke\28SkPoint\20const*\2c\20SkQuadConstruct*\29 2172:SkPathStroker::preJoinTo\28SkPoint\20const&\2c\20SkPoint*\2c\20SkPoint*\2c\20bool\29 2173:SkPathStroker::intersectRay\28SkQuadConstruct*\2c\20SkPathStroker::IntersectRayType\29\20const 2174:SkPathStroker::cubicStroke\28SkPoint\20const*\2c\20SkQuadConstruct*\29 2175:SkPathStroker::conicStroke\28SkConic\20const&\2c\20SkQuadConstruct*\29 2176:SkPathMeasure::isClosed\28\29 2177:SkPathEffectBase::getFlattenableType\28\29\20const 2178:SkPathBuilder::moveTo\28SkPoint\29 2179:SkPathBuilder::incReserve\28int\2c\20int\29 2180:SkPathBuilder::addRect\28SkRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\29 2181:SkPath::isLastContourClosed\28\29\20const 2182:SkPath::addRRect\28SkRRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\29 2183:SkPaintToGrPaintReplaceShader\28GrRecordingContext*\2c\20GrColorInfo\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\2c\20std::__2::unique_ptr>\2c\20SkSurfaceProps\20const&\2c\20GrPaint*\29 2184:SkPaint::setStrokeMiter\28float\29 2185:SkPaint::setStrokeJoin\28SkPaint::Join\29 2186:SkOpSpanBase::mergeMatches\28SkOpSpanBase*\29 2187:SkOpSpanBase::addOpp\28SkOpSpanBase*\29 2188:SkOpSegment::subDivide\28SkOpSpanBase\20const*\2c\20SkOpSpanBase\20const*\2c\20SkDCurve*\29\20const 2189:SkOpSegment::release\28SkOpSpan\20const*\29 2190:SkOpSegment::operand\28\29\20const 2191:SkOpSegment::moveNearby\28\29 2192:SkOpSegment::markDone\28SkOpSpan*\29 2193:SkOpSegment::markAndChaseDone\28SkOpSpanBase*\2c\20SkOpSpanBase*\2c\20SkOpSpanBase**\29 2194:SkOpSegment::isClose\28double\2c\20SkOpSegment\20const*\29\20const 2195:SkOpSegment::init\28SkPoint*\2c\20float\2c\20SkOpContour*\2c\20SkPath::Verb\29 2196:SkOpSegment::addT\28double\2c\20SkPoint\20const&\29 2197:SkOpCoincidence::fixUp\28SkOpPtT*\2c\20SkOpPtT\20const*\29 2198:SkOpCoincidence::add\28SkOpPtT*\2c\20SkOpPtT*\2c\20SkOpPtT*\2c\20SkOpPtT*\29 2199:SkOpCoincidence::addMissing\28bool*\29 2200:SkOpCoincidence::addIfMissing\28SkOpPtT\20const*\2c\20SkOpPtT\20const*\2c\20double\2c\20double\2c\20SkOpSegment*\2c\20SkOpSegment*\2c\20bool*\29 2201:SkOpCoincidence::addExpanded\28\29 2202:SkOpAngle::set\28SkOpSpanBase*\2c\20SkOpSpanBase*\29 2203:SkOpAngle::lineOnOneSide\28SkDPoint\20const&\2c\20SkDVector\20const&\2c\20SkOpAngle\20const*\2c\20bool\29\20const 2204:SkNoPixelsDevice::ClipState::op\28SkClipOp\2c\20SkM44\20const&\2c\20SkRect\20const&\2c\20bool\2c\20bool\29 2205:SkMatrix\20skif::Mapping::map\28SkMatrix\20const&\2c\20SkMatrix\20const&\29 2206:SkMatrixPriv::DifferentialAreaScale\28SkMatrix\20const&\2c\20SkPoint\20const&\29 2207:SkMatrix::writeToMemory\28void*\29\20const 2208:SkMatrix::preservesRightAngles\28float\29\20const 2209:SkM44::normalizePerspective\28\29 2210:SkLatticeIter::~SkLatticeIter\28\29 2211:SkLatticeIter::next\28SkIRect*\2c\20SkRect*\2c\20bool*\2c\20unsigned\20int*\29 2212:SkImages::RasterFromBitmap\28SkBitmap\20const&\29 2213:SkImage_Lazy::Validator::Validator\28sk_sp\2c\20SkColorType\20const*\2c\20sk_sp\29 2214:SkImageShader::MakeSubset\28sk_sp\2c\20SkRect\20const&\2c\20SkTileMode\2c\20SkTileMode\2c\20SkSamplingOptions\20const&\2c\20SkMatrix\20const*\2c\20bool\29 2215:SkImageFilters::Image\28sk_sp\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\29 2216:SkImageFilters::Blend\28SkBlendMode\2c\20sk_sp\2c\20sk_sp\2c\20SkImageFilters::CropRect\20const&\29 2217:SkImage::readPixels\28GrDirectContext*\2c\20SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20int\2c\20int\2c\20SkImage::CachingHint\29\20const 2218:SkHalfToFloat\28unsigned\20short\29 2219:SkGradientShader::MakeSweep\28float\2c\20float\2c\20SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20sk_sp\2c\20float\20const*\2c\20int\2c\20SkTileMode\2c\20float\2c\20float\2c\20SkGradientShader::Interpolation\20const&\2c\20SkMatrix\20const*\29 2220:SkGradientShader::MakeRadial\28SkPoint\20const&\2c\20float\2c\20SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20sk_sp\2c\20float\20const*\2c\20int\2c\20SkTileMode\2c\20SkGradientShader::Interpolation\20const&\2c\20SkMatrix\20const*\29 2221:SkGradientBaseShader::commonAsAGradient\28SkShaderBase::GradientInfo*\29\20const 2222:SkGradientBaseShader::ValidGradient\28SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20int\2c\20SkTileMode\2c\20SkGradientShader::Interpolation\20const&\29 2223:SkGradientBaseShader::SkGradientBaseShader\28SkGradientBaseShader::Descriptor\20const&\2c\20SkMatrix\20const&\29 2224:SkGradientBaseShader::MakeDegenerateGradient\28SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20float\20const*\2c\20int\2c\20sk_sp\2c\20SkTileMode\29 2225:SkGradientBaseShader::Descriptor::~Descriptor\28\29 2226:SkGradientBaseShader::Descriptor::Descriptor\28SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20sk_sp\2c\20float\20const*\2c\20int\2c\20SkTileMode\2c\20SkGradientShader::Interpolation\20const&\29 2227:SkGlyph::setPath\28SkArenaAlloc*\2c\20SkPath\20const*\2c\20bool\29 2228:SkFontMgr::matchFamilyStyleCharacter\28char\20const*\2c\20SkFontStyle\20const&\2c\20char\20const**\2c\20int\2c\20int\29\20const 2229:SkFont::setSize\28float\29 2230:SkEvalQuadAt\28SkPoint\20const*\2c\20float\2c\20SkPoint*\2c\20SkPoint*\29 2231:SkEncodedInfo::~SkEncodedInfo\28\29 2232:SkEmptyFontMgr::onMakeFromStreamIndex\28std::__2::unique_ptr>\2c\20int\29\20const 2233:SkDrawableList::~SkDrawableList\28\29 2234:SkDrawable::draw\28SkCanvas*\2c\20SkMatrix\20const*\29 2235:SkDevice::setDeviceCoordinateSystem\28SkM44\20const&\2c\20SkM44\20const&\2c\20SkM44\20const&\2c\20int\2c\20int\29 2236:SkData::PrivateNewWithCopy\28void\20const*\2c\20unsigned\20long\29::$_0::operator\28\29\28\29\20const 2237:SkDashPathEffect::Make\28float\20const*\2c\20int\2c\20float\29 2238:SkDQuad::monotonicInX\28\29\20const 2239:SkDCubic::dxdyAtT\28double\29\20const 2240:SkDCubic::RootsValidT\28double\2c\20double\2c\20double\2c\20double\2c\20double*\29 2241:SkCubicEdge::updateCubic\28\29 2242:SkConicalGradient::~SkConicalGradient\28\29 2243:SkColorSpace::serialize\28\29\20const 2244:SkColorSpace::MakeSRGBLinear\28\29 2245:SkColorFilterPriv::MakeGaussian\28\29 2246:SkColorConverter::SkColorConverter\28unsigned\20int\20const*\2c\20int\29 2247:SkCodec::startScanlineDecode\28SkImageInfo\20const&\2c\20SkCodec::Options\20const*\29 2248:SkCodec::handleFrameIndex\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20std::__2::function\29 2249:SkCodec::getScanlines\28void*\2c\20int\2c\20unsigned\20long\29 2250:SkChopQuadAtYExtrema\28SkPoint\20const*\2c\20SkPoint*\29 2251:SkChopCubicAt\28SkPoint\20const*\2c\20SkPoint*\2c\20float\20const*\2c\20int\29 2252:SkChopCubicAtYExtrema\28SkPoint\20const*\2c\20SkPoint*\29 2253:SkCharToGlyphCache::SkCharToGlyphCache\28\29 2254:SkCanvas::peekPixels\28SkPixmap*\29 2255:SkCanvas::getTotalMatrix\28\29\20const 2256:SkCanvas::getLocalToDevice\28\29\20const 2257:SkCanvas::getLocalClipBounds\28\29\20const 2258:SkCanvas::drawImageLattice\28SkImage\20const*\2c\20SkCanvas::Lattice\20const&\2c\20SkRect\20const&\2c\20SkFilterMode\2c\20SkPaint\20const*\29 2259:SkCanvas::drawAtlas\28SkImage\20const*\2c\20SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20SkBlendMode\2c\20SkSamplingOptions\20const&\2c\20SkRect\20const*\2c\20SkPaint\20const*\29 2260:SkCanvas::concat\28SkM44\20const&\29 2261:SkCanvas::SkCanvas\28SkBitmap\20const&\29 2262:SkCanvas::ImageSetEntry::ImageSetEntry\28SkCanvas::ImageSetEntry\20const&\29 2263:SkBmpCodec::ReadHeader\28SkStream*\2c\20bool\2c\20std::__2::unique_ptr>*\29 2264:SkBlitter::blitRectRegion\28SkIRect\20const&\2c\20SkRegion\20const&\29 2265:SkBlendMode_ShouldPreScaleCoverage\28SkBlendMode\2c\20bool\29 2266:SkBlendMode_AppendStages\28SkBlendMode\2c\20SkRasterPipeline*\29 2267:SkBitmap::tryAllocPixels\28SkBitmap::Allocator*\29 2268:SkBitmap::readPixels\28SkPixmap\20const&\2c\20int\2c\20int\29\20const 2269:SkBitmap::readPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20int\2c\20int\29\20const 2270:SkBitmap::installPixels\28SkPixmap\20const&\29 2271:SkBitmap::allocPixels\28SkImageInfo\20const&\29 2272:SkBitmap::SkBitmap\28SkBitmap&&\29 2273:SkBaseShadowTessellator::handleQuad\28SkPoint\20const*\29 2274:SkAutoDescriptor::~SkAutoDescriptor\28\29 2275:SkAnimatedImage::getFrameCount\28\29\20const 2276:SkAAClip::~SkAAClip\28\29 2277:SkAAClip::setPath\28SkPath\20const&\2c\20SkIRect\20const&\2c\20bool\29 2278:SkAAClip::op\28SkAAClip\20const&\2c\20SkClipOp\29 2279:OT::hb_ot_layout_lookup_accelerator_t*\20OT::hb_ot_layout_lookup_accelerator_t::create\28OT::Layout::GSUB_impl::SubstLookup\20const&\29 2280:OT::hb_ot_apply_context_t::replace_glyph\28unsigned\20int\29 2281:OT::apply_lookup\28OT::hb_ot_apply_context_t*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int\2c\20OT::LookupRecord\20const*\2c\20unsigned\20int\29 2282:OT::Layout::GPOS_impl::ValueFormat::get_device\28OT::IntType\20const*\2c\20bool*\2c\20void\20const*\2c\20hb_sanitize_context_t&\29 2283:OT::Layout::GPOS_impl::AnchorFormat3::get_anchor\28OT::hb_ot_apply_context_t*\2c\20unsigned\20int\2c\20float*\2c\20float*\29\20const 2284:OT::Layout::GPOS_impl::AnchorFormat2::get_anchor\28OT::hb_ot_apply_context_t*\2c\20unsigned\20int\2c\20float*\2c\20float*\29\20const 2285:OT::ClassDef::get_class\28unsigned\20int\29\20const 2286:JpegDecoderMgr::~JpegDecoderMgr\28\29 2287:GrTriangulator::simplify\28GrTriangulator::VertexList*\2c\20GrTriangulator::Comparator\20const&\29 2288:GrTriangulator::setTop\28GrTriangulator::Edge*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Comparator\20const&\29\20const 2289:GrTriangulator::mergeCoincidentVertices\28GrTriangulator::VertexList*\2c\20GrTriangulator::Comparator\20const&\29\20const 2290:GrTriangulator::Vertex*\20SkArenaAlloc::make\28SkPoint&\2c\20int&&\29 2291:GrThreadSafeCache::remove\28skgpu::UniqueKey\20const&\29 2292:GrThreadSafeCache::internalFind\28skgpu::UniqueKey\20const&\29 2293:GrThreadSafeCache::internalAdd\28skgpu::UniqueKey\20const&\2c\20GrSurfaceProxyView\20const&\29 2294:GrTextureEffect::Sampling::Sampling\28GrSurfaceProxy\20const&\2c\20GrSamplerState\2c\20SkRect\20const&\2c\20SkRect\20const*\2c\20float\20const*\2c\20bool\2c\20GrCaps\20const&\2c\20SkPoint\29 2295:GrTexture::markMipmapsClean\28\29 2296:GrTessellationShader::MakePipeline\28GrTessellationShader::ProgramArgs\20const&\2c\20GrAAType\2c\20GrAppliedClip&&\2c\20GrProcessorSet&&\29 2297:GrSurfaceProxyView::concatSwizzle\28skgpu::Swizzle\29 2298:GrSurfaceProxy::LazyCallbackResult::LazyCallbackResult\28sk_sp\29 2299:GrSurfaceProxy::Copy\28GrRecordingContext*\2c\20sk_sp\2c\20GrSurfaceOrigin\2c\20skgpu::Mipmapped\2c\20SkIRect\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20std::__2::basic_string_view>\2c\20GrSurfaceProxy::RectsMustMatch\2c\20sk_sp*\29 2300:GrStyledShape::GrStyledShape\28SkPath\20const&\2c\20GrStyle\20const&\2c\20GrStyledShape::DoSimplify\29 2301:GrStyledShape::GrStyledShape\28GrStyledShape\20const&\2c\20GrStyle::Apply\2c\20float\29 2302:GrSimpleMeshDrawOpHelper::CreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrPipeline\20const*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrGeometryProcessor*\2c\20GrPrimitiveType\2c\20GrXferBarrierFlags\2c\20GrLoadOp\2c\20GrUserStencilSettings\20const*\29 2303:GrShape::simplifyLine\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20unsigned\20int\29 2304:GrShape::reset\28\29 2305:GrShape::conservativeContains\28SkPoint\20const&\29\20const 2306:GrSWMaskHelper::init\28SkIRect\20const&\29 2307:GrResourceProvider::createNonAAQuadIndexBuffer\28\29 2308:GrResourceProvider::createBuffer\28unsigned\20long\2c\20GrGpuBufferType\2c\20GrAccessPattern\2c\20GrResourceProvider::ZeroInit\29 2309:GrResourceCache::refAndMakeResourceMRU\28GrGpuResource*\29 2310:GrResourceCache::findAndRefUniqueResource\28skgpu::UniqueKey\20const&\29 2311:GrRenderTask::addTarget\28GrDrawingManager*\2c\20sk_sp\29 2312:GrRenderTarget::~GrRenderTarget\28\29.1 2313:GrQuadUtils::WillUseHairline\28GrQuad\20const&\2c\20GrAAType\2c\20GrQuadAAFlags\29 2314:GrQuadUtils::CropToRect\28SkRect\20const&\2c\20GrAA\2c\20DrawQuad*\2c\20bool\29 2315:GrProxyProvider::processInvalidUniqueKey\28skgpu::UniqueKey\20const&\2c\20GrTextureProxy*\2c\20GrProxyProvider::InvalidateGPUResource\29 2316:GrPorterDuffXPFactory::Get\28SkBlendMode\29 2317:GrPixmap::operator=\28GrPixmap&&\29 2318:GrPathUtils::scaleToleranceToSrc\28float\2c\20SkMatrix\20const&\2c\20SkRect\20const&\29 2319:GrPathUtils::quadraticPointCount\28SkPoint\20const*\2c\20float\29 2320:GrPathUtils::cubicPointCount\28SkPoint\20const*\2c\20float\29 2321:GrPaint::setPorterDuffXPFactory\28SkBlendMode\29 2322:GrPaint::GrPaint\28GrPaint\20const&\29 2323:GrOpsRenderPass::draw\28int\2c\20int\29 2324:GrOpsRenderPass::drawInstanced\28int\2c\20int\2c\20int\2c\20int\29 2325:GrMeshDrawOp::onPrePrepareDraws\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 2326:GrMakeUniqueKeyInvalidationListener\28skgpu::UniqueKey*\2c\20unsigned\20int\29 2327:GrGradientShader::MakeGradientFP\28SkGradientBaseShader\20const&\2c\20GrFPArgs\20const&\2c\20SkShaders::MatrixRec\20const&\2c\20std::__2::unique_ptr>\2c\20SkMatrix\20const*\29 2328:GrGpuResource::getContext\28\29 2329:GrGpu::writePixels\28GrSurface*\2c\20SkIRect\2c\20GrColorType\2c\20GrColorType\2c\20GrMipLevel\20const*\2c\20int\2c\20bool\29 2330:GrGLTexture::onSetLabel\28\29 2331:GrGLTexture::onRelease\28\29 2332:GrGLTexture::onAbandon\28\29 2333:GrGLTexture::backendFormat\28\29\20const 2334:GrGLSLShaderBuilder::appendFunctionDecl\28SkSLType\2c\20char\20const*\2c\20SkSpan\29 2335:GrGLSLProgramBuilder::fragmentProcessorHasCoordsParam\28GrFragmentProcessor\20const*\29\20const 2336:GrGLRenderTarget::onRelease\28\29 2337:GrGLRenderTarget::onAbandon\28\29 2338:GrGLGpu::resolveRenderFBOs\28GrGLRenderTarget*\2c\20SkIRect\20const&\2c\20GrGLRenderTarget::ResolveDirection\2c\20bool\29 2339:GrGLGpu::flushBlendAndColorWrite\28skgpu::BlendInfo\20const&\2c\20skgpu::Swizzle\20const&\29 2340:GrGLGetVersionFromString\28char\20const*\29 2341:GrGLCheckLinkStatus\28GrGLGpu\20const*\2c\20unsigned\20int\2c\20bool\2c\20skgpu::ShaderErrorHandler*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const**\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\29 2342:GrGLCaps::maxRenderTargetSampleCount\28GrGLFormat\29\20const 2343:GrFragmentProcessors::Make\28SkBlenderBase\20const*\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20GrFPArgs\20const&\29 2344:GrFragmentProcessor::isEqual\28GrFragmentProcessor\20const&\29\20const 2345:GrFragmentProcessor::asTextureEffect\28\29\20const 2346:GrFragmentProcessor::Rect\28std::__2::unique_ptr>\2c\20GrClipEdgeType\2c\20SkRect\29 2347:GrFragmentProcessor::ModulateRGBA\28std::__2::unique_ptr>\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\29 2348:GrDrawingManager::~GrDrawingManager\28\29 2349:GrDrawingManager::removeRenderTasks\28\29 2350:GrDrawingManager::getPathRenderer\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\2c\20bool\2c\20skgpu::ganesh::PathRendererChain::DrawType\2c\20skgpu::ganesh::PathRenderer::StencilSupport*\29 2351:GrDrawOpAtlas::compact\28skgpu::AtlasToken\29 2352:GrContext_Base::~GrContext_Base\28\29 2353:GrContext_Base::defaultBackendFormat\28SkColorType\2c\20skgpu::Renderable\29\20const 2354:GrColorSpaceXform::XformKey\28GrColorSpaceXform\20const*\29 2355:GrColorSpaceXform::Make\28SkColorSpace*\2c\20SkAlphaType\2c\20SkColorSpace*\2c\20SkAlphaType\29 2356:GrColorSpaceXform::Make\28GrColorInfo\20const&\2c\20GrColorInfo\20const&\29 2357:GrColorInfo::operator=\28GrColorInfo\20const&\29 2358:GrCaps::supportedReadPixelsColorType\28GrColorType\2c\20GrBackendFormat\20const&\2c\20GrColorType\29\20const 2359:GrCaps::getFallbackColorTypeAndFormat\28GrColorType\2c\20int\29\20const 2360:GrCaps::areColorTypeAndFormatCompatible\28GrColorType\2c\20GrBackendFormat\20const&\29\20const 2361:GrBufferAllocPool::~GrBufferAllocPool\28\29 2362:GrBlurUtils::GaussianBlur\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20GrColorType\2c\20SkAlphaType\2c\20sk_sp\2c\20SkIRect\2c\20SkIRect\2c\20float\2c\20float\2c\20SkTileMode\2c\20SkBackingFit\29 2363:GrBlurUtils::DrawShapeWithMaskFilter\28GrRecordingContext*\2c\20skgpu::ganesh::SurfaceDrawContext*\2c\20GrClip\20const*\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\2c\20GrStyledShape\20const&\29 2364:GrBaseContextPriv::getShaderErrorHandler\28\29\20const 2365:GrBackendTexture::GrBackendTexture\28GrBackendTexture\20const&\29 2366:GrBackendRenderTarget::getBackendFormat\28\29\20const 2367:GrBackendFormat::operator==\28GrBackendFormat\20const&\29\20const 2368:GrAAConvexTessellator::createOuterRing\28GrAAConvexTessellator::Ring\20const&\2c\20float\2c\20float\2c\20GrAAConvexTessellator::Ring*\29 2369:GrAAConvexTessellator::createInsetRings\28GrAAConvexTessellator::Ring&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20GrAAConvexTessellator::Ring**\29 2370:FindSortableTop\28SkOpContourHead*\29 2371:FT_Set_Charmap 2372:FT_Outline_Decompose 2373:FT_Open_Face 2374:FT_New_Size 2375:FT_Load_Sfnt_Table 2376:FT_GlyphLoader_Add 2377:FT_Get_Color_Glyph_Paint 2378:FT_Get_Color_Glyph_Layer 2379:FT_Get_Advance 2380:FT_Done_Library 2381:FT_CMap_New 2382:DecodeImageData\28sk_sp\29 2383:Current_Ratio 2384:Cr_z__tr_stored_block 2385:ClipParams_unpackRegionOp\28SkReadBuffer*\2c\20unsigned\20int\29 2386:CircleOp::Circle&\20skia_private::TArray::emplace_back\28CircleOp::Circle&&\29 2387:CFF::CFFIndex>::sanitize\28hb_sanitize_context_t*\29\20const 2388:AlmostEqualUlps_Pin\28float\2c\20float\29 2389:wuffs_lzw__decoder__workbuf_len 2390:wuffs_gif__decoder__decode_image_config 2391:wuffs_gif__decoder__decode_frame_config 2392:winding_mono_quad\28SkPoint\20const*\2c\20float\2c\20float\2c\20int*\29 2393:winding_mono_conic\28SkConic\20const&\2c\20float\2c\20float\2c\20int*\29 2394:wcrtomb 2395:wchar_t\20const*\20std::__2::find\5babi:v160004\5d\28wchar_t\20const*\2c\20wchar_t\20const*\2c\20wchar_t\20const&\29 2396:void\20std::__2::__introsort\28skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::finish\28skia::textlayout::Block\20const&\2c\20float\2c\20float&\29::$_0&\2c\20std::__2::iterator_traits::difference_type\29 2397:void\20std::__2::__introsort\28\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::EntryComparator&\2c\20std::__2::iterator_traits<\28anonymous\20namespace\29::Entry*>::difference_type\29 2398:void\20std::__2::__introsort\28SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::Transform::\28anonymous\20namespace\29::BuiltinVariableScanner::sortNewElements\28\29::'lambda'\28SkSL::ProgramElement\20const*\2c\20SkSL::ProgramElement\20const*\29&\2c\20std::__2::iterator_traits::difference_type\29 2399:void\20std::__2::__introsort\28SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::Transform::FindAndDeclareBuiltinFunctions\28SkSL::Program&\29::$_0&\2c\20std::__2::iterator_traits::difference_type\29 2400:void\20std::__2::__inplace_merge\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::'lambda'\28\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\29&\2c\20std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>\28std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>\2c\20std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>\2c\20std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::'lambda'\28\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\29&\2c\20std::__2::iterator_traits\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>::difference_type\2c\20std::__2::iterator_traits\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>::difference_type\2c\20std::__2::iterator_traits\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>::value_type*\2c\20long\29 2401:void\20sort_r_simple\28void*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\20\28*\29\28void\20const*\2c\20void\20const*\2c\20void*\29\2c\20void*\29 2402:void\20sort_r_simple<>\28void*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\20\28*\29\28void\20const*\2c\20void\20const*\29\29.3 2403:void\20sort_r_simple<>\28void*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\20\28*\29\28void\20const*\2c\20void\20const*\29\29 2404:void\20SkTIntroSort\28double*\2c\20double*\29::'lambda'\28double\20const&\2c\20double\20const&\29>\28int\2c\20double*\2c\20int\2c\20void\20SkTQSort\28double*\2c\20double*\29::'lambda'\28double\20const&\2c\20double\20const&\29\20const&\29 2405:void\20SkTIntroSort\28SkEdge**\2c\20SkEdge**\29::'lambda'\28SkEdge\20const*\2c\20SkEdge\20const*\29>\28int\2c\20SkEdge*\2c\20int\2c\20void\20SkTQSort\28SkEdge**\2c\20SkEdge**\29::'lambda'\28SkEdge\20const*\2c\20SkEdge\20const*\29\20const&\29 2406:vfprintf 2407:valid_args\28SkImageInfo\20const&\2c\20unsigned\20long\2c\20unsigned\20long*\29 2408:update_offset_to_base\28char\20const*\2c\20long\29 2409:update_box 2410:unsigned\20long\20const&\20std::__2::min\5babi:v160004\5d\28unsigned\20long\20const&\2c\20unsigned\20long\20const&\29 2411:unsigned\20int\20std::__2::__sort5_wrap_policy\5babi:v160004\5d\28skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::finish\28skia::textlayout::Block\20const&\2c\20float\2c\20float&\29::$_0&\29 2412:unsigned\20int\20std::__2::__sort5_wrap_policy\5babi:v160004\5d\28\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::EntryComparator&\29 2413:unsigned\20int\20std::__2::__sort5_wrap_policy\5babi:v160004\5d\28SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::Transform::\28anonymous\20namespace\29::BuiltinVariableScanner::sortNewElements\28\29::'lambda'\28SkSL::ProgramElement\20const*\2c\20SkSL::ProgramElement\20const*\29&\29 2414:unsigned\20int\20std::__2::__sort5_wrap_policy\5babi:v160004\5d\28SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::Transform::FindAndDeclareBuiltinFunctions\28SkSL::Program&\29::$_0&\29 2415:unsigned\20int\20std::__2::__sort4\5babi:v160004\5d\28skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::finish\28skia::textlayout::Block\20const&\2c\20float\2c\20float&\29::$_0&\29 2416:unsigned\20int\20std::__2::__sort4\5babi:v160004\5d\28\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::EntryComparator&\29 2417:unsigned\20int\20std::__2::__sort4\5babi:v160004\5d\28SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::Transform::\28anonymous\20namespace\29::BuiltinVariableScanner::sortNewElements\28\29::'lambda'\28SkSL::ProgramElement\20const*\2c\20SkSL::ProgramElement\20const*\29&\29 2418:unsigned\20int\20std::__2::__sort4\5babi:v160004\5d\28SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::Transform::FindAndDeclareBuiltinFunctions\28SkSL::Program&\29::$_0&\29 2419:u_charMirror_skia 2420:tt_size_reset 2421:tt_sbit_decoder_load_metrics 2422:tt_face_get_location 2423:tt_face_find_bdf_prop 2424:tolower 2425:toTextStyle\28SimpleTextStyle\20const&\29 2426:t1_cmap_unicode_done 2427:subdivide_cubic_to\28SkPath*\2c\20SkPoint\20const*\2c\20int\29 2428:subdivide\28SkConic\20const&\2c\20SkPoint*\2c\20int\29 2429:strtox 2430:strtoull_l 2431:strtod 2432:std::logic_error::~logic_error\28\29.1 2433:std::__2::vector>::push_back\5babi:v160004\5d\28float&&\29 2434:std::__2::vector>::__append\28unsigned\20long\29 2435:std::__2::vector<\28anonymous\20namespace\29::CacheImpl::Value*\2c\20std::__2::allocator<\28anonymous\20namespace\29::CacheImpl::Value*>>::__throw_length_error\5babi:v160004\5d\28\29\20const 2436:std::__2::vector>::reserve\28unsigned\20long\29 2437:std::__2::vector\2c\20std::__2::allocator>>::push_back\5babi:v160004\5d\28SkRGBA4f<\28SkAlphaType\293>\20const&\29 2438:std::__2::unique_ptr<\28anonymous\20namespace\29::SoftwarePathData\2c\20std::__2::default_delete<\28anonymous\20namespace\29::SoftwarePathData>>::reset\5babi:v160004\5d\28\28anonymous\20namespace\29::SoftwarePathData*\29 2439:std::__2::time_put>>::~time_put\28\29.1 2440:std::__2::pair\2c\20std::__2::allocator>>>::~pair\28\29 2441:std::__2::pair\20std::__2::__copy_trivial::operator\28\29\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20char*\29\20const 2442:std::__2::locale::operator=\28std::__2::locale\20const&\29 2443:std::__2::locale::locale\28\29 2444:std::__2::iterator_traits::difference_type\20std::__2::distance\5babi:v160004\5d\28unsigned\20int\20const*\2c\20unsigned\20int\20const*\29 2445:std::__2::ios_base::~ios_base\28\29 2446:std::__2::ios_base::init\28void*\29 2447:std::__2::ios_base::clear\28unsigned\20int\29 2448:std::__2::fpos<__mbstate_t>::fpos\5babi:v160004\5d\28long\20long\29 2449:std::__2::enable_if::value\20&&\20is_move_assignable::value\2c\20void>::type\20std::__2::swap\5babi:v160004\5d\28SkAnimatedImage::Frame&\2c\20SkAnimatedImage::Frame&\29 2450:std::__2::default_delete::operator\28\29\5babi:v160004\5d\28SkSL::ProgramUsage*\29\20const 2451:std::__2::decay>::__call\28std::declval\20const&>\28\29\29\29>::type\20std::__2::__to_address\5babi:v160004\5d\2c\20void>\28std::__2::__wrap_iter\20const&\29 2452:std::__2::chrono::duration>::duration\5babi:v160004\5d\28long\20long\20const&\2c\20std::__2::enable_if::value\20&&\20\28std::__2::integral_constant::value\20||\20!treat_as_floating_point::value\29\2c\20void>::type*\29 2453:std::__2::char_traits::move\28char*\2c\20char\20const*\2c\20unsigned\20long\29 2454:std::__2::char_traits::assign\28char*\2c\20unsigned\20long\2c\20char\29 2455:std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29.2 2456:std::__2::basic_stringbuf\2c\20std::__2::allocator>::~basic_stringbuf\28\29 2457:std::__2::basic_stringbuf\2c\20std::__2::allocator>::str\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 2458:std::__2::basic_string\2c\20std::__2::allocator>::push_back\28wchar_t\29 2459:std::__2::basic_string\2c\20std::__2::allocator>::capacity\5babi:v160004\5d\28\29\20const 2460:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28char*\2c\20char*\2c\20std::__2::allocator\20const&\29 2461:std::__2::basic_string\2c\20std::__2::allocator>::__make_iterator\5babi:v160004\5d\28char*\29 2462:std::__2::basic_string\2c\20std::__2::allocator>::__grow_by\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29 2463:std::__2::basic_streambuf>::setp\5babi:v160004\5d\28char*\2c\20char*\29 2464:std::__2::basic_streambuf>::basic_streambuf\28\29 2465:std::__2::basic_ostream>::~basic_ostream\28\29.1 2466:std::__2::basic_istream>::~basic_istream\28\29.1 2467:std::__2::basic_istream>::sentry::sentry\28std::__2::basic_istream>&\2c\20bool\29 2468:std::__2::basic_iostream>::~basic_iostream\28\29.2 2469:std::__2::__wrap_iter::operator+\5babi:v160004\5d\28long\29\20const 2470:std::__2::__wrap_iter::operator+\5babi:v160004\5d\28long\29\20const 2471:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d\28SkSL::Position&\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray&&\29 2472:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d\28SkSL::Position&\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray&&\29 2473:std::__2::__throw_out_of_range\5babi:v160004\5d\28char\20const*\29 2474:std::__2::__throw_length_error\5babi:v160004\5d\28char\20const*\29 2475:std::__2::__optional_destruct_base::reset\5babi:v160004\5d\28\29 2476:std::__2::__num_get::__stage2_float_prep\28std::__2::ios_base&\2c\20wchar_t*\2c\20wchar_t&\2c\20wchar_t&\29 2477:std::__2::__num_get::__stage2_float_loop\28wchar_t\2c\20bool&\2c\20char&\2c\20char*\2c\20char*&\2c\20wchar_t\2c\20wchar_t\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int*\2c\20unsigned\20int*&\2c\20unsigned\20int&\2c\20wchar_t*\29 2478:std::__2::__num_get::__stage2_float_prep\28std::__2::ios_base&\2c\20char*\2c\20char&\2c\20char&\29 2479:std::__2::__num_get::__stage2_float_loop\28char\2c\20bool&\2c\20char&\2c\20char*\2c\20char*&\2c\20char\2c\20char\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int*\2c\20unsigned\20int*&\2c\20unsigned\20int&\2c\20char*\29 2480:std::__2::__libcpp_wcrtomb_l\5babi:v160004\5d\28char*\2c\20wchar_t\2c\20__mbstate_t*\2c\20__locale_struct*\29 2481:std::__2::__less::operator\28\29\5babi:v160004\5d\28unsigned\20int\20const&\2c\20unsigned\20long\20const&\29\20const 2482:std::__2::__itoa::__base_10_u32\5babi:v160004\5d\28char*\2c\20unsigned\20int\29 2483:std::__2::__itoa::__append6\5babi:v160004\5d\28char*\2c\20unsigned\20int\29 2484:std::__2::__itoa::__append4\5babi:v160004\5d\28char*\2c\20unsigned\20int\29 2485:sktext::gpu::VertexFiller::flatten\28SkWriteBuffer&\29\20const 2486:sktext::gpu::VertexFiller::Make\28skgpu::MaskFormat\2c\20SkMatrix\20const&\2c\20SkRect\2c\20SkSpan\2c\20sktext::gpu::SubRunAllocator*\2c\20sktext::gpu::FillerType\29 2487:sktext::gpu::SubRunContainer::draw\28SkCanvas*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20SkRefCnt\20const*\2c\20std::__2::function\2c\20sktext::gpu::RendererData\29>\20const&\29\20const 2488:sktext::gpu::SubRunAllocator::SubRunAllocator\28int\29 2489:sktext::gpu::GlyphVector::flatten\28SkWriteBuffer&\29\20const 2490:sktext::gpu::GlyphVector::Make\28sktext::SkStrikePromise&&\2c\20SkSpan\2c\20sktext::gpu::SubRunAllocator*\29 2491:sktext::SkStrikePromise::flatten\28SkWriteBuffer&\29\20const 2492:sktext::GlyphRunBuilder::makeGlyphRunList\28sktext::GlyphRun\20const&\2c\20SkPaint\20const&\2c\20SkPoint\29 2493:sktext::GlyphRun::GlyphRun\28SkFont\20const&\2c\20SkSpan\2c\20SkSpan\2c\20SkSpan\2c\20SkSpan\2c\20SkSpan\29 2494:skpaint_to_grpaint_impl\28GrRecordingContext*\2c\20GrColorInfo\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\2c\20std::__2::optional>>\2c\20SkBlender*\2c\20SkSurfaceProps\20const&\2c\20GrPaint*\29 2495:skip_literal_string 2496:skif::FilterResult::getAnalyzedShaderView\28skif::Context\20const&\2c\20SkSamplingOptions\20const&\2c\20SkEnumBitMask\29\20const 2497:skif::FilterResult::draw\28skif::Context\20const&\2c\20SkDevice*\2c\20bool\2c\20SkBlender\20const*\29\20const 2498:skif::FilterResult::Builder::outputBounds\28std::__2::optional>\29\20const 2499:skif::FilterResult::Builder::drawShader\28sk_sp\2c\20skif::LayerSpace\20const&\2c\20bool\29\20const 2500:skif::FilterResult::Builder::createInputShaders\28skif::LayerSpace\20const&\2c\20bool\29 2501:skia_private::THashTable\20\28*\29\28SkReadBuffer&\29\2c\20SkGoodHash>::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap\20\28*\29\28SkReadBuffer&\29\2c\20SkGoodHash>::Pair>::resize\28int\29 2502:skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::removeSlot\28int\29 2503:skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::resize\28int\29 2504:skia_private::THashTable::Pair\2c\20char\20const*\2c\20skia_private::THashMap::Pair>::resize\28int\29 2505:skia_private::THashTable::Pair\2c\20SkSL::IRNode\20const*\2c\20skia_private::THashMap::Pair>::resize\28int\29 2506:skia_private::THashTable::AdaptedTraits>::removeIfExists\28skgpu::ganesh::SmallPathShapeDataKey\20const&\29 2507:skia_private::THashTable::Traits>::resize\28int\29 2508:skia_private::THashTable>\2c\20GrGLGpu::ProgramCache::DescHash>::Entry*\2c\20GrProgramDesc\2c\20SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::Traits>::find\28GrProgramDesc\20const&\29\20const 2509:skia_private::THashTable::AdaptedTraits>::uncheckedSet\28GrThreadSafeCache::Entry*&&\29 2510:skia_private::THashTable::AdaptedTraits>::resize\28int\29 2511:skia_private::THashTable::AdaptedTraits>::removeIfExists\28skgpu::UniqueKey\20const&\29 2512:skia_private::THashTable::AdaptedTraits>::uncheckedSet\28GrTextureProxy*&&\29 2513:skia_private::THashTable::AdaptedTraits>::resize\28int\29 2514:skia_private::THashTable::Traits>::uncheckedSet\28FT_Opaque_Paint_&&\29 2515:skia_private::THashTable::Traits>::resize\28int\29 2516:skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::~THashMap\28\29 2517:skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::find\28std::__2::basic_string_view>\20const&\29\20const 2518:skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::THashMap\28std::initializer_list>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>\29 2519:skia_private::THashMap>\2c\20SkGoodHash>::set\28SkSL::Variable\20const*\2c\20std::__2::unique_ptr>\29 2520:skia_private::TArray::resize_back\28int\29 2521:skia_private::TArray::push_back_raw\28int\29 2522:skia_private::TArray::resize_back\28int\29 2523:skia_png_write_chunk 2524:skia_png_set_sBIT 2525:skia_png_set_read_fn 2526:skia_png_set_packing 2527:skia_png_set_bKGD 2528:skia_png_save_uint_32 2529:skia_png_reciprocal2 2530:skia_png_realloc_array 2531:skia_png_read_start_row 2532:skia_png_read_IDAT_data 2533:skia_png_handle_zTXt 2534:skia_png_handle_tRNS 2535:skia_png_handle_tIME 2536:skia_png_handle_tEXt 2537:skia_png_handle_sRGB 2538:skia_png_handle_sPLT 2539:skia_png_handle_sCAL 2540:skia_png_handle_sBIT 2541:skia_png_handle_pHYs 2542:skia_png_handle_pCAL 2543:skia_png_handle_oFFs 2544:skia_png_handle_iTXt 2545:skia_png_handle_iCCP 2546:skia_png_handle_hIST 2547:skia_png_handle_gAMA 2548:skia_png_handle_cHRM 2549:skia_png_handle_bKGD 2550:skia_png_handle_as_unknown 2551:skia_png_handle_PLTE 2552:skia_png_do_strip_channel 2553:skia_png_destroy_read_struct 2554:skia_png_destroy_info_struct 2555:skia_png_compress_IDAT 2556:skia_png_combine_row 2557:skia_png_colorspace_set_sRGB 2558:skia_png_check_fp_string 2559:skia_png_check_fp_number 2560:skia::textlayout::TypefaceFontStyleSet::createTypeface\28int\29 2561:skia::textlayout::TextLine::shapeEllipsis\28SkString\20const&\2c\20skia::textlayout::Cluster\20const*\29::$_0::operator\28\29\28sk_sp\2c\20sk_sp\29\20const 2562:skia::textlayout::TextLine::getRectsForRange\28skia::textlayout::SkRange\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const 2563:skia::textlayout::TextLine::getGlyphPositionAtCoordinate\28float\29 2564:skia::textlayout::Run::isResolved\28\29\20const 2565:skia::textlayout::Run::copyTo\28SkTextBlobBuilder&\2c\20unsigned\20long\2c\20unsigned\20long\29\20const 2566:skia::textlayout::ParagraphImpl::buildClusterTable\28\29 2567:skia::textlayout::ParagraphBuilderImpl::ensureUTF16Mapping\28\29 2568:skia::textlayout::OneLineShaper::~OneLineShaper\28\29 2569:skia::textlayout::FontCollection::setDefaultFontManager\28sk_sp\29 2570:skia::textlayout::FontCollection::FontCollection\28\29 2571:skia::textlayout::Cluster::isSoftBreak\28\29\20const 2572:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::flush\28GrMeshDrawTarget*\2c\20skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::FlushInfo*\29\20const 2573:skgpu::ganesh::\28anonymous\20namespace\29::HullShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::~Impl\28\29 2574:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::programInfo\28\29 2575:skgpu::ganesh::SurfaceFillContext::discard\28\29 2576:skgpu::ganesh::SurfaceDrawContext::internalStencilClear\28SkIRect\20const*\2c\20bool\29 2577:skgpu::ganesh::SurfaceDrawContext::drawPath\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkPath\20const&\2c\20GrStyle\20const&\29 2578:skgpu::ganesh::SurfaceDrawContext::attemptQuadOptimization\28GrClip\20const*\2c\20GrUserStencilSettings\20const*\2c\20DrawQuad*\2c\20GrPaint*\29 2579:skgpu::ganesh::SurfaceDrawContext::Make\28GrRecordingContext*\2c\20GrColorType\2c\20sk_sp\2c\20sk_sp\2c\20GrSurfaceOrigin\2c\20SkSurfaceProps\20const&\29 2580:skgpu::ganesh::SurfaceContext::rescaleInto\28skgpu::ganesh::SurfaceFillContext*\2c\20SkIRect\2c\20SkIRect\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\29::$_0::operator\28\29\28GrSurfaceProxyView\2c\20SkIRect\29\20const 2581:skgpu::ganesh::SmallPathAtlasMgr::~SmallPathAtlasMgr\28\29 2582:skgpu::ganesh::QuadPerEdgeAA::MinColorType\28SkRGBA4f<\28SkAlphaType\292>\29 2583:skgpu::ganesh::PathRendererChain::PathRendererChain\28GrRecordingContext*\2c\20skgpu::ganesh::PathRendererChain::Options\20const&\29 2584:skgpu::ganesh::PathCurveTessellator::draw\28GrOpFlushState*\29\20const 2585:skgpu::ganesh::OpsTask::recordOp\28std::__2::unique_ptr>\2c\20bool\2c\20GrProcessorSet::Analysis\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const*\2c\20GrCaps\20const&\29 2586:skgpu::ganesh::FilterAndMipmapHaveNoEffect\28GrQuad\20const&\2c\20GrQuad\20const&\29 2587:skgpu::ganesh::FillRectOp::MakeNonAARect\28GrRecordingContext*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20GrUserStencilSettings\20const*\29 2588:skgpu::ganesh::FillRRectOp::Make\28GrRecordingContext*\2c\20SkArenaAlloc*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkRRect\20const&\2c\20SkRect\20const&\2c\20GrAA\29 2589:skgpu::ganesh::Device::drawRRect\28SkRRect\20const&\2c\20SkPaint\20const&\29 2590:skgpu::ganesh::Device::drawImageQuadDirect\28SkImage\20const*\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 2591:skgpu::ganesh::Device::Make\28std::__2::unique_ptr>\2c\20SkAlphaType\2c\20skgpu::ganesh::Device::InitContents\29 2592:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::setup_dashed_rect\28SkRect\20const&\2c\20skgpu::VertexWriter&\2c\20SkMatrix\20const&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashCap\29 2593:skgpu::ganesh::ClipStack::SaveRecord::invalidateMasks\28GrProxyProvider*\2c\20SkTBlockList*\29 2594:skgpu::ganesh::ClipStack::RawElement::contains\28skgpu::ganesh::ClipStack::SaveRecord\20const&\29\20const 2595:skgpu::ganesh::AtlasTextOp::operator\20new\28unsigned\20long\29 2596:skgpu::ganesh::AtlasTextOp::Geometry::Make\28sktext::gpu::AtlasSubRun\20const&\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\2c\20sk_sp&&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkArenaAlloc*\29 2597:skgpu::ganesh::AtlasRenderTask::addAtlasDrawOp\28std::__2::unique_ptr>\2c\20GrCaps\20const&\29 2598:skcms_Transform::$_2::operator\28\29\28skcms_Curve\20const*\2c\20int\29\20const 2599:skcms_MaxRoundtripError 2600:sk_free_releaseproc\28void\20const*\2c\20void*\29 2601:siprintf 2602:sift 2603:rotate\28SkDCubic\20const&\2c\20int\2c\20int\2c\20SkDCubic&\29 2604:read_header\28SkStream*\2c\20SkISize*\29 2605:quad_intersect_ray\28SkPoint\20const*\2c\20float\2c\20SkDLine\20const&\2c\20SkIntersections*\29 2606:qsort 2607:psh_globals_set_scale 2608:ps_parser_skip_PS_token 2609:ps_builder_done 2610:portable::uniform_color\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 2611:png_text_compress 2612:png_inflate_read 2613:png_inflate_claim 2614:png_image_size 2615:png_colorspace_endpoints_match 2616:png_build_16bit_table 2617:normalize 2618:next_marker 2619:morphpoints\28SkPoint*\2c\20SkPoint\20const*\2c\20int\2c\20SkPathMeasure&\2c\20float\29 2620:make_unpremul_effect\28std::__2::unique_ptr>\29 2621:long\20std::__2::__libcpp_atomic_refcount_decrement\5babi:v160004\5d\28long&\29 2622:long\20const&\20std::__2::min\5babi:v160004\5d\28long\20const&\2c\20long\20const&\29 2623:log1p 2624:load_truetype_glyph 2625:line_intersect_ray\28SkPoint\20const*\2c\20float\2c\20SkDLine\20const&\2c\20SkIntersections*\29 2626:lang_find_or_insert\28char\20const*\29 2627:jpeg_calc_output_dimensions 2628:inner_scanline\28int\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkBlitter*\29 2629:inflate_table 2630:increment_simple_rowgroup_ctr 2631:hb_tag_from_string 2632:hb_shape_plan_destroy 2633:hb_script_get_horizontal_direction 2634:hb_paint_extents_context_t::push_clip\28hb_extents_t\29 2635:hb_ot_color_palette_get_colors 2636:hb_lazy_loader_t\2c\20hb_face_t\2c\2012u\2c\20OT::vmtx_accelerator_t>::get\28\29\20const 2637:hb_lazy_loader_t\2c\20hb_face_t\2c\2023u\2c\20hb_blob_t>::get\28\29\20const 2638:hb_lazy_loader_t\2c\20hb_face_t\2c\201u\2c\20hb_blob_t>::get\28\29\20const 2639:hb_lazy_loader_t\2c\20hb_face_t\2c\2018u\2c\20hb_blob_t>::get\28\29\20const 2640:hb_hashmap_t::alloc\28unsigned\20int\29 2641:hb_font_funcs_destroy 2642:hb_face_get_upem 2643:hb_face_destroy 2644:hb_draw_cubic_to_nil\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 2645:hb_buffer_set_segment_properties 2646:hb_blob_create 2647:gray_render_line 2648:get_vendor\28char\20const*\29 2649:get_renderer\28char\20const*\2c\20GrGLExtensions\20const&\29 2650:get_joining_type\28unsigned\20int\2c\20hb_unicode_general_category_t\29 2651:generate_distance_field_from_image\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\29 2652:ft_var_readpackeddeltas 2653:ft_var_get_item_delta 2654:ft_var_done_item_variation_store 2655:ft_glyphslot_done 2656:ft_glyphslot_alloc_bitmap 2657:freelocale 2658:free_pool 2659:fquad_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 2660:fp_barrierf 2661:fline_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 2662:fixN0c\28BracketData*\2c\20int\2c\20int\2c\20unsigned\20char\29 2663:fcubic_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 2664:fconic_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 2665:fclose 2666:exp2f 2667:emscripten::internal::MethodInvoker::invoke\28void\20\28SkFont::*\20const&\29\28float\29\2c\20SkFont*\2c\20float\29 2668:emscripten::internal::MethodInvoker\20\28SkAnimatedImage::*\29\28\29\2c\20sk_sp\2c\20SkAnimatedImage*>::invoke\28sk_sp\20\28SkAnimatedImage::*\20const&\29\28\29\2c\20SkAnimatedImage*\29 2669:emscripten::internal::Invoker>\2c\20SimpleParagraphStyle\2c\20sk_sp>::invoke\28std::__2::unique_ptr>\20\28*\29\28SimpleParagraphStyle\2c\20sk_sp\29\2c\20SimpleParagraphStyle*\2c\20sk_sp*\29 2670:emscripten::internal::FunctionInvoker::invoke\28int\20\28**\29\28SkCanvas&\2c\20SkPaint\20const*\2c\20unsigned\20long\2c\20SkImageFilter\20const*\2c\20unsigned\20int\29\2c\20SkCanvas*\2c\20SkPaint\20const*\2c\20unsigned\20long\2c\20SkImageFilter\20const*\2c\20unsigned\20int\29 2671:emscripten::internal::FunctionInvoker::invoke\28emscripten::val\20\28**\29\28SkFontMgr&\2c\20int\29\2c\20SkFontMgr*\2c\20int\29 2672:do_scanline\28int\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkBlitter*\29 2673:decompose\28hb_ot_shape_normalize_context_t\20const*\2c\20bool\2c\20unsigned\20int\29 2674:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\20const&\2c\20skgpu::ganesh::DashOp::AAMode\2c\20SkMatrix\20const&\2c\20bool\29::$_0>\28skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingCircleEffect::Make\28SkArenaAlloc*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20skgpu::ganesh::DashOp::AAMode\2c\20SkMatrix\20const&\2c\20bool\29::$_0&&\29::'lambda'\28char*\29::__invoke\28char*\29 2675:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28GrCaps\20const&\2c\20GrSurfaceProxyView\20const&\2c\20bool&\2c\20GrPipeline*&\2c\20GrUserStencilSettings\20const*&&\2c\20\28anonymous\20namespace\29::DrawAtlasPathShader*&\2c\20GrPrimitiveType&&\2c\20GrXferBarrierFlags&\2c\20GrLoadOp&\29::'lambda'\28void*\29>\28GrProgramInfo&&\29::'lambda'\28char*\29::__invoke\28char*\29 2676:cubic_intersect_ray\28SkPoint\20const*\2c\20float\2c\20SkDLine\20const&\2c\20SkIntersections*\29 2677:conic_intersect_ray\28SkPoint\20const*\2c\20float\2c\20SkDLine\20const&\2c\20SkIntersections*\29 2678:char\20const*\20std::__2::find\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20char\20const&\29 2679:char\20const*\20std::__2::__rewrap_range\5babi:v160004\5d\28char\20const*\2c\20char\20const*\29 2680:cff_index_get_pointers 2681:cff2_path_param_t::move_to\28CFF::point_t\20const&\29 2682:cff1_path_param_t::move_to\28CFF::point_t\20const&\29 2683:cf2_glyphpath_computeOffset 2684:cached_mask_gamma\28float\2c\20float\2c\20float\29 2685:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 2686:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 2687:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 2688:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 2689:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 2690:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 2691:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 2692:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 2693:byn$mgfn-shared$void\20SkSwizzler::SkipLeading8888ZerosThen<&fast_swizzle_rgba_to_rgba_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 2694:byn$mgfn-shared$std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d\28SkSL::Position&\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray&&\29 2695:byn$mgfn-shared$std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 2696:byn$mgfn-shared$skia_private::TArray::operator=\28skia_private::TArray\20const&\29 2697:byn$mgfn-shared$skia_private::TArray::operator=\28skia_private::TArray&&\29 2698:byn$mgfn-shared$skgpu::ganesh::\28anonymous\20namespace\29::HullShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 2699:byn$mgfn-shared$non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 2700:byn$mgfn-shared$\28anonymous\20namespace\29::DirectMaskSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 2701:byn$mgfn-shared$SkRuntimeEffect::MakeForColorFilter\28SkString\2c\20SkRuntimeEffect::Options\20const&\29 2702:byn$mgfn-shared$SkImageInfo::MakeN32Premul\28int\2c\20int\29 2703:byn$mgfn-shared$SkBlockMemoryStream::~SkBlockMemoryStream\28\29.1 2704:byn$mgfn-shared$SkBlockMemoryStream::~SkBlockMemoryStream\28\29 2705:byn$mgfn-shared$SkBinaryWriteBuffer::writeScalarArray\28float\20const*\2c\20unsigned\20int\29 2706:byn$mgfn-shared$Round_To_Grid 2707:byn$mgfn-shared$LineConicIntersections::addLineNearEndPoints\28\29 2708:byn$mgfn-shared$GrModulateAtlasCoverageEffect::onMakeProgramImpl\28\29\20const 2709:byn$mgfn-shared$GrGLProgramDataManager::setMatrix2fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 2710:byn$mgfn-shared$GrGLProgramDataManager::setMatrix2f\28GrResourceHandle\2c\20float\20const*\29\20const 2711:byn$mgfn-shared$DefaultGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 2712:build_tree 2713:bracketAddOpening\28BracketData*\2c\20char16_t\2c\20int\29 2714:bool\20OT::glyf_impl::Glyph::get_points\28hb_font_t*\2c\20OT::glyf_accelerator_t\20const&\2c\20contour_point_vector_t&\2c\20contour_point_vector_t*\2c\20head_maxp_info_t*\2c\20unsigned\20int*\2c\20bool\2c\20bool\2c\20bool\2c\20hb_array_t\2c\20hb_map_t*\2c\20unsigned\20int\2c\20unsigned\20int*\29\20const 2715:bool\20OT::glyf_accelerator_t::get_points\28hb_font_t*\2c\20unsigned\20int\2c\20OT::glyf_accelerator_t::points_aggregator_t\29\20const 2716:bool\20OT::GSUBGPOSVersion1_2::sanitize\28hb_sanitize_context_t*\29\20const 2717:bool\20OT::GSUBGPOSVersion1_2::sanitize\28hb_sanitize_context_t*\29\20const 2718:blit_aaa_trapezoid_row\28AdditiveBlitter*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char*\2c\20bool\2c\20bool\2c\20bool\29 2719:auto\20std::__2::__unwrap_range\5babi:v160004\5d\28char\20const*\2c\20char\20const*\29 2720:atan 2721:alloc_large 2722:af_glyph_hints_done 2723:add_quad\28SkPoint\20const*\2c\20skia_private::TArray*\29 2724:acos 2725:aaa_fill_path\28SkPath\20const&\2c\20SkIRect\20const&\2c\20AdditiveBlitter*\2c\20int\2c\20int\2c\20bool\2c\20bool\2c\20bool\29 2726:_get_path\28OT::cff1::accelerator_t\20const*\2c\20hb_font_t*\2c\20unsigned\20int\2c\20hb_draw_session_t&\2c\20bool\2c\20CFF::point_t*\29 2727:_get_bounds\28OT::cff1::accelerator_t\20const*\2c\20unsigned\20int\2c\20bounds_t&\2c\20bool\29 2728:_embind_register_bindings 2729:__trunctfdf2 2730:__towrite 2731:__toread 2732:__subtf3 2733:__strchrnul 2734:__rem_pio2f 2735:__rem_pio2 2736:__math_uflowf 2737:__math_oflowf 2738:__fwritex 2739:__cxxabiv1::__class_type_info::process_static_type_below_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20int\29\20const 2740:__cxxabiv1::__class_type_info::process_static_type_above_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20void\20const*\2c\20int\29\20const 2741:__cxxabiv1::__class_type_info::process_found_base_class\28__cxxabiv1::__dynamic_cast_info*\2c\20void*\2c\20int\29\20const 2742:__cxxabiv1::__base_class_type_info::search_above_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 2743:\28anonymous\20namespace\29::shape_contains_rect\28GrShape\20const&\2c\20SkMatrix\20const&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20SkMatrix\20const&\2c\20bool\29 2744:\28anonymous\20namespace\29::generateFacePathCOLRv1\28FT_FaceRec_*\2c\20unsigned\20short\2c\20SkPath*\29 2745:\28anonymous\20namespace\29::convert_noninflect_cubic_to_quads_with_constraint\28SkPoint\20const*\2c\20float\2c\20SkPathFirstDirection\2c\20skia_private::TArray*\2c\20int\29 2746:\28anonymous\20namespace\29::convert_noninflect_cubic_to_quads\28SkPoint\20const*\2c\20float\2c\20skia_private::TArray*\2c\20int\2c\20bool\2c\20bool\29 2747:\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const 2748:\28anonymous\20namespace\29::bloat_quad\28SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkMatrix\20const*\2c\20\28anonymous\20namespace\29::BezierVertex*\29 2749:\28anonymous\20namespace\29::SkEmptyTypeface::onMakeClone\28SkFontArguments\20const&\29\20const 2750:\28anonymous\20namespace\29::SkColorFilterImageFilter::~SkColorFilterImageFilter\28\29.1 2751:\28anonymous\20namespace\29::SkColorFilterImageFilter::~SkColorFilterImageFilter\28\29 2752:\28anonymous\20namespace\29::SkBlurImageFilter::mapSigma\28skif::Mapping\20const&\2c\20bool\29\20const 2753:\28anonymous\20namespace\29::DrawAtlasOpImpl::visitProxies\28std::__2::function\20const&\29\20const 2754:\28anonymous\20namespace\29::DrawAtlasOpImpl::programInfo\28\29 2755:\28anonymous\20namespace\29::DrawAtlasOpImpl::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 2756:\28anonymous\20namespace\29::DirectMaskSubRun::testingOnly_packedGlyphIDToGlyph\28sktext::gpu::StrikeCache*\29\20const 2757:\28anonymous\20namespace\29::DirectMaskSubRun::glyphs\28\29\20const 2758:WebPRescaleNeededLines 2759:WebPInitDecBufferInternal 2760:WebPInitCustomIo 2761:WebPGetFeaturesInternal 2762:WebPDemuxGetFrame 2763:VP8LInitBitReader 2764:VP8LColorIndexInverseTransformAlpha 2765:VP8InitIoInternal 2766:VP8InitBitReader 2767:TT_Vary_Apply_Glyph_Deltas 2768:TT_Set_Var_Design 2769:SkWuffsCodec::decodeFrame\28\29 2770:SkVertices::MakeCopy\28SkVertices::VertexMode\2c\20int\2c\20SkPoint\20const*\2c\20SkPoint\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20short\20const*\29 2771:SkVertices::Builder::texCoords\28\29 2772:SkVertices::Builder::positions\28\29 2773:SkVertices::Builder::init\28SkVertices::Desc\20const&\29 2774:SkVertices::Builder::colors\28\29 2775:SkVertices::Builder::Builder\28SkVertices::VertexMode\2c\20int\2c\20int\2c\20unsigned\20int\29 2776:SkTypeface_FreeType::MakeFromStream\28std::__2::unique_ptr>\2c\20SkFontArguments\20const&\29 2777:SkTypeface::getTableSize\28unsigned\20int\29\20const 2778:SkTextBlobRunIterator::positioning\28\29\20const 2779:SkTSpan::splitAt\28SkTSpan*\2c\20double\2c\20SkArenaAlloc*\29 2780:SkTSect::computePerpendiculars\28SkTSect*\2c\20SkTSpan*\2c\20SkTSpan*\29 2781:SkTDStorage::insert\28int\29 2782:SkTDStorage::calculateSizeOrDie\28int\29::$_0::operator\28\29\28\29\20const 2783:SkTDPQueue::percolateDownIfNecessary\28int\29 2784:SkTConic::hullIntersects\28SkDConic\20const&\2c\20bool*\29\20const 2785:SkSurface_Base::SkSurface_Base\28int\2c\20int\2c\20SkSurfaceProps\20const*\29 2786:SkStrokerPriv::CapFactory\28SkPaint::Cap\29 2787:SkStrokeRec::getInflationRadius\28\29\20const 2788:SkString::equals\28char\20const*\29\20const 2789:SkStrikeSpec::MakeTransformMask\28SkFont\20const&\2c\20SkPaint\20const&\2c\20SkSurfaceProps\20const&\2c\20SkScalerContextFlags\2c\20SkMatrix\20const&\29 2790:SkStrikeSpec::MakePath\28SkFont\20const&\2c\20SkPaint\20const&\2c\20SkSurfaceProps\20const&\2c\20SkScalerContextFlags\29 2791:SkStrike::glyph\28SkGlyphDigest\29 2792:SkSpecialImages::AsView\28GrRecordingContext*\2c\20SkSpecialImage\20const*\29 2793:SkShapers::HB::ShapeDontWrapOrReorder\28sk_sp\2c\20sk_sp\29 2794:SkShaper::TrivialRunIterator::endOfCurrentRun\28\29\20const 2795:SkShaper::TrivialRunIterator::atEnd\28\29\20const 2796:SkShaper::MakeFontMgrRunIterator\28char\20const*\2c\20unsigned\20long\2c\20SkFont\20const&\2c\20sk_sp\29 2797:SkShadowTessellator::MakeAmbient\28SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkPoint3\20const&\2c\20bool\29 2798:SkScan::FillTriangle\28SkPoint\20const*\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 2799:SkScan::FillPath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 2800:SkScan::FillIRect\28SkIRect\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 2801:SkScan::AntiHairLine\28SkPoint\20const*\2c\20int\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 2802:SkScan::AntiFillPath\28SkPath\20const&\2c\20SkRegion\20const&\2c\20SkBlitter*\2c\20bool\29 2803:SkScalerContextFTUtils::drawSVGGlyph\28FT_FaceRec_*\2c\20SkGlyph\20const&\2c\20unsigned\20int\2c\20SkSpan\2c\20SkCanvas*\29\20const 2804:SkScalarInterpFunc\28float\2c\20float\20const*\2c\20float\20const*\2c\20int\29 2805:SkSLTypeString\28SkSLType\29 2806:SkSL::simplify_negation\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\29 2807:SkSL::simplify_matrix_multiplication\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\2c\20int\2c\20int\2c\20int\2c\20int\29 2808:SkSL::simplify_componentwise\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\29 2809:SkSL::build_argument_type_list\28SkSpan>\20const>\29 2810:SkSL::\28anonymous\20namespace\29::SwitchCaseContainsExit::visitStatement\28SkSL::Statement\20const&\29 2811:SkSL::\28anonymous\20namespace\29::ReturnsInputAlphaVisitor::returnsInputAlpha\28SkSL::Expression\20const&\29 2812:SkSL::\28anonymous\20namespace\29::ConstantExpressionVisitor::visitExpression\28SkSL::Expression\20const&\29 2813:SkSL::Variable::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Position\2c\20SkSL::Layout\20const&\2c\20SkSL::ModifierFlags\2c\20SkSL::Type\20const*\2c\20SkSL::Position\2c\20std::__2::basic_string_view>\2c\20SkSL::VariableStorage\29 2814:SkSL::Type::checkForOutOfRangeLiteral\28SkSL::Context\20const&\2c\20SkSL::Expression\20const&\29\20const 2815:SkSL::Type::MakeSamplerType\28char\20const*\2c\20SkSL::Type\20const&\29 2816:SkSL::SymbolTable::moveSymbolTo\28SkSL::SymbolTable*\2c\20SkSL::Symbol*\2c\20SkSL::Context\20const&\29 2817:SkSL::SymbolTable::isType\28std::__2::basic_string_view>\29\20const 2818:SkSL::Symbol::instantiate\28SkSL::Context\20const&\2c\20SkSL::Position\29\20const 2819:SkSL::SampleUsage::merge\28SkSL::SampleUsage\20const&\29 2820:SkSL::ReturnStatement::~ReturnStatement\28\29.1 2821:SkSL::ReturnStatement::~ReturnStatement\28\29 2822:SkSL::RP::UnownedLValueSlice::~UnownedLValueSlice\28\29 2823:SkSL::RP::Generator::pushTernaryExpression\28SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\29 2824:SkSL::RP::Generator::pushStructuredComparison\28SkSL::RP::LValue*\2c\20SkSL::Operator\2c\20SkSL::RP::LValue*\2c\20SkSL::Type\20const&\29 2825:SkSL::RP::Generator::pushMatrixMultiply\28SkSL::RP::LValue*\2c\20SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\2c\20int\2c\20int\2c\20int\2c\20int\29 2826:SkSL::RP::DynamicIndexLValue::~DynamicIndexLValue\28\29 2827:SkSL::RP::Builder::push_uniform\28SkSL::RP::SlotRange\29 2828:SkSL::RP::Builder::merge_condition_mask\28\29 2829:SkSL::RP::Builder::jump\28int\29 2830:SkSL::RP::Builder::branch_if_no_active_lanes_on_stack_top_equal\28int\2c\20int\29 2831:SkSL::ProgramUsage::add\28SkSL::ProgramElement\20const&\29 2832:SkSL::Pool::detachFromThread\28\29 2833:SkSL::PipelineStage::ConvertProgram\28SkSL::Program\20const&\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20SkSL::PipelineStage::Callbacks*\29 2834:SkSL::Parser::unaryExpression\28\29 2835:SkSL::Parser::swizzle\28SkSL::Position\2c\20std::__2::unique_ptr>\2c\20std::__2::basic_string_view>\2c\20SkSL::Position\29 2836:SkSL::Parser::block\28bool\2c\20std::__2::unique_ptr>*\29 2837:SkSL::Operator::getBinaryPrecedence\28\29\20const 2838:SkSL::ModuleLoader::loadGPUModule\28SkSL::Compiler*\29 2839:SkSL::ModifierFlags::checkPermittedFlags\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ModifierFlags\29\20const 2840:SkSL::Mangler::uniqueName\28std::__2::basic_string_view>\2c\20SkSL::SymbolTable*\29 2841:SkSL::LiteralType::slotType\28unsigned\20long\29\20const 2842:SkSL::Layout::operator==\28SkSL::Layout\20const&\29\20const 2843:SkSL::Layout::checkPermittedLayout\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkEnumBitMask\29\20const 2844:SkSL::Inliner::analyze\28std::__2::vector>\2c\20std::__2::allocator>>>\20const&\2c\20SkSL::SymbolTable*\2c\20SkSL::ProgramUsage*\29 2845:SkSL::GLSLCodeGenerator::~GLSLCodeGenerator\28\29 2846:SkSL::GLSLCodeGenerator::writeLiteral\28SkSL::Literal\20const&\29 2847:SkSL::GLSLCodeGenerator::writeFunctionDeclaration\28SkSL::FunctionDeclaration\20const&\29 2848:SkSL::ForStatement::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ForLoopPositions\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 2849:SkSL::FieldAccess::description\28SkSL::OperatorPrecedence\29\20const 2850:SkSL::Expression::isIncomplete\28SkSL::Context\20const&\29\20const 2851:SkSL::Expression::compareConstant\28SkSL::Expression\20const&\29\20const 2852:SkSL::DebugTracePriv::~DebugTracePriv\28\29 2853:SkSL::Context::Context\28SkSL::BuiltinTypes\20const&\2c\20SkSL::ErrorReporter&\29 2854:SkSL::ConstructorArrayCast::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>\29 2855:SkSL::ConstructorArray::~ConstructorArray\28\29 2856:SkSL::ConstructorArray::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray\29 2857:SkSL::Analysis::CheckProgramStructure\28SkSL::Program\20const&\2c\20bool\29::ProgramSizeVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 2858:SkSL::Analysis::CallsColorTransformIntrinsics\28SkSL::Program\20const&\29 2859:SkSL::AliasType::bitWidth\28\29\20const 2860:SkRuntimeEffectPriv::VarAsUniform\28SkSL::Variable\20const&\2c\20SkSL::Context\20const&\2c\20unsigned\20long*\29 2861:SkRuntimeEffectPriv::UniformsAsSpan\28SkSpan\2c\20sk_sp\2c\20bool\2c\20SkColorSpace\20const*\2c\20SkArenaAlloc*\29 2862:SkRuntimeEffect::source\28\29\20const 2863:SkRuntimeEffect::makeShader\28sk_sp\2c\20SkSpan\2c\20SkMatrix\20const*\29\20const 2864:SkRuntimeEffect::MakeForBlender\28SkString\2c\20SkRuntimeEffect::Options\20const&\29 2865:SkResourceCache::checkMessages\28\29 2866:SkResourceCache::NewCachedData\28unsigned\20long\29 2867:SkRegion::translate\28int\2c\20int\2c\20SkRegion*\29\20const 2868:SkReduceOrder::Cubic\28SkPoint\20const*\2c\20SkPoint*\29 2869:SkRectPriv::QuadContainsRectMask\28SkM44\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20float\29 2870:SkRectPriv::ClosestDisjointEdge\28SkIRect\20const&\2c\20SkIRect\20const&\29 2871:SkRecords::PreCachedPath::PreCachedPath\28SkPath\20const&\29 2872:SkRecords::FillBounds::pushSaveBlock\28SkPaint\20const*\29 2873:SkRecordDraw\28SkRecord\20const&\2c\20SkCanvas*\2c\20SkPicture\20const*\20const*\2c\20SkDrawable*\20const*\2c\20int\2c\20SkBBoxHierarchy\20const*\2c\20SkPicture::AbortCallback*\29 2874:SkReadBuffer::readPoint\28SkPoint*\29 2875:SkReadBuffer::readPath\28SkPath*\29 2876:SkReadBuffer::readByteArrayAsData\28\29 2877:SkReadBuffer::readArray\28void*\2c\20unsigned\20long\2c\20unsigned\20long\29 2878:SkRasterPipelineBlitter::~SkRasterPipelineBlitter\28\29 2879:SkRasterPipelineBlitter::blitRectWithTrace\28int\2c\20int\2c\20int\2c\20int\2c\20bool\29 2880:SkRasterPipelineBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 2881:SkRasterPipelineBlitter::Create\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkArenaAlloc*\2c\20SkRasterPipeline\20const&\2c\20bool\2c\20bool\2c\20SkShader\20const*\29 2882:SkRasterPipeline::appendLoad\28SkColorType\2c\20SkRasterPipeline_MemoryCtx\20const*\29 2883:SkRasterClip::op\28SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkClipOp\2c\20bool\29 2884:SkRRectPriv::ConservativeIntersect\28SkRRect\20const&\2c\20SkRRect\20const&\29 2885:SkRRect::scaleRadii\28\29 2886:SkRRect::AreRectAndRadiiValid\28SkRect\20const&\2c\20SkPoint\20const*\29 2887:SkRBuffer::skip\28unsigned\20long\29 2888:SkPngCodec::IsPng\28void\20const*\2c\20unsigned\20long\29 2889:SkPixmap::setColorSpace\28sk_sp\29 2890:SkPixelRef::~SkPixelRef\28\29 2891:SkPixelRef::notifyPixelsChanged\28\29 2892:SkPictureRecorder::beginRecording\28SkRect\20const&\2c\20sk_sp\29 2893:SkPictureRecord::addPathToHeap\28SkPath\20const&\29 2894:SkPictureData::getPath\28SkReadBuffer*\29\20const 2895:SkPicture::serialize\28SkWStream*\2c\20SkSerialProcs\20const*\2c\20SkRefCntSet*\2c\20bool\29\20const 2896:SkPathWriter::update\28SkOpPtT\20const*\29 2897:SkPathStroker::strokeCloseEnough\28SkPoint\20const*\2c\20SkPoint\20const*\2c\20SkQuadConstruct*\29\20const 2898:SkPathStroker::finishContour\28bool\2c\20bool\29 2899:SkPathRef::reset\28\29 2900:SkPathRef::isRRect\28SkRRect*\2c\20bool*\2c\20unsigned\20int*\29\20const 2901:SkPathRef::addGenIDChangeListener\28sk_sp\29 2902:SkPathPriv::IsRectContour\28SkPath\20const&\2c\20bool\2c\20int*\2c\20SkPoint\20const**\2c\20bool*\2c\20SkPathDirection*\2c\20SkRect*\29 2903:SkPathEffectBase::onAsPoints\28SkPathEffectBase::PointData*\2c\20SkPath\20const&\2c\20SkStrokeRec\20const&\2c\20SkMatrix\20const&\2c\20SkRect\20const*\29\20const 2904:SkPathEffect::filterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\29\20const 2905:SkPathBuilder::quadTo\28SkPoint\2c\20SkPoint\29 2906:SkPathBuilder::cubicTo\28SkPoint\2c\20SkPoint\2c\20SkPoint\29 2907:SkPath::writeToMemory\28void*\29\20const 2908:SkPath::reversePathTo\28SkPath\20const&\29 2909:SkPath::rQuadTo\28float\2c\20float\2c\20float\2c\20float\29 2910:SkPath::contains\28float\2c\20float\29\20const 2911:SkPath::arcTo\28float\2c\20float\2c\20float\2c\20SkPath::ArcSize\2c\20SkPathDirection\2c\20float\2c\20float\29 2912:SkPath::approximateBytesUsed\28\29\20const 2913:SkPath::addCircle\28float\2c\20float\2c\20float\2c\20SkPathDirection\29 2914:SkPath::Rect\28SkRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\29 2915:SkParsePath::ToSVGString\28SkPath\20const&\2c\20SkParsePath::PathEncoding\29::$_0::operator\28\29\28char\2c\20SkPoint\20const*\2c\20unsigned\20long\29\20const 2916:SkParse::FindScalar\28char\20const*\2c\20float*\29 2917:SkPairPathEffect::flatten\28SkWriteBuffer&\29\20const 2918:SkPaintToGrPaintWithBlend\28GrRecordingContext*\2c\20GrColorInfo\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\2c\20SkBlender*\2c\20SkSurfaceProps\20const&\2c\20GrPaint*\29 2919:SkPaint::refImageFilter\28\29\20const 2920:SkPaint::refBlender\28\29\20const 2921:SkPaint::getBlendMode_or\28SkBlendMode\29\20const 2922:SkPackARGB_as_RGBA\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 2923:SkPackARGB_as_BGRA\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 2924:SkOpSpan::setOppSum\28int\29 2925:SkOpSegment::markAndChaseWinding\28SkOpSpanBase*\2c\20SkOpSpanBase*\2c\20int\2c\20SkOpSpanBase**\29 2926:SkOpSegment::markAllDone\28\29 2927:SkOpSegment::activeWinding\28SkOpSpanBase*\2c\20SkOpSpanBase*\29 2928:SkOpPtT::contains\28SkOpSegment\20const*\29\20const 2929:SkOpEdgeBuilder::closeContour\28SkPoint\20const&\2c\20SkPoint\20const&\29 2930:SkOpCoincidence::releaseDeleted\28\29 2931:SkOpCoincidence::markCollapsed\28SkOpPtT*\29 2932:SkOpCoincidence::findOverlaps\28SkOpCoincidence*\29\20const 2933:SkOpCoincidence::expand\28\29 2934:SkOpCoincidence::apply\28\29 2935:SkOpAngle::orderable\28SkOpAngle*\29 2936:SkOpAngle::computeSector\28\29 2937:SkNullBlitter::~SkNullBlitter\28\29 2938:SkNoPixelsDevice::SkNoPixelsDevice\28SkIRect\20const&\2c\20SkSurfaceProps\20const&\2c\20sk_sp\29 2939:SkNoPixelsDevice::SkNoPixelsDevice\28SkIRect\20const&\2c\20SkSurfaceProps\20const&\29 2940:SkNoDestructor>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>>::SkNoDestructor\28skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>&&\29 2941:SkMessageBus::BufferFinishedMessage\2c\20GrDirectContext::DirectContextID\2c\20false>::Get\28\29 2942:SkMemoryStream::SkMemoryStream\28void\20const*\2c\20unsigned\20long\2c\20bool\29 2943:SkMemoryStream::SkMemoryStream\28sk_sp\29 2944:SkMatrixPriv::InverseMapRect\28SkMatrix\20const&\2c\20SkRect*\2c\20SkRect\20const&\29 2945:SkMatrix::setRotate\28float\29 2946:SkMatrix::setPolyToPoly\28SkPoint\20const*\2c\20SkPoint\20const*\2c\20int\29 2947:SkMatrix::postSkew\28float\2c\20float\29 2948:SkMatrix::invert\28SkMatrix*\29\20const 2949:SkMatrix::getMinScale\28\29\20const 2950:SkMatrix::getMinMaxScales\28float*\29\20const 2951:SkMaskBuilder::PrepareDestination\28int\2c\20int\2c\20SkMask\20const&\29 2952:SkMakeBitmapShaderForPaint\28SkPaint\20const&\2c\20SkBitmap\20const&\2c\20SkTileMode\2c\20SkTileMode\2c\20SkSamplingOptions\20const&\2c\20SkMatrix\20const*\2c\20SkCopyPixelsMode\29 2953:SkLineClipper::ClipLine\28SkPoint\20const*\2c\20SkRect\20const&\2c\20SkPoint*\2c\20bool\29 2954:SkJpegCodec::ReadHeader\28SkStream*\2c\20SkCodec**\2c\20JpegDecoderMgr**\2c\20std::__2::unique_ptr>\29 2955:SkJSONWriter::separator\28bool\29 2956:SkIntersections::intersectRay\28SkDQuad\20const&\2c\20SkDLine\20const&\29 2957:SkIntersections::intersectRay\28SkDLine\20const&\2c\20SkDLine\20const&\29 2958:SkIntersections::intersectRay\28SkDCubic\20const&\2c\20SkDLine\20const&\29 2959:SkIntersections::intersectRay\28SkDConic\20const&\2c\20SkDLine\20const&\29 2960:SkIntersections::cleanUpParallelLines\28bool\29 2961:SkImage_Raster::SkImage_Raster\28SkImageInfo\20const&\2c\20sk_sp\2c\20unsigned\20long\2c\20unsigned\20int\29 2962:SkImage_Ganesh::~SkImage_Ganesh\28\29 2963:SkImageShader::Make\28sk_sp\2c\20SkTileMode\2c\20SkTileMode\2c\20SkSamplingOptions\20const&\2c\20SkMatrix\20const*\2c\20bool\29 2964:SkImageInfo::Make\28SkISize\2c\20SkColorType\2c\20SkAlphaType\29 2965:SkImageInfo::MakeN32Premul\28SkISize\29 2966:SkImageGenerator::getPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\29 2967:SkImageGenerator::SkImageGenerator\28SkImageInfo\20const&\2c\20unsigned\20int\29 2968:SkImageFilters::MatrixTransform\28SkMatrix\20const&\2c\20SkSamplingOptions\20const&\2c\20sk_sp\29 2969:SkImageFilters::Blur\28float\2c\20float\2c\20SkTileMode\2c\20sk_sp\2c\20SkImageFilters::CropRect\20const&\29 2970:SkImageFilter_Base::getInputBounds\28skif::Mapping\20const&\2c\20skif::DeviceSpace\20const&\2c\20std::__2::optional>\29\20const 2971:SkImageFilter_Base::affectsTransparentBlack\28\29\20const 2972:SkImage::width\28\29\20const 2973:SkImage::readPixels\28GrDirectContext*\2c\20SkPixmap\20const&\2c\20int\2c\20int\2c\20SkImage::CachingHint\29\20const 2974:SkImage::hasMipmaps\28\29\20const 2975:SkIDChangeListener::List::add\28sk_sp\29 2976:SkGradientShader::MakeTwoPointConical\28SkPoint\20const&\2c\20float\2c\20SkPoint\20const&\2c\20float\2c\20SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20sk_sp\2c\20float\20const*\2c\20int\2c\20SkTileMode\2c\20SkGradientShader::Interpolation\20const&\2c\20SkMatrix\20const*\29 2977:SkGradientShader::MakeLinear\28SkPoint\20const*\2c\20SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20sk_sp\2c\20float\20const*\2c\20int\2c\20SkTileMode\2c\20SkGradientShader::Interpolation\20const&\2c\20SkMatrix\20const*\29 2978:SkGradientBaseShader::AppendInterpolatedToDstStages\28SkRasterPipeline*\2c\20SkArenaAlloc*\2c\20bool\2c\20SkGradientShader::Interpolation\20const&\2c\20SkColorSpace\20const*\2c\20SkColorSpace\20const*\29 2979:SkGlyph::setPath\28SkArenaAlloc*\2c\20SkScalerContext*\29 2980:SkGlyph::mask\28\29\20const 2981:SkFontScanner_FreeType::GetAxes\28FT_FaceRec_*\2c\20skia_private::STArray<4\2c\20SkFontScanner::AxisDefinition\2c\20true>*\29 2982:SkFontPriv::ApproximateTransformedTextSize\28SkFont\20const&\2c\20SkMatrix\20const&\2c\20SkPoint\20const&\29 2983:SkFontMgr::matchFamily\28char\20const*\29\20const 2984:SkFindCubicMaxCurvature\28SkPoint\20const*\2c\20float*\29 2985:SkEncodedInfo::ICCProfile::Make\28sk_sp\29 2986:SkEmptyFontMgr::onMatchFamilyStyleCharacter\28char\20const*\2c\20SkFontStyle\20const&\2c\20char\20const**\2c\20int\2c\20int\29\20const 2987:SkEdge::setLine\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkIRect\20const*\2c\20int\29 2988:SkDynamicMemoryWStream::padToAlign4\28\29 2989:SkDrawable::SkDrawable\28\29 2990:SkDrawBase::drawRRect\28SkRRect\20const&\2c\20SkPaint\20const&\29\20const 2991:SkDrawBase::drawDevicePoints\28SkCanvas::PointMode\2c\20unsigned\20long\2c\20SkPoint\20const*\2c\20SkPaint\20const&\2c\20SkDevice*\29\20const 2992:SkDraw::drawBitmap\28SkBitmap\20const&\2c\20SkMatrix\20const&\2c\20SkRect\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\29\20const 2993:SkDevice::simplifyGlyphRunRSXFormAndRedraw\28SkCanvas*\2c\20sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\29 2994:SkDevice::drawFilteredImage\28skif::Mapping\20const&\2c\20SkSpecialImage*\2c\20SkColorType\2c\20SkImageFilter\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\29 2995:SkDevice::SkDevice\28SkImageInfo\20const&\2c\20SkSurfaceProps\20const&\29 2996:SkDataTable::at\28int\2c\20unsigned\20long*\29\20const 2997:SkData::MakeZeroInitialized\28unsigned\20long\29 2998:SkData::MakeFromStream\28SkStream*\2c\20unsigned\20long\29 2999:SkDQuad::dxdyAtT\28double\29\20const 3000:SkDQuad::RootsReal\28double\2c\20double\2c\20double\2c\20double*\29 3001:SkDQuad::FindExtrema\28double\20const*\2c\20double*\29 3002:SkDCubic::subDivide\28double\2c\20double\29\20const 3003:SkDCubic::searchRoots\28double*\2c\20int\2c\20double\2c\20SkDCubic::SearchAxis\2c\20double*\29\20const 3004:SkDCubic::Coefficients\28double\20const*\2c\20double*\2c\20double*\2c\20double*\2c\20double*\29 3005:SkDConic::dxdyAtT\28double\29\20const 3006:SkDConic::FindExtrema\28double\20const*\2c\20float\2c\20double*\29 3007:SkCopyStreamToData\28SkStream*\29 3008:SkContourMeasure_segTo\28SkPoint\20const*\2c\20unsigned\20int\2c\20float\2c\20float\2c\20SkPath*\29 3009:SkContourMeasureIter::next\28\29 3010:SkContourMeasureIter::Impl::compute_quad_segs\28SkPoint\20const*\2c\20float\2c\20int\2c\20int\2c\20unsigned\20int\2c\20int\29 3011:SkContourMeasureIter::Impl::compute_cubic_segs\28SkPoint\20const*\2c\20float\2c\20int\2c\20int\2c\20unsigned\20int\2c\20int\29 3012:SkContourMeasureIter::Impl::compute_conic_segs\28SkConic\20const&\2c\20float\2c\20int\2c\20SkPoint\20const&\2c\20int\2c\20SkPoint\20const&\2c\20unsigned\20int\2c\20int\29 3013:SkContourMeasure::getPosTan\28float\2c\20SkPoint*\2c\20SkPoint*\29\20const 3014:SkConic::evalAt\28float\29\20const 3015:SkConic::TransformW\28SkPoint\20const*\2c\20float\2c\20SkMatrix\20const&\29 3016:SkColorToPMColor4f\28unsigned\20int\2c\20GrColorInfo\20const&\29 3017:SkColorSpaceLuminance::Fetch\28float\29 3018:SkColorSpace::transferFn\28skcms_TransferFunction*\29\20const 3019:SkColorSpace::toXYZD50\28skcms_Matrix3x3*\29\20const 3020:SkColorPalette::SkColorPalette\28unsigned\20int\20const*\2c\20int\29 3021:SkColorFilters::Blend\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20sk_sp\2c\20SkBlendMode\29 3022:SkColor4fPrepForDst\28SkRGBA4f<\28SkAlphaType\293>\2c\20GrColorInfo\20const&\29 3023:SkCodec::startIncrementalDecode\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const*\29 3024:SkChopMonoCubicAtY\28SkPoint\20const*\2c\20float\2c\20SkPoint*\29 3025:SkChopCubicAt\28SkPoint\20const*\2c\20SkPoint*\2c\20float\2c\20float\29 3026:SkCanvas::setMatrix\28SkM44\20const&\29 3027:SkCanvas::scale\28float\2c\20float\29 3028:SkCanvas::private_draw_shadow_rec\28SkPath\20const&\2c\20SkDrawShadowRec\20const&\29 3029:SkCanvas::onResetClip\28\29 3030:SkCanvas::onClipShader\28sk_sp\2c\20SkClipOp\29 3031:SkCanvas::onClipRegion\28SkRegion\20const&\2c\20SkClipOp\29 3032:SkCanvas::onClipRect\28SkRect\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 3033:SkCanvas::onClipRRect\28SkRRect\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 3034:SkCanvas::onClipPath\28SkPath\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 3035:SkCanvas::internal_private_resetClip\28\29 3036:SkCanvas::internalSaveLayer\28SkCanvas::SaveLayerRec\20const&\2c\20SkCanvas::SaveLayerStrategy\2c\20bool\29 3037:SkCanvas::experimental_DrawEdgeAAImageSet\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 3038:SkCanvas::drawRRect\28SkRRect\20const&\2c\20SkPaint\20const&\29 3039:SkCanvas::drawPoints\28SkCanvas::PointMode\2c\20unsigned\20long\2c\20SkPoint\20const*\2c\20SkPaint\20const&\29 3040:SkCanvas::drawPatch\28SkPoint\20const*\2c\20unsigned\20int\20const*\2c\20SkPoint\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 3041:SkCanvas::drawOval\28SkRect\20const&\2c\20SkPaint\20const&\29 3042:SkCanvas::drawDRRect\28SkRRect\20const&\2c\20SkRRect\20const&\2c\20SkPaint\20const&\29 3043:SkCanvas::drawArc\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 3044:SkCanvas::clipRRect\28SkRRect\20const&\2c\20SkClipOp\2c\20bool\29 3045:SkCanvas::SkCanvas\28SkIRect\20const&\29 3046:SkCachedData::~SkCachedData\28\29 3047:SkCTMShader::~SkCTMShader\28\29.1 3048:SkBmpRLECodec::setPixel\28void*\2c\20unsigned\20long\2c\20SkImageInfo\20const&\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20char\29 3049:SkBmpCodec::prepareToDecode\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\29 3050:SkBlurMaskFilterImpl::computeXformedSigma\28SkMatrix\20const&\29\20const 3051:SkBlitterClipper::apply\28SkBlitter*\2c\20SkRegion\20const*\2c\20SkIRect\20const*\29 3052:SkBlitter::blitRegion\28SkRegion\20const&\29 3053:SkBitmapDevice::BDDraw::~BDDraw\28\29 3054:SkBitmapCacheDesc::Make\28SkImage\20const*\29 3055:SkBitmap::writePixels\28SkPixmap\20const&\2c\20int\2c\20int\29 3056:SkBitmap::setPixels\28void*\29 3057:SkBitmap::pixelRefOrigin\28\29\20const 3058:SkBitmap::notifyPixelsChanged\28\29\20const 3059:SkBitmap::isImmutable\28\29\20const 3060:SkBitmap::allocPixels\28\29 3061:SkBinaryWriteBuffer::writeScalarArray\28float\20const*\2c\20unsigned\20int\29 3062:SkBaseShadowTessellator::~SkBaseShadowTessellator\28\29.1 3063:SkBaseShadowTessellator::handleCubic\28SkMatrix\20const&\2c\20SkPoint*\29 3064:SkBaseShadowTessellator::handleConic\28SkMatrix\20const&\2c\20SkPoint*\2c\20float\29 3065:SkAutoPathBoundsUpdate::SkAutoPathBoundsUpdate\28SkPath*\2c\20SkRect\20const&\29 3066:SkAutoDescriptor::SkAutoDescriptor\28SkAutoDescriptor&&\29 3067:SkArenaAllocWithReset::SkArenaAllocWithReset\28char*\2c\20unsigned\20long\2c\20unsigned\20long\29 3068:SkAnimatedImage::decodeNextFrame\28\29 3069:SkAnimatedImage::Frame::copyTo\28SkAnimatedImage::Frame*\29\20const 3070:SkAnalyticQuadraticEdge::updateQuadratic\28\29 3071:SkAnalyticCubicEdge::updateCubic\28bool\29 3072:SkAlphaRuns::reset\28int\29 3073:SkAAClip::setRect\28SkIRect\20const&\29 3074:Simplify\28SkPath\20const&\2c\20SkPath*\29 3075:ReconstructRow 3076:R.1 3077:OpAsWinding::nextEdge\28Contour&\2c\20OpAsWinding::Edge\29 3078:OT::sbix::sanitize\28hb_sanitize_context_t*\29\20const 3079:OT::post::accelerator_t::cmp_gids\28void\20const*\2c\20void\20const*\2c\20void*\29 3080:OT::gvar::sanitize_shallow\28hb_sanitize_context_t*\29\20const 3081:OT::fvar::sanitize\28hb_sanitize_context_t*\29\20const 3082:OT::cmap::sanitize\28hb_sanitize_context_t*\29\20const 3083:OT::cmap::accelerator_t::accelerator_t\28hb_face_t*\29 3084:OT::cff2::accelerator_templ_t>::~accelerator_templ_t\28\29 3085:OT::avar::sanitize\28hb_sanitize_context_t*\29\20const 3086:OT::VarRegionList::evaluate\28unsigned\20int\2c\20int\20const*\2c\20unsigned\20int\2c\20float*\29\20const 3087:OT::Rule::apply\28OT::hb_ot_apply_context_t*\2c\20OT::ContextApplyLookupContext\20const&\29\20const 3088:OT::OpenTypeFontFile::sanitize\28hb_sanitize_context_t*\29\20const 3089:OT::MVAR::sanitize\28hb_sanitize_context_t*\29\20const 3090:OT::Layout::GSUB_impl::SubstLookup::serialize_ligature\28hb_serialize_context_t*\2c\20unsigned\20int\2c\20hb_sorted_array_t\2c\20hb_array_t\2c\20hb_array_t\2c\20hb_array_t\2c\20hb_array_t\29 3091:OT::Layout::GPOS_impl::MarkArray::apply\28OT::hb_ot_apply_context_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20OT::Layout::GPOS_impl::AnchorMatrix\20const&\2c\20unsigned\20int\2c\20unsigned\20int\29\20const 3092:OT::GDEFVersion1_2::sanitize\28hb_sanitize_context_t*\29\20const 3093:OT::Device::get_y_delta\28hb_font_t*\2c\20OT::VariationStore\20const&\2c\20float*\29\20const 3094:OT::Device::get_x_delta\28hb_font_t*\2c\20OT::VariationStore\20const&\2c\20float*\29\20const 3095:OT::ClipList::get_extents\28unsigned\20int\2c\20hb_glyph_extents_t*\2c\20OT::VarStoreInstancer\20const&\29\20const 3096:OT::ChainRule::apply\28OT::hb_ot_apply_context_t*\2c\20OT::ChainContextApplyLookupContext\20const&\29\20const 3097:OT::CPAL::sanitize\28hb_sanitize_context_t*\29\20const 3098:OT::COLR::sanitize\28hb_sanitize_context_t*\29\20const 3099:OT::COLR::paint_glyph\28hb_font_t*\2c\20unsigned\20int\2c\20hb_paint_funcs_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20bool\29\20const 3100:MakeRasterCopyPriv\28SkPixmap\20const&\2c\20unsigned\20int\29 3101:LineQuadraticIntersections::pinTs\28double*\2c\20double*\2c\20SkDPoint*\2c\20LineQuadraticIntersections::PinTPoint\29 3102:LineQuadraticIntersections::checkCoincident\28\29 3103:LineQuadraticIntersections::addLineNearEndPoints\28\29 3104:LineCubicIntersections::pinTs\28double*\2c\20double*\2c\20SkDPoint*\2c\20LineCubicIntersections::PinTPoint\29 3105:LineCubicIntersections::checkCoincident\28\29 3106:LineCubicIntersections::addLineNearEndPoints\28\29 3107:LineConicIntersections::pinTs\28double*\2c\20double*\2c\20SkDPoint*\2c\20LineConicIntersections::PinTPoint\29 3108:LineConicIntersections::checkCoincident\28\29 3109:LineConicIntersections::addLineNearEndPoints\28\29 3110:GrXferProcessor::GrXferProcessor\28GrProcessor::ClassID\29 3111:GrVertexChunkBuilder::~GrVertexChunkBuilder\28\29 3112:GrTriangulator::tessellate\28GrTriangulator::VertexList\20const&\2c\20GrTriangulator::Comparator\20const&\29 3113:GrTriangulator::splitEdge\28GrTriangulator::Edge*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Comparator\20const&\29 3114:GrTriangulator::pathToPolys\28float\2c\20SkRect\20const&\2c\20bool*\29 3115:GrTriangulator::generateCubicPoints\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20GrTriangulator::VertexList*\2c\20int\29\20const 3116:GrTriangulator::emitTriangle\28GrTriangulator::Vertex*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::Vertex*\2c\20int\2c\20skgpu::VertexWriter\29\20const 3117:GrTriangulator::checkForIntersection\28GrTriangulator::Edge*\2c\20GrTriangulator::Edge*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::VertexList*\2c\20GrTriangulator::Comparator\20const&\29 3118:GrTriangulator::applyFillType\28int\29\20const 3119:GrTriangulator::EdgeList::insert\28GrTriangulator::Edge*\2c\20GrTriangulator::Edge*\29 3120:GrTriangulator::Edge::insertBelow\28GrTriangulator::Vertex*\2c\20GrTriangulator::Comparator\20const&\29 3121:GrTriangulator::Edge::insertAbove\28GrTriangulator::Vertex*\2c\20GrTriangulator::Comparator\20const&\29 3122:GrToGLStencilFunc\28GrStencilTest\29 3123:GrThreadSafeCache::dropAllRefs\28\29 3124:GrTextureRenderTargetProxy::callbackDesc\28\29\20const 3125:GrTexture::GrTexture\28GrGpu*\2c\20SkISize\20const&\2c\20skgpu::Protected\2c\20GrTextureType\2c\20GrMipmapStatus\2c\20std::__2::basic_string_view>\29 3126:GrTexture::ComputeScratchKey\28GrCaps\20const&\2c\20GrBackendFormat\20const&\2c\20SkISize\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20skgpu::ScratchKey*\29 3127:GrSurfaceProxyView::asTextureProxyRef\28\29\20const 3128:GrSurfaceProxy::GrSurfaceProxy\28std::__2::function&&\2c\20GrBackendFormat\20const&\2c\20SkISize\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20GrInternalSurfaceFlags\2c\20GrSurfaceProxy::UseAllocator\2c\20std::__2::basic_string_view>\29 3129:GrSurfaceProxy::GrSurfaceProxy\28sk_sp\2c\20SkBackingFit\2c\20GrSurfaceProxy::UseAllocator\29 3130:GrSurface::setRelease\28sk_sp\29 3131:GrStyledShape::styledBounds\28\29\20const 3132:GrStyledShape::asLine\28SkPoint*\2c\20bool*\29\20const 3133:GrStyledShape::addGenIDChangeListener\28sk_sp\29\20const 3134:GrSimpleMeshDrawOpHelper::fixedFunctionFlags\28\29\20const 3135:GrShape::setRect\28SkRect\20const&\29 3136:GrShape::setRRect\28SkRRect\20const&\29 3137:GrResourceProvider::assignUniqueKeyToResource\28skgpu::UniqueKey\20const&\2c\20GrGpuResource*\29 3138:GrResourceCache::releaseAll\28\29 3139:GrResourceCache::getNextTimestamp\28\29 3140:GrRenderTask::addDependency\28GrRenderTask*\29 3141:GrRenderTargetProxy::canUseStencil\28GrCaps\20const&\29\20const 3142:GrRecordingContextPriv::addOnFlushCallbackObject\28GrOnFlushCallbackObject*\29 3143:GrRecordingContext::~GrRecordingContext\28\29 3144:GrRecordingContext::abandonContext\28\29 3145:GrQuadUtils::TessellationHelper::Vertices::moveTo\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20int>\20const&\29 3146:GrQuadUtils::TessellationHelper::EdgeEquations::reset\28GrQuadUtils::TessellationHelper::EdgeVectors\20const&\29 3147:GrQuadUtils::ResolveAAType\28GrAAType\2c\20GrQuadAAFlags\2c\20GrQuad\20const&\2c\20GrAAType*\2c\20GrQuadAAFlags*\29 3148:GrQuadBuffer<\28anonymous\20namespace\29::FillRectOpImpl::ColorAndAA>::append\28GrQuad\20const&\2c\20\28anonymous\20namespace\29::FillRectOpImpl::ColorAndAA&&\2c\20GrQuad\20const*\29 3149:GrPixmap::GrPixmap\28GrImageInfo\2c\20void*\2c\20unsigned\20long\29 3150:GrPipeline::GrPipeline\28GrPipeline::InitArgs\20const&\2c\20GrProcessorSet&&\2c\20GrAppliedClip&&\29 3151:GrPersistentCacheUtils::UnpackCachedShaders\28SkReadBuffer*\2c\20std::__2::basic_string\2c\20std::__2::allocator>*\2c\20SkSL::ProgramInterface*\2c\20int\2c\20GrPersistentCacheUtils::ShaderMetadata*\29 3152:GrPathUtils::convertCubicToQuads\28SkPoint\20const*\2c\20float\2c\20skia_private::TArray*\29 3153:GrPathTessellationShader::Make\28GrShaderCaps\20const&\2c\20SkArenaAlloc*\2c\20SkMatrix\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20skgpu::tess::PatchAttribs\29 3154:GrOp::chainConcat\28std::__2::unique_ptr>\29 3155:GrOp::GenOpClassID\28\29 3156:GrMeshDrawOp::PatternHelper::PatternHelper\28GrMeshDrawTarget*\2c\20GrPrimitiveType\2c\20unsigned\20long\2c\20sk_sp\2c\20int\2c\20int\2c\20int\2c\20int\29 3157:GrMemoryPool::Make\28unsigned\20long\2c\20unsigned\20long\29 3158:GrMakeKeyFromImageID\28skgpu::UniqueKey*\2c\20unsigned\20int\2c\20SkIRect\20const&\29 3159:GrImageInfo::GrImageInfo\28GrColorInfo\20const&\2c\20SkISize\20const&\29 3160:GrGpuResource::removeScratchKey\28\29 3161:GrGpuResource::registerWithCacheWrapped\28GrWrapCacheable\29 3162:GrGpuResource::dumpMemoryStatisticsPriv\28SkTraceMemoryDump*\2c\20SkString\20const&\2c\20char\20const*\2c\20unsigned\20long\29\20const 3163:GrGpuBuffer::onGpuMemorySize\28\29\20const 3164:GrGpu::resolveRenderTarget\28GrRenderTarget*\2c\20SkIRect\20const&\29 3165:GrGpu::executeFlushInfo\28SkSpan\2c\20SkSurfaces::BackendSurfaceAccess\2c\20GrFlushInfo\20const&\2c\20skgpu::MutableTextureState\20const*\29 3166:GrGeometryProcessor::TextureSampler::TextureSampler\28GrSamplerState\2c\20GrBackendFormat\20const&\2c\20skgpu::Swizzle\20const&\29 3167:GrGeometryProcessor::ProgramImpl::ComputeMatrixKeys\28GrShaderCaps\20const&\2c\20SkMatrix\20const&\2c\20SkMatrix\20const&\29 3168:GrGLUniformHandler::getUniformVariable\28GrResourceHandle\29\20const 3169:GrGLTextureRenderTarget::~GrGLTextureRenderTarget\28\29.1 3170:GrGLSemaphore::GrGLSemaphore\28GrGLGpu*\2c\20bool\29 3171:GrGLSLVaryingHandler::~GrGLSLVaryingHandler\28\29 3172:GrGLSLUniformHandler::addInputSampler\28skgpu::Swizzle\20const&\2c\20char\20const*\29 3173:GrGLSLShaderBuilder::emitFunction\28SkSLType\2c\20char\20const*\2c\20SkSpan\2c\20char\20const*\29 3174:GrGLSLProgramDataManager::setSkMatrix\28GrResourceHandle\2c\20SkMatrix\20const&\29\20const 3175:GrGLSLProgramBuilder::writeFPFunction\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29 3176:GrGLSLProgramBuilder::invokeFP\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl\20const&\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\29\20const 3177:GrGLSLProgramBuilder::addRTFlipUniform\28char\20const*\29 3178:GrGLSLFragmentShaderBuilder::dstColor\28\29 3179:GrGLSLBlend::BlendKey\28SkBlendMode\29 3180:GrGLProgramBuilder::~GrGLProgramBuilder\28\29 3181:GrGLProgramBuilder::computeCountsAndStrides\28unsigned\20int\2c\20GrGeometryProcessor\20const&\2c\20bool\29 3182:GrGLGpu::flushScissor\28GrScissorState\20const&\2c\20int\2c\20GrSurfaceOrigin\29 3183:GrGLGpu::flushClearColor\28std::__2::array\29 3184:GrGLGpu::deleteFence\28__GLsync*\29 3185:GrGLGpu::createTexture\28SkISize\2c\20GrGLFormat\2c\20unsigned\20int\2c\20skgpu::Renderable\2c\20GrGLTextureParameters::SamplerOverriddenState*\2c\20int\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 3186:GrGLGpu::copySurfaceAsDraw\28GrSurface*\2c\20bool\2c\20GrSurface*\2c\20SkIRect\20const&\2c\20SkIRect\20const&\2c\20SkFilterMode\29 3187:GrGLGpu::SamplerObjectCache::~SamplerObjectCache\28\29 3188:GrGLGpu::HWVertexArrayState::bindInternalVertexArray\28GrGLGpu*\2c\20GrBuffer\20const*\29 3189:GrGLFunction::GrGLFunction\28void\20\28*\29\28unsigned\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\29\29::'lambda'\28void\20const*\2c\20unsigned\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\29::__invoke\28void\20const*\2c\20unsigned\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\29 3190:GrGLFinishCallbacks::callAll\28bool\29 3191:GrGLBuffer::Make\28GrGLGpu*\2c\20unsigned\20long\2c\20GrGpuBufferType\2c\20GrAccessPattern\29 3192:GrGLAttribArrayState::enableVertexArrays\28GrGLGpu\20const*\2c\20int\2c\20GrPrimitiveRestart\29 3193:GrFragmentProcessors::make_effect_fp\28sk_sp\2c\20char\20const*\2c\20sk_sp\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20SkSpan\2c\20GrFPArgs\20const&\29 3194:GrFragmentProcessors::MakeChildFP\28SkRuntimeEffect::ChildPtr\20const&\2c\20GrFPArgs\20const&\29 3195:GrFragmentProcessors::IsSupported\28SkMaskFilter\20const*\29 3196:GrFragmentProcessor::makeProgramImpl\28\29\20const 3197:GrFragmentProcessor::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 3198:GrFragmentProcessor::MulInputByChildAlpha\28std::__2::unique_ptr>\29 3199:GrFragmentProcessor::HighPrecision\28std::__2::unique_ptr>\29::HighPrecisionFragmentProcessor::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 3200:GrFragmentProcessor::DeviceSpace\28std::__2::unique_ptr>\29 3201:GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 3202:GrDynamicAtlas::makeNode\28GrDynamicAtlas::Node*\2c\20int\2c\20int\2c\20int\2c\20int\29 3203:GrDrawingManager::setLastRenderTask\28GrSurfaceProxy\20const*\2c\20GrRenderTask*\29 3204:GrDrawingManager::flushSurfaces\28SkSpan\2c\20SkSurfaces::BackendSurfaceAccess\2c\20GrFlushInfo\20const&\2c\20skgpu::MutableTextureState\20const*\29 3205:GrDrawOpAtlas::updatePlot\28GrDeferredUploadTarget*\2c\20skgpu::AtlasLocator*\2c\20skgpu::Plot*\29 3206:GrDirectContext::resetContext\28unsigned\20int\29 3207:GrDirectContext::getResourceCacheLimit\28\29\20const 3208:GrDefaultGeoProcFactory::MakeForDeviceSpace\28SkArenaAlloc*\2c\20GrDefaultGeoProcFactory::Color\20const&\2c\20GrDefaultGeoProcFactory::Coverage\20const&\2c\20GrDefaultGeoProcFactory::LocalCoords\20const&\2c\20SkMatrix\20const&\29 3209:GrColorSpaceXformEffect::Make\28std::__2::unique_ptr>\2c\20sk_sp\29 3210:GrColorSpaceXform::apply\28SkRGBA4f<\28SkAlphaType\293>\20const&\29 3211:GrColorSpaceXform::Equals\28GrColorSpaceXform\20const*\2c\20GrColorSpaceXform\20const*\29 3212:GrBufferAllocPool::unmap\28\29 3213:GrBlurUtils::can_filter_mask\28SkMaskFilterBase\20const*\2c\20GrStyledShape\20const&\2c\20SkIRect\20const&\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkIRect*\29 3214:GrBicubicEffect::MakeSubset\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkMatrix\20const&\2c\20GrSamplerState::WrapMode\2c\20GrSamplerState::WrapMode\2c\20SkRect\20const&\2c\20SkCubicResampler\2c\20GrBicubicEffect::Direction\2c\20GrCaps\20const&\29 3215:GrBackendTextures::MakeGL\28int\2c\20int\2c\20skgpu::Mipmapped\2c\20GrGLTextureInfo\20const&\2c\20sk_sp\2c\20std::__2::basic_string_view>\29 3216:GrBackendFormatStencilBits\28GrBackendFormat\20const&\29 3217:GrBackendFormat::asMockCompressionType\28\29\20const 3218:GrAATriangulator::~GrAATriangulator\28\29 3219:GrAATriangulator::makeEvent\28GrAATriangulator::SSEdge*\2c\20GrAATriangulator::EventList*\29\20const 3220:GrAAConvexTessellator::fanRing\28GrAAConvexTessellator::Ring\20const&\29 3221:GrAAConvexTessellator::computePtAlongBisector\28int\2c\20SkPoint\20const&\2c\20int\2c\20float\2c\20SkPoint*\29\20const 3222:FT_Stream_ReadAt 3223:FT_Stream_OpenMemory 3224:FT_Set_Char_Size 3225:FT_Request_Metrics 3226:FT_Hypot 3227:FT_Get_Var_Design_Coordinates 3228:FT_Get_Paint 3229:FT_Get_MM_Var 3230:DecodeImageData 3231:Cr_z_inflate_table 3232:Cr_z_inflateReset 3233:Cr_z_deflateEnd 3234:Cr_z_copy_with_crc 3235:Compute_Point_Displacement 3236:AAT::trak::sanitize\28hb_sanitize_context_t*\29\20const 3237:AAT::ltag::sanitize\28hb_sanitize_context_t*\29\20const 3238:AAT::feat::sanitize\28hb_sanitize_context_t*\29\20const 3239:AAT::StateTable::sanitize\28hb_sanitize_context_t*\2c\20unsigned\20int*\29\20const 3240:AAT::Lookup>\2c\20OT::IntType\2c\20false>>::sanitize\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 3241:AAT::KerxTable::sanitize\28hb_sanitize_context_t*\29\20const 3242:AAT::KerxTable::sanitize\28hb_sanitize_context_t*\29\20const 3243:AAT::KerxTable::sanitize\28hb_sanitize_context_t*\29\20const 3244:zeroinfnan 3245:xyz_almost_equal\28skcms_Matrix3x3\20const&\2c\20skcms_Matrix3x3\20const&\29 3246:wuffs_lzw__decoder__transform_io 3247:wuffs_gif__decoder__set_quirk_enabled 3248:wuffs_gif__decoder__restart_frame 3249:wuffs_gif__decoder__num_animation_loops 3250:wuffs_gif__decoder__frame_dirty_rect 3251:wuffs_gif__decoder__decode_up_to_id_part1 3252:wuffs_gif__decoder__decode_frame 3253:write_vertex_position\28GrGLSLVertexBuilder*\2c\20GrGLSLUniformHandler*\2c\20GrShaderCaps\20const&\2c\20GrShaderVar\20const&\2c\20SkMatrix\20const&\2c\20char\20const*\2c\20GrShaderVar*\2c\20GrResourceHandle*\29 3254:write_text_tag\28char\20const*\29 3255:write_passthrough_vertex_position\28GrGLSLVertexBuilder*\2c\20GrShaderVar\20const&\2c\20GrShaderVar*\29 3256:write_mAB_or_mBA_tag\28unsigned\20int\2c\20skcms_Curve\20const*\2c\20skcms_Curve\20const*\2c\20unsigned\20char\20const*\2c\20unsigned\20char\20const*\2c\20skcms_Curve\20const*\2c\20skcms_Matrix3x4\20const*\29 3257:wctomb 3258:wchar_t*\20std::__2::copy\5babi:v160004\5d\2c\20wchar_t*>\28std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\2c\20wchar_t*\29 3259:walk_simple_edges\28SkEdge*\2c\20SkBlitter*\2c\20int\2c\20int\29 3260:vsscanf 3261:void\20std::__2::vector>::assign\28unsigned\20long*\2c\20unsigned\20long*\29 3262:void\20std::__2::vector>::__emplace_back_slow_path&\2c\20SkSpan&\2c\20SkSpan&\2c\20SkSpan&\2c\20SkSpan&>\28SkFont\20const&\2c\20SkSpan&\2c\20SkSpan&\2c\20SkSpan&\2c\20SkSpan&\2c\20SkSpan&\29 3263:void\20std::__2::vector>::assign\28skia::textlayout::FontFeature*\2c\20skia::textlayout::FontFeature*\29 3264:void\20std::__2::vector\2c\20std::__2::allocator>>::__emplace_back_slow_path>\28sk_sp&&\29 3265:void\20std::__2::vector>::assign\28SkString*\2c\20SkString*\29 3266:void\20std::__2::vector>::__emplace_back_slow_path\28char\20const*&\29 3267:void\20std::__2::vector>::__push_back_slow_path\28SkSL::FunctionDebugInfo&&\29 3268:void\20std::__2::vector>::__push_back_slow_path\28SkMeshSpecification::Varying&&\29 3269:void\20std::__2::vector>::__push_back_slow_path\28SkMeshSpecification::Attribute&&\29 3270:void\20std::__2::vector>::assign\28SkFontArguments::VariationPosition::Coordinate*\2c\20SkFontArguments::VariationPosition::Coordinate*\29 3271:void\20std::__2::vector>::__emplace_back_slow_path\28SkRect&\2c\20int&\2c\20int&\29 3272:void\20std::__2::allocator_traits>::construct\5babi:v160004\5d\28std::__2::__sso_allocator&\2c\20std::__2::locale::facet**\29 3273:void\20std::__2::__tree_balance_after_insert\5babi:v160004\5d*>\28std::__2::__tree_node_base*\2c\20std::__2::__tree_node_base*\29 3274:void\20std::__2::__stable_sort_move\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::'lambda'\28\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\29&\2c\20std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>\28std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>\2c\20std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::'lambda'\28\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\29&\2c\20std::__2::iterator_traits\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>::difference_type\2c\20std::__2::iterator_traits\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>::value_type*\29 3275:void\20std::__2::__sift_up\5babi:v160004\5d*>>\28std::__2::__wrap_iter*>\2c\20std::__2::__wrap_iter*>\2c\20GrGeometryProcessor::ProgramImpl::emitTransformCode\28GrGLSLVertexBuilder*\2c\20GrGLSLUniformHandler*\29::$_0&\2c\20std::__2::iterator_traits*>>::difference_type\29 3276:void\20std::__2::__optional_storage_base::__assign_from\5babi:v160004\5d\20const&>\28std::__2::__optional_copy_assign_base\20const&\29 3277:void\20std::__2::__double_or_nothing\5babi:v160004\5d\28std::__2::unique_ptr&\2c\20char*&\2c\20char*&\29 3278:void\20std::__2::__call_once_proxy\5babi:v160004\5d>\28void*\29 3279:void\20sorted_merge<&sweep_lt_vert\28SkPoint\20const&\2c\20SkPoint\20const&\29>\28GrTriangulator::VertexList*\2c\20GrTriangulator::VertexList*\2c\20GrTriangulator::VertexList*\29 3280:void\20sorted_merge<&sweep_lt_horiz\28SkPoint\20const&\2c\20SkPoint\20const&\29>\28GrTriangulator::VertexList*\2c\20GrTriangulator::VertexList*\2c\20GrTriangulator::VertexList*\29 3281:void\20sort_r_simple<>\28void*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\20\28*\29\28void\20const*\2c\20void\20const*\29\29.1 3282:void\20skgpu::ganesh::SurfaceFillContext::clear<\28SkAlphaType\292>\28SkRGBA4f<\28SkAlphaType\292>\20const&\29 3283:void\20emscripten::internal::raw_destructor>\28sk_sp*\29 3284:void\20emscripten::internal::MemberAccess>::setWire\28sk_sp\20SkRuntimeEffect::TracedShader::*\20const&\2c\20SkRuntimeEffect::TracedShader&\2c\20sk_sp*\29 3285:void\20emscripten::internal::MemberAccess::setWire\28SimpleFontStyle\20SimpleStrutStyle::*\20const&\2c\20SimpleStrutStyle&\2c\20SimpleFontStyle*\29 3286:void\20\28anonymous\20namespace\29::copyFT2LCD16\28FT_Bitmap_\20const&\2c\20SkMaskBuilder*\2c\20int\2c\20unsigned\20char\20const*\2c\20unsigned\20char\20const*\2c\20unsigned\20char\20const*\29 3287:void\20SkTIntroSort\28int\2c\20int*\2c\20int\2c\20DistanceLessThan\20const&\29 3288:void\20SkTIntroSort\28float*\2c\20float*\29::'lambda'\28float\20const&\2c\20float\20const&\29>\28int\2c\20float*\2c\20int\2c\20void\20SkTQSort\28float*\2c\20float*\29::'lambda'\28float\20const&\2c\20float\20const&\29\20const&\29 3289:void\20SkTIntroSort\28int\2c\20SkString*\2c\20int\2c\20bool\20\20const\28&\29\28SkString\20const&\2c\20SkString\20const&\29\29 3290:void\20SkTIntroSort\28int\2c\20SkOpRayHit**\2c\20int\2c\20bool\20\20const\28&\29\28SkOpRayHit\20const*\2c\20SkOpRayHit\20const*\29\29 3291:void\20SkTIntroSort\28SkOpContour**\2c\20SkOpContour**\29::'lambda'\28SkOpContour\20const*\2c\20SkOpContour\20const*\29>\28int\2c\20SkOpContour*\2c\20int\2c\20void\20SkTQSort\28SkOpContour**\2c\20SkOpContour**\29::'lambda'\28SkOpContour\20const*\2c\20SkOpContour\20const*\29\20const&\29 3292:void\20SkTIntroSort>\2c\20SkCodec::Result*\29::Entry\2c\20SkIcoCodec::MakeFromStream\28std::__2::unique_ptr>\2c\20SkCodec::Result*\29::EntryLessThan>\28int\2c\20SkIcoCodec::MakeFromStream\28std::__2::unique_ptr>\2c\20SkCodec::Result*\29::Entry*\2c\20int\2c\20SkIcoCodec::MakeFromStream\28std::__2::unique_ptr>\2c\20SkCodec::Result*\29::EntryLessThan\20const&\29 3293:void\20SkTIntroSort\28SkClosestRecord\20const**\2c\20SkClosestRecord\20const**\29::'lambda'\28SkClosestRecord\20const*\2c\20SkClosestRecord\20const*\29>\28int\2c\20SkClosestRecord\20const*\2c\20int\2c\20void\20SkTQSort\28SkClosestRecord\20const**\2c\20SkClosestRecord\20const**\29::'lambda'\28SkClosestRecord\20const*\2c\20SkClosestRecord\20const*\29\20const&\29 3294:void\20SkTIntroSort\28SkAnalyticEdge**\2c\20SkAnalyticEdge**\29::'lambda'\28SkAnalyticEdge\20const*\2c\20SkAnalyticEdge\20const*\29>\28int\2c\20SkAnalyticEdge*\2c\20int\2c\20void\20SkTQSort\28SkAnalyticEdge**\2c\20SkAnalyticEdge**\29::'lambda'\28SkAnalyticEdge\20const*\2c\20SkAnalyticEdge\20const*\29\20const&\29 3295:void\20SkTIntroSort\28int\2c\20GrGpuResource**\2c\20int\2c\20bool\20\20const\28&\29\28GrGpuResource*\20const&\2c\20GrGpuResource*\20const&\29\29 3296:void\20SkTIntroSort\28int\2c\20GrGpuResource**\2c\20int\2c\20bool\20\28*\20const&\29\28GrGpuResource*\20const&\2c\20GrGpuResource*\20const&\29\29 3297:void\20SkTIntroSort\28int\2c\20Edge*\2c\20int\2c\20EdgeLT\20const&\29 3298:void\20GrGeometryProcessor::ProgramImpl::collectTransforms\28GrGLSLVertexBuilder*\2c\20GrGLSLVaryingHandler*\2c\20GrGLSLUniformHandler*\2c\20GrShaderType\2c\20GrShaderVar\20const&\2c\20GrShaderVar\20const&\2c\20GrPipeline\20const&\29::$_0::operator\28\29<$_0>\28$_0&\2c\20GrFragmentProcessor\20const&\2c\20bool\2c\20GrFragmentProcessor\20const*\2c\20int\2c\20GrGeometryProcessor::ProgramImpl::collectTransforms\28GrGLSLVertexBuilder*\2c\20GrGLSLVaryingHandler*\2c\20GrGLSLUniformHandler*\2c\20GrShaderType\2c\20GrShaderVar\20const&\2c\20GrShaderVar\20const&\2c\20GrPipeline\20const&\29::BaseCoord\29 3299:void\20AAT::StateTableDriver::drive::driver_context_t>\28AAT::LigatureSubtable::driver_context_t*\2c\20AAT::hb_aat_apply_context_t*\29::'lambda0'\28\29::operator\28\29\28\29\20const 3300:virtual\20thunk\20to\20GrGLTexture::onSetLabel\28\29 3301:virtual\20thunk\20to\20GrGLTexture::backendFormat\28\29\20const 3302:vfiprintf 3303:validate_texel_levels\28SkISize\2c\20GrColorType\2c\20GrMipLevel\20const*\2c\20int\2c\20GrCaps\20const*\29 3304:unsigned\20short\20std::__2::__num_get_unsigned_integral\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\2c\20int\29 3305:unsigned\20long\20long\20std::__2::__num_get_unsigned_integral\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\2c\20int\29 3306:unsigned\20int\20std::__2::__num_get_unsigned_integral\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\2c\20int\29 3307:unsigned\20int\20const*\20std::__2::lower_bound\5babi:v160004\5d\28unsigned\20int\20const*\2c\20unsigned\20int\20const*\2c\20unsigned\20long\20const&\29 3308:unsigned\20int\20const&\20std::__2::__identity::operator\28\29\28unsigned\20int\20const&\29\20const 3309:ubidi_close_skia 3310:u_terminateUChars_skia 3311:u_charType_skia 3312:tt_size_run_prep 3313:tt_size_done_bytecode 3314:tt_sbit_decoder_load_image 3315:tt_face_vary_cvt 3316:tt_face_palette_set 3317:tt_face_load_cvt 3318:tt_face_get_metrics 3319:tt_done_blend 3320:tt_delta_interpolate 3321:tt_cmap4_set_range 3322:tt_cmap4_next 3323:tt_cmap4_char_map_linear 3324:tt_cmap4_char_map_binary 3325:tt_cmap14_get_def_chars 3326:tt_cmap13_next 3327:tt_cmap12_next 3328:tt_cmap12_init 3329:tt_cmap12_char_map_binary 3330:tt_apply_mvar 3331:toParagraphStyle\28SimpleParagraphStyle\20const&\29 3332:t1_lookup_glyph_by_stdcharcode_ps 3333:t1_builder_close_contour 3334:t1_builder_check_points 3335:strtox.1 3336:strtoull 3337:strtoll_l 3338:strspn 3339:strncpy 3340:store_int 3341:std::logic_error::~logic_error\28\29 3342:std::logic_error::logic_error\28char\20const*\29 3343:std::exception::exception\5babi:v160004\5d\28\29 3344:std::__2::vector>::__append\28unsigned\20long\29 3345:std::__2::vector>::max_size\28\29\20const 3346:std::__2::vector>::__construct_at_end\28unsigned\20long\29 3347:std::__2::vector>::__clear\5babi:v160004\5d\28\29 3348:std::__2::vector>::__base_destruct_at_end\5babi:v160004\5d\28std::__2::locale::facet**\29 3349:std::__2::vector>::__annotate_shrink\5babi:v160004\5d\28unsigned\20long\29\20const 3350:std::__2::vector>::__annotate_new\5babi:v160004\5d\28unsigned\20long\29\20const 3351:std::__2::vector>::__annotate_delete\5babi:v160004\5d\28\29\20const 3352:std::__2::vector>::insert\28std::__2::__wrap_iter\2c\20float&&\29 3353:std::__2::vector>::__append\28unsigned\20long\29 3354:std::__2::unique_ptr::operator=\5babi:v160004\5d\28std::__2::unique_ptr&&\29 3355:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 3356:std::__2::unique_ptr>\20SkSL::coalesce_vector\28std::__2::array\20const&\2c\20double\2c\20SkSL::Type\20const&\2c\20double\20\28*\29\28double\2c\20double\2c\20double\29\2c\20double\20\28*\29\28double\29\29 3357:std::__2::unique_ptr>::operator=\5babi:v160004\5d\28std::nullptr_t\29 3358:std::__2::tuple\2c\20int\2c\20sktext::gpu::SubRunAllocator>\20sktext::gpu::SubRunAllocator::AllocateClassMemoryAndArena\28int\29::'lambda0'\28\29::operator\28\29\28\29\20const 3359:std::__2::tuple\2c\20int\2c\20sktext::gpu::SubRunAllocator>\20sktext::gpu::SubRunAllocator::AllocateClassMemoryAndArena\28int\29::'lambda'\28\29::operator\28\29\28\29\20const 3360:std::__2::to_string\28unsigned\20long\29 3361:std::__2::to_chars_result\20std::__2::__to_chars_itoa\5babi:v160004\5d\28char*\2c\20char*\2c\20unsigned\20int\2c\20std::__2::integral_constant\29 3362:std::__2::time_put>>::~time_put\28\29 3363:std::__2::time_get>>::__get_year\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const 3364:std::__2::time_get>>::__get_weekdayname\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const 3365:std::__2::time_get>>::__get_monthname\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const 3366:std::__2::time_get>>::__get_year\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const 3367:std::__2::time_get>>::__get_weekdayname\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const 3368:std::__2::time_get>>::__get_monthname\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const 3369:std::__2::reverse_iterator::operator++\5babi:v160004\5d\28\29 3370:std::__2::reverse_iterator::operator*\5babi:v160004\5d\28\29\20const 3371:std::__2::priority_queue>\2c\20GrAATriangulator::EventComparator>::push\28GrAATriangulator::Event*\20const&\29 3372:std::__2::pair\2c\20void*>*>\2c\20bool>\20std::__2::__hash_table\2c\20std::__2::__unordered_map_hasher\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal\2c\20std::__2::equal_to\2c\20std::__2::hash\2c\20true>\2c\20std::__2::allocator>>::__emplace_unique_key_args\2c\20std::__2::tuple<>>\28GrFragmentProcessor\20const*\20const&\2c\20std::__2::piecewise_construct_t\20const&\2c\20std::__2::tuple&&\2c\20std::__2::tuple<>&&\29 3373:std::__2::pair*>\2c\20bool>\20std::__2::__hash_table\2c\20std::__2::equal_to\2c\20std::__2::allocator>::__emplace_unique_key_args\28int\20const&\2c\20int\20const&\29 3374:std::__2::pair\2c\20std::__2::allocator>>>::pair\28std::__2::pair\2c\20std::__2::allocator>>>&&\29 3375:std::__2::ostreambuf_iterator>::operator=\5babi:v160004\5d\28wchar_t\29 3376:std::__2::ostreambuf_iterator>::operator=\5babi:v160004\5d\28char\29 3377:std::__2::optional&\20std::__2::optional::operator=\5babi:v160004\5d\28SkPath\20const&\29 3378:std::__2::numpunct::~numpunct\28\29 3379:std::__2::numpunct::~numpunct\28\29 3380:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20int&\29\20const 3381:std::__2::num_get>>\20const&\20std::__2::use_facet\5babi:v160004\5d>>>\28std::__2::locale\20const&\29 3382:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20int&\29\20const 3383:std::__2::moneypunct\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 3384:std::__2::moneypunct\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 3385:std::__2::moneypunct::do_negative_sign\28\29\20const 3386:std::__2::moneypunct\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 3387:std::__2::moneypunct\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 3388:std::__2::moneypunct::do_negative_sign\28\29\20const 3389:std::__2::money_get>>::__do_get\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::locale\20const&\2c\20unsigned\20int\2c\20unsigned\20int&\2c\20bool&\2c\20std::__2::ctype\20const&\2c\20std::__2::unique_ptr&\2c\20wchar_t*&\2c\20wchar_t*\29 3390:std::__2::money_get>>::__do_get\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::locale\20const&\2c\20unsigned\20int\2c\20unsigned\20int&\2c\20bool&\2c\20std::__2::ctype\20const&\2c\20std::__2::unique_ptr&\2c\20char*&\2c\20char*\29 3391:std::__2::locale::__imp::~__imp\28\29 3392:std::__2::iterator_traits::difference_type\20std::__2::__distance\5babi:v160004\5d\28unsigned\20int\20const*\2c\20unsigned\20int\20const*\2c\20std::__2::random_access_iterator_tag\29 3393:std::__2::iterator_traits\2c\20std::__2::allocator>\20const*>::difference_type\20std::__2::distance\5babi:v160004\5d\2c\20std::__2::allocator>\20const*>\28std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\29 3394:std::__2::iterator_traits::difference_type\20std::__2::distance\5babi:v160004\5d\28char*\2c\20char*\29 3395:std::__2::iterator_traits::difference_type\20std::__2::__distance\5babi:v160004\5d\28char*\2c\20char*\2c\20std::__2::random_access_iterator_tag\29 3396:std::__2::istreambuf_iterator>::operator++\5babi:v160004\5d\28int\29 3397:std::__2::istreambuf_iterator>::__test_for_eof\5babi:v160004\5d\28\29\20const 3398:std::__2::istreambuf_iterator>::operator++\5babi:v160004\5d\28int\29 3399:std::__2::istreambuf_iterator>::__test_for_eof\5babi:v160004\5d\28\29\20const 3400:std::__2::ios_base::width\5babi:v160004\5d\28long\29 3401:std::__2::ios_base::imbue\28std::__2::locale\20const&\29 3402:std::__2::ios_base::__call_callbacks\28std::__2::ios_base::event\29 3403:std::__2::hash::operator\28\29\28skia::textlayout::FontArguments\20const&\29\20const 3404:std::__2::enable_if\2c\20sk_sp>::type\20SkLocalMatrixShader::MakeWrapped\2c\20SkTileMode&\2c\20SkTileMode&\2c\20SkFilterMode&\2c\20SkRect\20const*&>\28SkMatrix\20const*\2c\20sk_sp&&\2c\20SkTileMode&\2c\20SkTileMode&\2c\20SkFilterMode&\2c\20SkRect\20const*&\29 3405:std::__2::enable_if::value\20&&\20is_move_assignable::value\2c\20void>::type\20std::__2::swap\5babi:v160004\5d\28char&\2c\20char&\29 3406:std::__2::enable_if<__is_cpp17_random_access_iterator::value\2c\20char*>::type\20std::__2::copy_n\5babi:v160004\5d\28char\20const*\2c\20unsigned\20long\2c\20char*\29 3407:std::__2::enable_if<__is_cpp17_forward_iterator::value\2c\20void>::type\20std::__2::basic_string\2c\20std::__2::allocator>::__init\28wchar_t\20const*\2c\20wchar_t\20const*\29 3408:std::__2::enable_if<__is_cpp17_forward_iterator::value\2c\20void>::type\20std::__2::basic_string\2c\20std::__2::allocator>::__init\28char*\2c\20char*\29 3409:std::__2::deque>::__add_back_capacity\28\29 3410:std::__2::default_delete::operator\28\29\5babi:v160004\5d\28sktext::gpu::TextBlobRedrawCoordinator*\29\20const 3411:std::__2::default_delete::operator\28\29\5babi:v160004\5d\28sktext::GlyphRunBuilder*\29\20const 3412:std::__2::ctype::~ctype\28\29 3413:std::__2::codecvt::~codecvt\28\29 3414:std::__2::codecvt::do_out\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*&\2c\20char*\2c\20char*\2c\20char*&\29\20const 3415:std::__2::codecvt::do_out\28__mbstate_t&\2c\20char32_t\20const*\2c\20char32_t\20const*\2c\20char32_t\20const*&\2c\20char*\2c\20char*\2c\20char*&\29\20const 3416:std::__2::codecvt::do_length\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20unsigned\20long\29\20const 3417:std::__2::codecvt::do_in\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*&\2c\20char32_t*\2c\20char32_t*\2c\20char32_t*&\29\20const 3418:std::__2::codecvt::do_out\28__mbstate_t&\2c\20char16_t\20const*\2c\20char16_t\20const*\2c\20char16_t\20const*&\2c\20char*\2c\20char*\2c\20char*&\29\20const 3419:std::__2::codecvt::do_length\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20unsigned\20long\29\20const 3420:std::__2::codecvt::do_in\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*&\2c\20char16_t*\2c\20char16_t*\2c\20char16_t*&\29\20const 3421:std::__2::char_traits::not_eof\28int\29 3422:std::__2::basic_stringbuf\2c\20std::__2::allocator>::str\28\29\20const 3423:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28unsigned\20long\2c\20wchar_t\29 3424:std::__2::basic_string\2c\20std::__2::allocator>::__grow_by_and_replace\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20wchar_t\20const*\29 3425:std::__2::basic_string\2c\20std::__2::allocator>::__grow_by\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29 3426:std::__2::basic_string\2c\20std::__2::allocator>::resize\28unsigned\20long\2c\20char\29 3427:std::__2::basic_string\2c\20std::__2::allocator>::insert\28unsigned\20long\2c\20char\20const*\2c\20unsigned\20long\29 3428:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28unsigned\20long\2c\20char\29 3429:std::__2::basic_string\2c\20std::__2::allocator>::basic_string>\2c\20void>\28std::__2::basic_string_view>\20const&\29 3430:std::__2::basic_string\2c\20std::__2::allocator>::__throw_out_of_range\5babi:v160004\5d\28\29\20const 3431:std::__2::basic_string\2c\20std::__2::allocator>::__null_terminate_at\5babi:v160004\5d\28char*\2c\20unsigned\20long\29 3432:std::__2::basic_string\2c\20std::__2::allocator>&\20std::__2::basic_string\2c\20std::__2::allocator>::__assign_no_alias\28char\20const*\2c\20unsigned\20long\29 3433:std::__2::basic_string\2c\20std::__2::allocator>&\20skia_private::TArray\2c\20std::__2::allocator>\2c\20false>::emplace_back\28char\20const*&&\29 3434:std::__2::basic_streambuf>::sgetc\5babi:v160004\5d\28\29 3435:std::__2::basic_streambuf>::sbumpc\5babi:v160004\5d\28\29 3436:std::__2::basic_streambuf>::sputc\5babi:v160004\5d\28char\29 3437:std::__2::basic_streambuf>::sgetc\5babi:v160004\5d\28\29 3438:std::__2::basic_streambuf>::sbumpc\5babi:v160004\5d\28\29 3439:std::__2::basic_ostream>::~basic_ostream\28\29.2 3440:std::__2::basic_ostream>::sentry::~sentry\28\29 3441:std::__2::basic_ostream>::sentry::sentry\28std::__2::basic_ostream>&\29 3442:std::__2::basic_ostream>::operator<<\28float\29 3443:std::__2::basic_ostream>::flush\28\29 3444:std::__2::basic_istream>::~basic_istream\28\29.2 3445:std::__2::allocator_traits>::deallocate\5babi:v160004\5d\28std::__2::__sso_allocator&\2c\20std::__2::locale::facet**\2c\20unsigned\20long\29 3446:std::__2::allocator::deallocate\5babi:v160004\5d\28wchar_t*\2c\20unsigned\20long\29 3447:std::__2::allocator::allocate\5babi:v160004\5d\28unsigned\20long\29 3448:std::__2::allocator::allocate\5babi:v160004\5d\28unsigned\20long\29 3449:std::__2::__wrap_iter\20std::__2::vector>::insert\2c\200>\28std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\29 3450:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d\28SkSL::Position&\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray&&\29 3451:std::__2::__time_put::__time_put\5babi:v160004\5d\28\29 3452:std::__2::__time_put::__do_put\28char*\2c\20char*&\2c\20tm\20const*\2c\20char\2c\20char\29\20const 3453:std::__2::__throw_system_error\28int\2c\20char\20const*\29 3454:std::__2::__split_buffer>::push_back\28skia::textlayout::OneLineShaper::RunBlock*&&\29 3455:std::__2::__optional_destruct_base::~__optional_destruct_base\5babi:v160004\5d\28\29 3456:std::__2::__num_put::__widen_and_group_int\28char*\2c\20char*\2c\20char*\2c\20wchar_t*\2c\20wchar_t*&\2c\20wchar_t*&\2c\20std::__2::locale\20const&\29 3457:std::__2::__num_put::__widen_and_group_float\28char*\2c\20char*\2c\20char*\2c\20wchar_t*\2c\20wchar_t*&\2c\20wchar_t*&\2c\20std::__2::locale\20const&\29 3458:std::__2::__num_put::__widen_and_group_int\28char*\2c\20char*\2c\20char*\2c\20char*\2c\20char*&\2c\20char*&\2c\20std::__2::locale\20const&\29 3459:std::__2::__num_put::__widen_and_group_float\28char*\2c\20char*\2c\20char*\2c\20char*\2c\20char*&\2c\20char*&\2c\20std::__2::locale\20const&\29 3460:std::__2::__money_put::__gather_info\28bool\2c\20bool\2c\20std::__2::locale\20const&\2c\20std::__2::money_base::pattern&\2c\20wchar_t&\2c\20wchar_t&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20int&\29 3461:std::__2::__money_put::__format\28wchar_t*\2c\20wchar_t*&\2c\20wchar_t*&\2c\20unsigned\20int\2c\20wchar_t\20const*\2c\20wchar_t\20const*\2c\20std::__2::ctype\20const&\2c\20bool\2c\20std::__2::money_base::pattern\20const&\2c\20wchar_t\2c\20wchar_t\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20int\29 3462:std::__2::__money_put::__gather_info\28bool\2c\20bool\2c\20std::__2::locale\20const&\2c\20std::__2::money_base::pattern&\2c\20char&\2c\20char&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20int&\29 3463:std::__2::__money_put::__format\28char*\2c\20char*&\2c\20char*&\2c\20unsigned\20int\2c\20char\20const*\2c\20char\20const*\2c\20std::__2::ctype\20const&\2c\20bool\2c\20std::__2::money_base::pattern\20const&\2c\20char\2c\20char\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20int\29 3464:std::__2::__libcpp_sscanf_l\28char\20const*\2c\20__locale_struct*\2c\20char\20const*\2c\20...\29 3465:std::__2::__libcpp_mbrtowc_l\5babi:v160004\5d\28wchar_t*\2c\20char\20const*\2c\20unsigned\20long\2c\20__mbstate_t*\2c\20__locale_struct*\29 3466:std::__2::__libcpp_mb_cur_max_l\5babi:v160004\5d\28__locale_struct*\29 3467:std::__2::__libcpp_deallocate\5babi:v160004\5d\28void*\2c\20unsigned\20long\2c\20unsigned\20long\29 3468:std::__2::__libcpp_allocate\5babi:v160004\5d\28unsigned\20long\2c\20unsigned\20long\29 3469:std::__2::__is_overaligned_for_new\5babi:v160004\5d\28unsigned\20long\29 3470:std::__2::__function::__value_func::swap\5babi:v160004\5d\28std::__2::__function::__value_func&\29 3471:std::__2::__function::__func\28GrOp\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29\2c\20std::__2::allocator\28GrOp\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::operator\28\29\28GrSurfaceProxy*&&\2c\20skgpu::Mipmapped&&\29 3472:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0>\2c\20void\20\28\29>::operator\28\29\28\29 3473:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::operator\28\29\28std::__2::function&\29 3474:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::destroy\28\29 3475:std::__2::__constexpr_wcslen\5babi:v160004\5d\28wchar_t\20const*\29 3476:std::__2::__allocation_result>::pointer>\20std::__2::__allocate_at_least\5babi:v160004\5d>\28std::__2::__sso_allocator&\2c\20unsigned\20long\29 3477:start_input_pass 3478:sktext::gpu::can_use_direct\28SkMatrix\20const&\2c\20SkMatrix\20const&\29 3479:sktext::gpu::build_distance_adjust_table\28float\2c\20float\29 3480:sktext::gpu::VertexFiller::opMaskType\28\29\20const 3481:sktext::gpu::VertexFiller::fillVertexData\28int\2c\20int\2c\20SkSpan\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkIRect\2c\20void*\29\20const 3482:sktext::gpu::TextBlobRedrawCoordinator::internalRemove\28sktext::gpu::TextBlob*\29 3483:sktext::gpu::SubRunContainer::MakeInAlloc\28sktext::GlyphRunList\20const&\2c\20SkMatrix\20const&\2c\20SkPaint\20const&\2c\20SkStrikeDeviceInfo\2c\20sktext::StrikeForGPUCacheInterface*\2c\20sktext::gpu::SubRunAllocator*\2c\20sktext::gpu::SubRunContainer::SubRunCreationBehavior\2c\20char\20const*\29::$_2::operator\28\29\28SkZip\2c\20skgpu::MaskFormat\29\20const 3484:sktext::gpu::SubRunContainer::MakeInAlloc\28sktext::GlyphRunList\20const&\2c\20SkMatrix\20const&\2c\20SkPaint\20const&\2c\20SkStrikeDeviceInfo\2c\20sktext::StrikeForGPUCacheInterface*\2c\20sktext::gpu::SubRunAllocator*\2c\20sktext::gpu::SubRunContainer::SubRunCreationBehavior\2c\20char\20const*\29::$_0::operator\28\29\28SkZip\2c\20skgpu::MaskFormat\29\20const 3485:sktext::gpu::SubRunContainer::MakeInAlloc\28sktext::GlyphRunList\20const&\2c\20SkMatrix\20const&\2c\20SkPaint\20const&\2c\20SkStrikeDeviceInfo\2c\20sktext::StrikeForGPUCacheInterface*\2c\20sktext::gpu::SubRunAllocator*\2c\20sktext::gpu::SubRunContainer::SubRunCreationBehavior\2c\20char\20const*\29 3486:sktext::gpu::SubRunContainer::EstimateAllocSize\28sktext::GlyphRunList\20const&\29 3487:sktext::gpu::SubRunAllocator::SubRunAllocator\28char*\2c\20int\2c\20int\29 3488:sktext::gpu::StrikeCache::~StrikeCache\28\29 3489:sktext::gpu::SlugImpl::Make\28SkMatrix\20const&\2c\20sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\2c\20SkStrikeDeviceInfo\2c\20sktext::StrikeForGPUCacheInterface*\29 3490:sktext::gpu::BagOfBytes::BagOfBytes\28char*\2c\20unsigned\20long\2c\20unsigned\20long\29::$_1::operator\28\29\28\29\20const 3491:sktext::glyphrun_source_bounds\28SkFont\20const&\2c\20SkPaint\20const&\2c\20SkZip\2c\20SkSpan\29 3492:sktext::SkStrikePromise::resetStrike\28\29 3493:sktext::GlyphRunList::makeBlob\28\29\20const 3494:sktext::GlyphRunBuilder::blobToGlyphRunList\28SkTextBlob\20const&\2c\20SkPoint\29 3495:skstd::to_string\28float\29 3496:skpathutils::FillPathWithPaint\28SkPath\20const&\2c\20SkPaint\20const&\2c\20SkPath*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29 3497:skjpeg_err_exit\28jpeg_common_struct*\29 3498:skip_string 3499:skip_procedure 3500:skif::\28anonymous\20namespace\29::decompose_transform\28SkMatrix\20const&\2c\20SkPoint\2c\20SkMatrix*\2c\20SkMatrix*\29 3501:skif::\28anonymous\20namespace\29::are_axes_nearly_integer_aligned\28skif::LayerSpace\20const&\2c\20skif::LayerSpace*\29 3502:skif::\28anonymous\20namespace\29::GaneshBackend::maxSigma\28\29\20const 3503:skif::\28anonymous\20namespace\29::GaneshBackend::blur\28SkSize\2c\20sk_sp\2c\20SkIRect\20const&\2c\20SkTileMode\2c\20SkIRect\20const&\29\20const 3504:skif::Mapping::applyOrigin\28skif::LayerSpace\20const&\29 3505:skif::LayerSpace::relevantSubset\28skif::LayerSpace\2c\20SkTileMode\29\20const 3506:skif::FilterResult::subset\28skif::LayerSpace\20const&\2c\20skif::LayerSpace\20const&\2c\20bool\29\20const 3507:skif::FilterResult::applyCrop\28skif::Context\20const&\2c\20skif::LayerSpace\20const&\2c\20SkTileMode\29\20const 3508:skia_private::THashTable::Traits>::set\28unsigned\20long\20long\29 3509:skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::uncheckedSet\28skia_private::THashMap::Pair&&\29 3510:skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::resize\28int\29 3511:skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::removeIfExists\28unsigned\20int\20const&\29 3512:skia_private::THashTable>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::uncheckedSet\28skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair&&\29 3513:skia_private::THashTable\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair\2c\20skia::textlayout::OneLineShaper::FontKey\2c\20skia_private::THashMap\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair>::uncheckedSet\28skia_private::THashMap\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair&&\29 3514:skia_private::THashTable\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair\2c\20skia::textlayout::FontCollection::FamilyKey\2c\20skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair>::uncheckedSet\28skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair&&\29 3515:skia_private::THashTable::Pair\2c\20skgpu::UniqueKey\2c\20skia_private::THashMap::Pair>::uncheckedSet\28skia_private::THashMap::Pair&&\29 3516:skia_private::THashTable\2c\20SkGoodHash>::Pair\2c\20SkString\2c\20skia_private::THashMap\2c\20SkGoodHash>::Pair>::uncheckedSet\28skia_private::THashMap\2c\20SkGoodHash>::Pair&&\29 3517:skia_private::THashTable::Pair\2c\20SkSL::SymbolTable::SymbolKey\2c\20skia_private::THashMap::Pair>::find\28SkSL::SymbolTable::SymbolKey\20const&\29\20const 3518:skia_private::THashTable::Pair\2c\20SkPath\2c\20skia_private::THashMap::Pair>::uncheckedSet\28skia_private::THashMap::Pair&&\29 3519:skia_private::THashTable>\2c\20SkGoodHash>::Pair\2c\20SkImageFilter\20const*\2c\20skia_private::THashMap>\2c\20SkGoodHash>::Pair>::uncheckedSet\28skia_private::THashMap>\2c\20SkGoodHash>::Pair&&\29 3520:skia_private::THashTable>\2c\20SkGoodHash>::Pair\2c\20SkImageFilter\20const*\2c\20skia_private::THashMap>\2c\20SkGoodHash>::Pair>::resize\28int\29 3521:skia_private::THashTable::AdaptedTraits>::uncheckedSet\28skgpu::ganesh::SmallPathShapeData*&&\29 3522:skia_private::THashTable::AdaptedTraits>::resize\28int\29 3523:skia_private::THashTable\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::uncheckedSet\28sk_sp&&\29 3524:skia_private::THashTable\2c\20SkDescriptor\2c\20SkStrikeCache::StrikeTraits>::resize\28int\29 3525:skia_private::THashTable<\28anonymous\20namespace\29::CacheImpl::Value*\2c\20SkImageFilterCacheKey\2c\20SkTDynamicHash<\28anonymous\20namespace\29::CacheImpl::Value\2c\20SkImageFilterCacheKey\2c\20\28anonymous\20namespace\29::CacheImpl::Value>::AdaptedTraits>::uncheckedSet\28\28anonymous\20namespace\29::CacheImpl::Value*&&\29 3526:skia_private::THashTable<\28anonymous\20namespace\29::CacheImpl::Value*\2c\20SkImageFilterCacheKey\2c\20SkTDynamicHash<\28anonymous\20namespace\29::CacheImpl::Value\2c\20SkImageFilterCacheKey\2c\20\28anonymous\20namespace\29::CacheImpl::Value>::AdaptedTraits>::resize\28int\29 3527:skia_private::THashTable::ValueList*\2c\20skgpu::ScratchKey\2c\20SkTDynamicHash::ValueList\2c\20skgpu::ScratchKey\2c\20SkTMultiMap::ValueList>::AdaptedTraits>::uncheckedSet\28SkTMultiMap::ValueList*&&\29 3528:skia_private::THashTable::ValueList*\2c\20skgpu::ScratchKey\2c\20SkTDynamicHash::ValueList\2c\20skgpu::ScratchKey\2c\20SkTMultiMap::ValueList>::AdaptedTraits>::resize\28int\29 3529:skia_private::THashTable::ValueList*\2c\20skgpu::ScratchKey\2c\20SkTDynamicHash::ValueList\2c\20skgpu::ScratchKey\2c\20SkTMultiMap::ValueList>::AdaptedTraits>::uncheckedSet\28SkTMultiMap::ValueList*&&\29 3530:skia_private::THashTable::ValueList*\2c\20skgpu::ScratchKey\2c\20SkTDynamicHash::ValueList\2c\20skgpu::ScratchKey\2c\20SkTMultiMap::ValueList>::AdaptedTraits>::resize\28int\29 3531:skia_private::THashTable::uncheckedSet\28SkResourceCache::Rec*&&\29 3532:skia_private::THashTable::resize\28int\29 3533:skia_private::THashTable::Entry*\2c\20unsigned\20int\2c\20SkLRUCache::Traits>::set\28SkLRUCache::Entry*\29 3534:skia_private::THashTable::Entry*\2c\20unsigned\20int\2c\20SkLRUCache::Traits>::resize\28int\29 3535:skia_private::THashTable::Entry*\2c\20unsigned\20int\2c\20SkLRUCache::Traits>::removeIfExists\28unsigned\20int\20const&\29 3536:skia_private::THashTable>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Entry*\2c\20skia::textlayout::ParagraphCacheKey\2c\20SkLRUCache>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Traits>::resize\28int\29 3537:skia_private::THashTable>\2c\20GrGLGpu::ProgramCache::DescHash>::Entry*\2c\20GrProgramDesc\2c\20SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::Traits>::uncheckedSet\28SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::Entry*&&\29 3538:skia_private::THashTable>\2c\20GrGLGpu::ProgramCache::DescHash>::Entry*\2c\20GrProgramDesc\2c\20SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::Traits>::resize\28int\29 3539:skia_private::THashTable::AdaptedTraits>::uncheckedSet\28GrGpuResource*&&\29 3540:skia_private::THashTable::AdaptedTraits>::resize\28int\29 3541:skia_private::THashMap\20\28*\29\28SkReadBuffer&\29\2c\20SkGoodHash>::set\28unsigned\20int\2c\20sk_sp\20\28*\29\28SkReadBuffer&\29\29 3542:skia_private::THashMap>\2c\20SkGoodHash>::remove\28SkImageFilter\20const*\20const&\29 3543:skia_private::TArray::push_back_raw\28int\29 3544:skia_private::TArray::resize_back\28int\29 3545:skia_private::TArray\2c\20std::__2::allocator>\2c\20false>::checkRealloc\28int\2c\20double\29 3546:skia_private::TArray::~TArray\28\29 3547:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 3548:skia_private::TArray::operator=\28skia_private::TArray&&\29 3549:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 3550:skia_private::TArray::BufferFinishedMessage\2c\20false>::operator=\28skia_private::TArray::BufferFinishedMessage\2c\20false>&&\29 3551:skia_private::TArray::BufferFinishedMessage\2c\20false>::installDataAndUpdateCapacity\28SkSpan\29 3552:skia_private::TArray::Plane\2c\20false>::move\28void*\29 3553:skia_private::TArray::operator=\28skia_private::TArray&&\29 3554:skia_private::TArray\29::ReorderedArgument\2c\20false>::push_back\28SkSL::optimize_constructor_swizzle\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ConstructorCompound\20const&\2c\20skia_private::STArray<4\2c\20signed\20char\2c\20true>\29::ReorderedArgument&&\29 3555:skia_private::TArray::TArray\28skia_private::TArray&&\29 3556:skia_private::TArray::swap\28skia_private::TArray&\29 3557:skia_private::TArray\2c\20true>::operator=\28skia_private::TArray\2c\20true>&&\29 3558:skia_private::TArray::push_back_raw\28int\29 3559:skia_private::TArray::operator=\28skia_private::TArray\20const&\29 3560:skia_private::TArray::push_back_raw\28int\29 3561:skia_private::TArray::push_back_raw\28int\29 3562:skia_private::TArray::move_back_n\28int\2c\20GrTextureProxy**\29 3563:skia_private::TArray::operator=\28skia_private::TArray&&\29 3564:skia_private::TArray::push_back_n\28int\2c\20EllipticalRRectOp::RRect\20const*\29 3565:skia_private::STArray<4\2c\20signed\20char\2c\20true>::STArray\28skia_private::STArray<4\2c\20signed\20char\2c\20true>\20const&\29 3566:skia_png_zfree 3567:skia_png_write_zTXt 3568:skia_png_write_tIME 3569:skia_png_write_tEXt 3570:skia_png_write_iTXt 3571:skia_png_set_write_fn 3572:skia_png_set_strip_16 3573:skia_png_set_read_user_transform_fn 3574:skia_png_set_read_user_chunk_fn 3575:skia_png_set_option 3576:skia_png_set_mem_fn 3577:skia_png_set_expand_gray_1_2_4_to_8 3578:skia_png_set_error_fn 3579:skia_png_set_compression_level 3580:skia_png_set_IHDR 3581:skia_png_read_filter_row 3582:skia_png_process_IDAT_data 3583:skia_png_icc_set_sRGB 3584:skia_png_icc_check_tag_table 3585:skia_png_icc_check_header 3586:skia_png_get_uint_31 3587:skia_png_get_sBIT 3588:skia_png_get_rowbytes 3589:skia_png_get_error_ptr 3590:skia_png_get_IHDR 3591:skia_png_do_swap 3592:skia_png_do_read_transformations 3593:skia_png_do_read_interlace 3594:skia_png_do_packswap 3595:skia_png_do_invert 3596:skia_png_do_gray_to_rgb 3597:skia_png_do_expand 3598:skia_png_do_check_palette_indexes 3599:skia_png_do_bgr 3600:skia_png_destroy_png_struct 3601:skia_png_destroy_gamma_table 3602:skia_png_create_png_struct 3603:skia_png_create_info_struct 3604:skia_png_crc_read 3605:skia_png_colorspace_sync_info 3606:skia_png_check_IHDR 3607:skia::textlayout::TypefaceFontStyleSet::matchStyle\28SkFontStyle\20const&\29 3608:skia::textlayout::TextStyle::matchOneAttribute\28skia::textlayout::StyleType\2c\20skia::textlayout::TextStyle\20const&\29\20const 3609:skia::textlayout::TextStyle::equals\28skia::textlayout::TextStyle\20const&\29\20const 3610:skia::textlayout::TextShadow::operator!=\28skia::textlayout::TextShadow\20const&\29\20const 3611:skia::textlayout::TextLine::paint\28skia::textlayout::ParagraphPainter*\2c\20float\2c\20float\29 3612:skia::textlayout::TextLine::iterateThroughClustersInGlyphsOrder\28bool\2c\20bool\2c\20std::__2::function\20const&\29\20const::$_0::operator\28\29\28unsigned\20long\20const&\29\20const 3613:skia::textlayout::TextLine::getRectsForRange\28skia::textlayout::SkRange\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29::operator\28\29\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\20const::'lambda'\28SkRect\29::operator\28\29\28SkRect\29\20const 3614:skia::textlayout::TextLine::getMetrics\28\29\20const 3615:skia::textlayout::TextLine::ensureTextBlobCachePopulated\28\29 3616:skia::textlayout::TextLine::buildTextBlob\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 3617:skia::textlayout::TextLine::TextLine\28skia::textlayout::ParagraphImpl*\2c\20SkPoint\2c\20SkPoint\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20float\2c\20skia::textlayout::InternalLineMetrics\29 3618:skia::textlayout::TextLine&\20skia_private::TArray::emplace_back&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20float&\2c\20skia::textlayout::InternalLineMetrics&>\28skia::textlayout::ParagraphImpl*&&\2c\20SkPoint&\2c\20SkPoint&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20float&\2c\20skia::textlayout::InternalLineMetrics&\29 3619:skia::textlayout::Run::shift\28skia::textlayout::Cluster\20const*\2c\20float\29 3620:skia::textlayout::Run::newRunBuffer\28\29 3621:skia::textlayout::Run::findLimitingGlyphClusters\28skia::textlayout::SkRange\29\20const 3622:skia::textlayout::Run::addSpacesAtTheEnd\28float\2c\20skia::textlayout::Cluster*\29 3623:skia::textlayout::ParagraphStyle::effective_align\28\29\20const 3624:skia::textlayout::ParagraphStyle::ParagraphStyle\28\29 3625:skia::textlayout::ParagraphPainter::DecorationStyle::DecorationStyle\28unsigned\20int\2c\20float\2c\20std::__2::optional\29 3626:skia::textlayout::ParagraphImpl::~ParagraphImpl\28\29 3627:skia::textlayout::ParagraphImpl::text\28skia::textlayout::SkRange\29 3628:skia::textlayout::ParagraphImpl::resolveStrut\28\29 3629:skia::textlayout::ParagraphImpl::getGlyphInfoAtUTF16Offset\28unsigned\20long\2c\20skia::textlayout::Paragraph::GlyphInfo*\29 3630:skia::textlayout::ParagraphImpl::getGlyphClusterAt\28unsigned\20long\2c\20skia::textlayout::Paragraph::GlyphClusterInfo*\29 3631:skia::textlayout::ParagraphImpl::findPreviousGraphemeBoundary\28unsigned\20long\29\20const 3632:skia::textlayout::ParagraphImpl::computeEmptyMetrics\28\29 3633:skia::textlayout::ParagraphImpl::clusters\28skia::textlayout::SkRange\29 3634:skia::textlayout::ParagraphImpl::block\28unsigned\20long\29 3635:skia::textlayout::ParagraphCacheValue::~ParagraphCacheValue\28\29 3636:skia::textlayout::ParagraphCacheKey::ParagraphCacheKey\28skia::textlayout::ParagraphImpl\20const*\29 3637:skia::textlayout::ParagraphBuilderImpl::~ParagraphBuilderImpl\28\29 3638:skia::textlayout::ParagraphBuilderImpl::make\28skia::textlayout::ParagraphStyle\20const&\2c\20sk_sp\29 3639:skia::textlayout::ParagraphBuilderImpl::addPlaceholder\28skia::textlayout::PlaceholderStyle\20const&\2c\20bool\29 3640:skia::textlayout::ParagraphBuilderImpl::ParagraphBuilderImpl\28skia::textlayout::ParagraphStyle\20const&\2c\20sk_sp\2c\20sk_sp\29 3641:skia::textlayout::Paragraph::~Paragraph\28\29 3642:skia::textlayout::OneLineShaper::clusteredText\28skia::textlayout::SkRange&\29 3643:skia::textlayout::FontCollection::~FontCollection\28\29 3644:skia::textlayout::FontCollection::matchTypeface\28SkString\20const&\2c\20SkFontStyle\29 3645:skia::textlayout::FontCollection::defaultFallback\28int\2c\20SkFontStyle\2c\20SkString\20const&\29 3646:skia::textlayout::FontCollection::FamilyKey::Hasher::operator\28\29\28skia::textlayout::FontCollection::FamilyKey\20const&\29\20const 3647:skgpu::tess::\28anonymous\20namespace\29::write_curve_index_buffer_base_index\28skgpu::VertexWriter\2c\20unsigned\20long\2c\20unsigned\20short\29 3648:skgpu::tess::StrokeIterator::next\28\29 3649:skgpu::tess::StrokeIterator::finishOpenContour\28\29 3650:skgpu::tess::PreChopPathCurves\28float\2c\20SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\29 3651:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::~SmallPathOp\28\29 3652:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::SmallPathOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20GrStyledShape\20const&\2c\20SkMatrix\20const&\2c\20bool\2c\20GrUserStencilSettings\20const*\29 3653:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::recordDraw\28GrMeshDrawTarget*\2c\20int\2c\20unsigned\20long\2c\20void*\2c\20int\2c\20unsigned\20short*\29 3654:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::AAFlatteningConvexPathOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\2c\20float\2c\20SkStrokeRec::Style\2c\20SkPaint::Join\2c\20float\2c\20GrUserStencilSettings\20const*\29 3655:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::AAConvexPathOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\2c\20GrUserStencilSettings\20const*\29 3656:skgpu::ganesh::TextureOp::Make\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20SkAlphaType\2c\20sk_sp\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20skgpu::ganesh::TextureOp::Saturate\2c\20SkBlendMode\2c\20GrAAType\2c\20DrawQuad*\2c\20SkRect\20const*\29 3657:skgpu::ganesh::TessellationPathRenderer::IsSupported\28GrCaps\20const&\29 3658:skgpu::ganesh::SurfaceFillContext::fillRectToRectWithFP\28SkIRect\20const&\2c\20SkIRect\20const&\2c\20std::__2::unique_ptr>\29 3659:skgpu::ganesh::SurfaceFillContext::blitTexture\28GrSurfaceProxyView\2c\20SkIRect\20const&\2c\20SkIPoint\20const&\29 3660:skgpu::ganesh::SurfaceFillContext::addOp\28std::__2::unique_ptr>\29 3661:skgpu::ganesh::SurfaceFillContext::addDrawOp\28std::__2::unique_ptr>\29 3662:skgpu::ganesh::SurfaceDrawContext::~SurfaceDrawContext\28\29.1 3663:skgpu::ganesh::SurfaceDrawContext::drawVertices\28GrClip\20const*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20sk_sp\2c\20GrPrimitiveType*\2c\20bool\29 3664:skgpu::ganesh::SurfaceDrawContext::drawTexturedQuad\28GrClip\20const*\2c\20GrSurfaceProxyView\2c\20SkAlphaType\2c\20sk_sp\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkBlendMode\2c\20DrawQuad*\2c\20SkRect\20const*\29 3665:skgpu::ganesh::SurfaceDrawContext::drawTexture\28GrClip\20const*\2c\20GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkBlendMode\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20GrQuadAAFlags\2c\20SkCanvas::SrcRectConstraint\2c\20SkMatrix\20const&\2c\20sk_sp\29 3666:skgpu::ganesh::SurfaceDrawContext::drawStrokedLine\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkPoint\20const*\2c\20SkStrokeRec\20const&\29 3667:skgpu::ganesh::SurfaceDrawContext::drawRegion\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkRegion\20const&\2c\20GrStyle\20const&\2c\20GrUserStencilSettings\20const*\29 3668:skgpu::ganesh::SurfaceDrawContext::drawOval\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20GrStyle\20const&\29 3669:skgpu::ganesh::SurfaceDrawContext::SurfaceDrawContext\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20GrSurfaceProxyView\2c\20GrColorType\2c\20sk_sp\2c\20SkSurfaceProps\20const&\29 3670:skgpu::ganesh::SurfaceContext::~SurfaceContext\28\29 3671:skgpu::ganesh::SurfaceContext::writePixels\28GrDirectContext*\2c\20GrCPixmap\2c\20SkIPoint\29 3672:skgpu::ganesh::SurfaceContext::copy\28sk_sp\2c\20SkIRect\2c\20SkIPoint\29 3673:skgpu::ganesh::SurfaceContext::copyScaled\28sk_sp\2c\20SkIRect\2c\20SkIRect\2c\20SkFilterMode\29 3674:skgpu::ganesh::SurfaceContext::asyncRescaleAndReadPixels\28GrDirectContext*\2c\20SkImageInfo\20const&\2c\20SkIRect\20const&\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29 3675:skgpu::ganesh::SurfaceContext::asyncRescaleAndReadPixelsYUV420\28GrDirectContext*\2c\20SkYUVColorSpace\2c\20bool\2c\20sk_sp\2c\20SkIRect\20const&\2c\20SkISize\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29::FinishContext::~FinishContext\28\29 3676:skgpu::ganesh::SurfaceContext::asyncRescaleAndReadPixelsYUV420\28GrDirectContext*\2c\20SkYUVColorSpace\2c\20bool\2c\20sk_sp\2c\20SkIRect\20const&\2c\20SkISize\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29 3677:skgpu::ganesh::SurfaceContext::SurfaceContext\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20GrColorInfo\20const&\29 3678:skgpu::ganesh::StrokeTessellator::draw\28GrOpFlushState*\29\20const 3679:skgpu::ganesh::StrokeTessellateOp::prePrepareTessellator\28GrTessellationShader::ProgramArgs&&\2c\20GrAppliedClip&&\29 3680:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::NonAAStrokeRectOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20GrSimpleMeshDrawOpHelper::InputFlags\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20SkStrokeRec\20const&\2c\20GrAAType\29 3681:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::AAStrokeRectOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::RectInfo\20const&\2c\20bool\29 3682:skgpu::ganesh::StencilMaskHelper::drawShape\28GrShape\20const&\2c\20SkMatrix\20const&\2c\20SkRegion::Op\2c\20GrAA\29 3683:skgpu::ganesh::SoftwarePathRenderer::DrawAroundInvPath\28skgpu::ganesh::SurfaceDrawContext*\2c\20GrPaint&&\2c\20GrUserStencilSettings\20const&\2c\20GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20SkIRect\20const&\29 3684:skgpu::ganesh::SmallPathAtlasMgr::findOrCreate\28skgpu::ganesh::SmallPathShapeDataKey\20const&\29 3685:skgpu::ganesh::SmallPathAtlasMgr::deleteCacheEntry\28skgpu::ganesh::SmallPathShapeData*\29 3686:skgpu::ganesh::ShadowRRectOp::Make\28GrRecordingContext*\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkRRect\20const&\2c\20float\2c\20float\29 3687:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::RegionOpImpl\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkRegion\20const&\2c\20GrAAType\2c\20GrUserStencilSettings\20const*\29 3688:skgpu::ganesh::RasterAsView\28GrRecordingContext*\2c\20SkImage_Raster\20const*\2c\20skgpu::Mipmapped\2c\20GrImageTexGenPolicy\29 3689:skgpu::ganesh::QuadPerEdgeAA::Tessellator::append\28GrQuad*\2c\20GrQuad*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20GrQuadAAFlags\29 3690:skgpu::ganesh::QuadPerEdgeAA::Tessellator::Tessellator\28skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20char*\29 3691:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::initializeAttrs\28skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\29 3692:skgpu::ganesh::QuadPerEdgeAA::IssueDraw\28GrCaps\20const&\2c\20GrOpsRenderPass*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20int\2c\20int\2c\20int\2c\20int\29 3693:skgpu::ganesh::QuadPerEdgeAA::GetIndexBuffer\28GrMeshDrawTarget*\2c\20skgpu::ganesh::QuadPerEdgeAA::IndexBufferOption\29 3694:skgpu::ganesh::PathTessellateOp::usesMSAA\28\29\20const 3695:skgpu::ganesh::PathTessellateOp::prepareTessellator\28GrTessellationShader::ProgramArgs\20const&\2c\20GrAppliedClip&&\29 3696:skgpu::ganesh::PathTessellateOp::PathTessellateOp\28SkArenaAlloc*\2c\20GrAAType\2c\20GrUserStencilSettings\20const*\2c\20SkMatrix\20const&\2c\20SkPath\20const&\2c\20GrPaint&&\2c\20SkRect\20const&\29 3697:skgpu::ganesh::PathStencilCoverOp::prePreparePrograms\28GrTessellationShader::ProgramArgs\20const&\2c\20GrAppliedClip&&\29 3698:skgpu::ganesh::PathRenderer::getStencilSupport\28GrStyledShape\20const&\29\20const 3699:skgpu::ganesh::PathInnerTriangulateOp::prePreparePrograms\28GrTessellationShader::ProgramArgs\20const&\2c\20GrAppliedClip&&\29 3700:skgpu::ganesh::PathCurveTessellator::~PathCurveTessellator\28\29 3701:skgpu::ganesh::PathCurveTessellator::prepareWithTriangles\28GrMeshDrawTarget*\2c\20SkMatrix\20const&\2c\20GrTriangulator::BreadcrumbTriangleList*\2c\20skgpu::ganesh::PathTessellator::PathDrawList\20const&\2c\20int\29 3702:skgpu::ganesh::OpsTask::onMakeClosed\28GrRecordingContext*\2c\20SkIRect*\29 3703:skgpu::ganesh::OpsTask::onExecute\28GrOpFlushState*\29 3704:skgpu::ganesh::OpsTask::addOp\28GrDrawingManager*\2c\20std::__2::unique_ptr>\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29 3705:skgpu::ganesh::OpsTask::addDrawOp\28GrDrawingManager*\2c\20std::__2::unique_ptr>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29 3706:skgpu::ganesh::OpsTask::OpsTask\28GrDrawingManager*\2c\20GrSurfaceProxyView\2c\20GrAuditTrail*\2c\20sk_sp\29 3707:skgpu::ganesh::OpsTask::OpChain::tryConcat\28skgpu::ganesh::OpsTask::OpChain::List*\2c\20GrProcessorSet::Analysis\2c\20GrDstProxyView\20const&\2c\20GrAppliedClip\20const*\2c\20SkRect\20const&\2c\20GrCaps\20const&\2c\20SkArenaAlloc*\2c\20GrAuditTrail*\29 3708:skgpu::ganesh::MakeFragmentProcessorFromView\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkSamplingOptions\2c\20SkTileMode\20const*\2c\20SkMatrix\20const&\2c\20SkRect\20const*\2c\20SkRect\20const*\29 3709:skgpu::ganesh::LockTextureProxyView\28GrRecordingContext*\2c\20SkImage_Lazy\20const*\2c\20GrImageTexGenPolicy\2c\20skgpu::Mipmapped\29 3710:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::~NonAALatticeOp\28\29 3711:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::NonAALatticeOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20GrSurfaceProxyView\2c\20SkAlphaType\2c\20sk_sp\2c\20SkFilterMode\2c\20std::__2::unique_ptr>\2c\20SkRect\20const&\29 3712:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Make\28GrRecordingContext*\2c\20SkArenaAlloc*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkRRect\20const&\2c\20skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::LocalCoords\20const&\2c\20GrAA\29 3713:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::FillRRectOpImpl\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkArenaAlloc*\2c\20SkMatrix\20const&\2c\20SkRRect\20const&\2c\20skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::LocalCoords\20const&\2c\20skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::ProcessorFlags\29 3714:skgpu::ganesh::DrawAtlasPathOp::prepareProgram\28GrCaps\20const&\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 3715:skgpu::ganesh::Device::replaceBackingProxy\28SkSurface::ContentChangeMode\2c\20sk_sp\2c\20GrColorType\2c\20sk_sp\2c\20GrSurfaceOrigin\2c\20SkSurfaceProps\20const&\29 3716:skgpu::ganesh::Device::makeSpecial\28SkBitmap\20const&\29 3717:skgpu::ganesh::Device::drawPath\28SkPath\20const&\2c\20SkPaint\20const&\2c\20bool\29 3718:skgpu::ganesh::Device::drawEdgeAAImage\28SkImage\20const*\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkMatrix\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\2c\20SkMatrix\20const&\2c\20SkTileMode\29 3719:skgpu::ganesh::Device::discard\28\29 3720:skgpu::ganesh::Device::android_utils_clipAsRgn\28SkRegion*\29\20const 3721:skgpu::ganesh::DefaultPathRenderer::internalDrawPath\28skgpu::ganesh::SurfaceDrawContext*\2c\20GrPaint&&\2c\20GrAAType\2c\20GrUserStencilSettings\20const&\2c\20GrClip\20const*\2c\20SkMatrix\20const&\2c\20GrStyledShape\20const&\2c\20bool\29 3722:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingCircleEffect::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 3723:skgpu::ganesh::CopyView\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20skgpu::Mipmapped\2c\20GrImageTexGenPolicy\2c\20std::__2::basic_string_view>\29 3724:skgpu::ganesh::ClipStack::clipPath\28SkMatrix\20const&\2c\20SkPath\20const&\2c\20GrAA\2c\20SkClipOp\29 3725:skgpu::ganesh::ClipStack::SaveRecord::replaceWithElement\28skgpu::ganesh::ClipStack::RawElement&&\2c\20SkTBlockList*\29 3726:skgpu::ganesh::ClipStack::SaveRecord::addElement\28skgpu::ganesh::ClipStack::RawElement&&\2c\20SkTBlockList*\29 3727:skgpu::ganesh::ClipStack::RawElement::contains\28skgpu::ganesh::ClipStack::Draw\20const&\29\20const 3728:skgpu::ganesh::AtlasTextOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 3729:skgpu::ganesh::AtlasTextOp::AtlasTextOp\28skgpu::ganesh::AtlasTextOp::MaskType\2c\20bool\2c\20int\2c\20SkRect\2c\20skgpu::ganesh::AtlasTextOp::Geometry*\2c\20GrColorInfo\20const&\2c\20GrPaint&&\29 3730:skgpu::ganesh::AtlasRenderTask::stencilAtlasRect\28GrRecordingContext*\2c\20SkRect\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20GrUserStencilSettings\20const*\29 3731:skgpu::ganesh::AtlasRenderTask::addPath\28SkMatrix\20const&\2c\20SkPath\20const&\2c\20SkIPoint\2c\20int\2c\20int\2c\20bool\2c\20SkIPoint16*\29 3732:skgpu::ganesh::AtlasPathRenderer::preFlush\28GrOnFlushResourceProvider*\29 3733:skgpu::ganesh::AtlasPathRenderer::addPathToAtlas\28GrRecordingContext*\2c\20SkMatrix\20const&\2c\20SkPath\20const&\2c\20SkRect\20const&\2c\20SkIRect*\2c\20SkIPoint16*\2c\20bool*\2c\20std::__2::function\20const&\29 3734:skgpu::ganesh::AsFragmentProcessor\28GrRecordingContext*\2c\20SkImage\20const*\2c\20SkSamplingOptions\2c\20SkTileMode\20const*\2c\20SkMatrix\20const&\2c\20SkRect\20const*\2c\20SkRect\20const*\29 3735:skgpu::TiledTextureUtils::OptimizeSampleArea\28SkISize\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkPoint\20const*\2c\20SkRect*\2c\20SkRect*\2c\20SkMatrix*\29 3736:skgpu::TClientMappedBufferManager::process\28\29 3737:skgpu::TAsyncReadResult::~TAsyncReadResult\28\29 3738:skgpu::RectanizerSkyline::addRect\28int\2c\20int\2c\20SkIPoint16*\29 3739:skgpu::Plot::Plot\28int\2c\20int\2c\20skgpu::AtlasGenerationCounter*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20SkColorType\2c\20unsigned\20long\29 3740:skgpu::GetReducedBlendModeInfo\28SkBlendMode\29 3741:skgpu::BlendFuncName\28SkBlendMode\29 3742:skcms_private::baseline::exec_stages\28skcms_private::Op\20const*\2c\20void\20const**\2c\20char\20const*\2c\20char*\2c\20int\29 3743:skcms_private::baseline::clut\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20char\20const*\2c\20unsigned\20char\20const*\2c\20unsigned\20char\20const*\2c\20float\20vector\5b4\5d*\2c\20float\20vector\5b4\5d*\2c\20float\20vector\5b4\5d*\2c\20float\20vector\5b4\5d*\29 3744:skcms_ApproximatelyEqualProfiles 3745:sk_sp\20sk_make_sp\2c\20SkSurfaceProps\20const*&>\28SkImageInfo\20const&\2c\20sk_sp&&\2c\20SkSurfaceProps\20const*&\29 3746:sk_sp*\20emscripten::internal::MemberAccess>::getWire\28sk_sp\20SkRuntimeEffect::TracedShader::*\20const&\2c\20SkRuntimeEffect::TracedShader\20const&\29 3747:sk_fopen\28char\20const*\2c\20SkFILE_Flags\29 3748:sk_fgetsize\28_IO_FILE*\29 3749:sk_fclose\28_IO_FILE*\29 3750:sk_error_fn\28png_struct_def*\2c\20char\20const*\29 3751:setup_masks_arabic_plan\28arabic_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_script_t\29 3752:set_khr_debug_label\28GrGLGpu*\2c\20unsigned\20int\2c\20std::__2::basic_string_view>\29 3753:setThrew 3754:serialize_image\28SkImage\20const*\2c\20SkSerialProcs\29 3755:send_tree 3756:sect_with_vertical\28SkPoint\20const*\2c\20float\29 3757:sect_with_horizontal\28SkPoint\20const*\2c\20float\29 3758:scanexp 3759:scalbnl 3760:rewind_if_necessary\28GrTriangulator::Edge*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Comparator\20const&\29 3761:resolveImplicitLevels\28UBiDi*\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\29 3762:reset_and_decode_image_config\28wuffs_gif__decoder__struct*\2c\20wuffs_base__image_config__struct*\2c\20wuffs_base__io_buffer__struct*\2c\20SkStream*\29 3763:renderbuffer_storage_msaa\28GrGLGpu*\2c\20int\2c\20unsigned\20int\2c\20int\2c\20int\29 3764:recursive_edge_intersect\28GrTriangulator::Line\20const&\2c\20SkPoint\2c\20SkPoint\2c\20GrTriangulator::Line\20const&\2c\20SkPoint\2c\20SkPoint\2c\20SkPoint*\2c\20double*\2c\20double*\29 3765:reclassify_vertex\28TriangulationVertex*\2c\20SkPoint\20const*\2c\20int\2c\20ReflexHash*\2c\20SkTInternalLList*\29 3766:read_metadata\28std::__2::vector>\20const&\2c\20unsigned\20int\2c\20unsigned\20char\20const*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\29 3767:quad_intercept_v\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 3768:quad_intercept_h\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 3769:quad_in_line\28SkPoint\20const*\29 3770:psh_hint_table_init 3771:psh_hint_table_find_strong_points 3772:psh_hint_table_activate_mask 3773:psh_hint_align 3774:psh_glyph_interpolate_strong_points 3775:psh_glyph_interpolate_other_points 3776:psh_glyph_interpolate_normal_points 3777:psh_blues_set_zones 3778:ps_parser_load_field 3779:ps_dimension_end 3780:ps_dimension_done 3781:ps_builder_start_point 3782:printf_core 3783:premultiply_argb_as_rgba\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 3784:premultiply_argb_as_bgra\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 3785:position_cluster\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20bool\29 3786:portable::uniform_color_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3787:portable::set_rgb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3788:portable::scale_1_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3789:portable::memset64\28unsigned\20long\20long*\2c\20unsigned\20long\20long\2c\20int\29 3790:portable::lerp_1_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3791:portable::copy_from_indirect_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3792:portable::copy_2_slots_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3793:portable::check_decal_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3794:pop_arg 3795:pntz 3796:png_inflate 3797:png_deflate_claim 3798:png_decompress_chunk 3799:png_cache_unknown_chunk 3800:optimize_layer_filter\28SkImageFilter\20const*\2c\20SkPaint*\29 3801:operator==\28SkPaint\20const&\2c\20SkPaint\20const&\29 3802:open_face 3803:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::SDFTSubRun::vertexStride\28SkMatrix\20const&\29\20const 3804:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::~DirectMaskSubRun\28\29.1 3805:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::~DirectMaskSubRun\28\29 3806:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::testingOnly_packedGlyphIDToGlyph\28sktext::gpu::StrikeCache*\29\20const 3807:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::glyphs\28\29\20const 3808:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::glyphCount\28\29\20const 3809:non-virtual\20thunk\20to\20SkMeshPriv::CpuBuffer::~CpuBuffer\28\29.1 3810:non-virtual\20thunk\20to\20SkMeshPriv::CpuBuffer::~CpuBuffer\28\29 3811:non-virtual\20thunk\20to\20SkMeshPriv::CpuBuffer::size\28\29\20const 3812:non-virtual\20thunk\20to\20SkMeshPriv::CpuBuffer::onUpdate\28GrDirectContext*\2c\20void\20const*\2c\20unsigned\20long\2c\20unsigned\20long\29 3813:nearly_equal\28double\2c\20double\29 3814:mbsrtowcs 3815:map_quad_general\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20SkMatrix\20const&\2c\20skvx::Vec<4\2c\20float>*\2c\20skvx::Vec<4\2c\20float>*\2c\20skvx::Vec<4\2c\20float>*\29 3816:make_tiled_gradient\28GrFPArgs\20const&\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20bool\2c\20bool\29 3817:make_premul_effect\28std::__2::unique_ptr>\29 3818:make_dual_interval_colorizer\28SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20float\29 3819:make_clamped_gradient\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20SkRGBA4f<\28SkAlphaType\292>\2c\20SkRGBA4f<\28SkAlphaType\292>\2c\20bool\29 3820:make_bmp_proxy\28GrProxyProvider*\2c\20SkBitmap\20const&\2c\20GrColorType\2c\20skgpu::Mipmapped\2c\20SkBackingFit\2c\20skgpu::Budgeted\29 3821:longest_match 3822:long\20std::__2::__num_get_signed_integral\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\2c\20int\29 3823:long\20long\20std::__2::__num_get_signed_integral\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\2c\20int\29 3824:long\20double\20std::__2::__num_get_float\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\29 3825:load_post_names 3826:line_intercept_v\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 3827:line_intercept_h\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 3828:legalfunc$_embind_register_bigint 3829:jpeg_open_backing_store 3830:jpeg_destroy 3831:jpeg_alloc_huff_table 3832:jinit_upsampler 3833:initial_reordering_consonant_syllable\28hb_ot_shape_plan_t\20const*\2c\20hb_face_t*\2c\20hb_buffer_t*\2c\20unsigned\20int\2c\20unsigned\20int\29 3834:init_error_limit 3835:init_block 3836:image_filter_color_type\28SkImageInfo\29 3837:hb_vector_t\2c\20false>::resize\28int\2c\20bool\2c\20bool\29 3838:hb_vector_t\2c\20false>::resize\28int\2c\20bool\2c\20bool\29 3839:hb_utf8_t::next\28unsigned\20char\20const*\2c\20unsigned\20char\20const*\2c\20unsigned\20int*\2c\20unsigned\20int\29 3840:hb_unicode_script 3841:hb_unicode_mirroring_nil\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20void*\29 3842:hb_unicode_funcs_t::is_default_ignorable\28unsigned\20int\29 3843:hb_shape_plan_key_t::init\28bool\2c\20hb_face_t*\2c\20hb_segment_properties_t\20const*\2c\20hb_feature_t\20const*\2c\20unsigned\20int\2c\20int\20const*\2c\20unsigned\20int\2c\20char\20const*\20const*\29 3844:hb_shape_plan_create2 3845:hb_serialize_context_t::fini\28\29 3846:hb_sanitize_context_t::return_t\20AAT::ChainSubtable::dispatch\28hb_sanitize_context_t*\29\20const 3847:hb_sanitize_context_t::return_t\20AAT::ChainSubtable::dispatch\28hb_sanitize_context_t*\29\20const 3848:hb_paint_extents_paint_linear_gradient\28hb_paint_funcs_t*\2c\20void*\2c\20hb_color_line_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 3849:hb_paint_extents_get_funcs\28\29 3850:hb_paint_extents_context_t::hb_paint_extents_context_t\28\29 3851:hb_ot_map_t::fini\28\29 3852:hb_ot_layout_table_select_script 3853:hb_ot_layout_table_get_lookup_count 3854:hb_ot_layout_table_find_feature_variations 3855:hb_ot_layout_table_find_feature\28hb_face_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\29 3856:hb_ot_layout_script_select_language 3857:hb_ot_layout_language_get_required_feature 3858:hb_ot_layout_language_find_feature 3859:hb_ot_layout_has_substitution 3860:hb_ot_layout_feature_with_variations_get_lookups 3861:hb_ot_layout_collect_features_map 3862:hb_ot_font_set_funcs 3863:hb_lazy_loader_t\2c\20hb_face_t\2c\2038u\2c\20OT::sbix_accelerator_t>::create\28hb_face_t*\29 3864:hb_lazy_loader_t\2c\20hb_face_t\2c\207u\2c\20OT::post_accelerator_t>::get\28\29\20const 3865:hb_lazy_loader_t\2c\20hb_face_t\2c\2019u\2c\20hb_blob_t>::get\28\29\20const 3866:hb_lazy_loader_t\2c\20hb_face_t\2c\2035u\2c\20hb_blob_t>::get\28\29\20const 3867:hb_lazy_loader_t\2c\20hb_face_t\2c\2037u\2c\20OT::CBDT_accelerator_t>::get\28\29\20const 3868:hb_lazy_loader_t\2c\20hb_face_t\2c\2032u\2c\20hb_blob_t>::get\28\29\20const 3869:hb_lazy_loader_t\2c\20hb_face_t\2c\2028u\2c\20hb_blob_t>::get\28\29\20const 3870:hb_lazy_loader_t\2c\20hb_face_t\2c\2029u\2c\20hb_blob_t>::get\28\29\20const 3871:hb_language_matches 3872:hb_indic_get_categories\28unsigned\20int\29 3873:hb_hashmap_t::fetch_item\28hb_serialize_context_t::object_t\20const*\20const&\2c\20unsigned\20int\29\20const 3874:hb_hashmap_t::alloc\28unsigned\20int\29 3875:hb_font_t::get_glyph_v_origin_with_fallback\28unsigned\20int\2c\20int*\2c\20int*\29 3876:hb_font_set_variations 3877:hb_font_set_funcs 3878:hb_font_get_variation_glyph_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 3879:hb_font_get_glyph_h_advance 3880:hb_font_get_glyph_extents 3881:hb_font_get_font_h_extents_nil\28hb_font_t*\2c\20void*\2c\20hb_font_extents_t*\2c\20void*\29 3882:hb_font_funcs_set_variation_glyph_func 3883:hb_font_funcs_set_nominal_glyphs_func 3884:hb_font_funcs_set_nominal_glyph_func 3885:hb_font_funcs_set_glyph_h_advances_func 3886:hb_font_funcs_set_glyph_extents_func 3887:hb_font_funcs_create 3888:hb_draw_move_to_nil\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20void*\29 3889:hb_draw_funcs_set_quadratic_to_func 3890:hb_draw_funcs_set_move_to_func 3891:hb_draw_funcs_set_line_to_func 3892:hb_draw_funcs_set_cubic_to_func 3893:hb_draw_funcs_destroy 3894:hb_draw_funcs_create 3895:hb_draw_extents_move_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20void*\29 3896:hb_buffer_t::sort\28unsigned\20int\2c\20unsigned\20int\2c\20int\20\28*\29\28hb_glyph_info_t\20const*\2c\20hb_glyph_info_t\20const*\29\29 3897:hb_buffer_t::safe_to_insert_tatweel\28unsigned\20int\2c\20unsigned\20int\29 3898:hb_buffer_t::output_info\28hb_glyph_info_t\20const&\29 3899:hb_buffer_t::message_impl\28hb_font_t*\2c\20char\20const*\2c\20void*\29 3900:hb_buffer_t::leave\28\29 3901:hb_buffer_t::delete_glyphs_inplace\28bool\20\28*\29\28hb_glyph_info_t\20const*\29\29 3902:hb_buffer_t::clear_positions\28\29 3903:hb_buffer_set_length 3904:hb_buffer_get_glyph_positions 3905:hb_buffer_diff 3906:hb_buffer_create 3907:hb_buffer_clear_contents 3908:hb_buffer_add_utf8 3909:hb_blob_t*\20hb_sanitize_context_t::sanitize_blob\28hb_blob_t*\29 3910:hb_blob_t*\20hb_sanitize_context_t::sanitize_blob\28hb_blob_t*\29 3911:hb_blob_t*\20hb_sanitize_context_t::sanitize_blob\28hb_blob_t*\29 3912:hb_blob_t*\20hb_sanitize_context_t::sanitize_blob\28hb_blob_t*\29 3913:hb_blob_t*\20hb_sanitize_context_t::sanitize_blob\28hb_blob_t*\29 3914:hb_blob_t*\20hb_sanitize_context_t::sanitize_blob\28hb_blob_t*\29 3915:hb_aat_layout_remove_deleted_glyphs\28hb_buffer_t*\29 3916:hair_cubic\28SkPoint\20const*\2c\20SkRegion\20const*\2c\20SkBlitter*\2c\20void\20\28*\29\28SkPoint\20const*\2c\20int\2c\20SkRegion\20const*\2c\20SkBlitter*\29\29 3917:getint 3918:get_win_string 3919:get_layer_mapping_and_bounds\28SkSpan>\2c\20SkMatrix\20const&\2c\20skif::DeviceSpace\20const&\2c\20std::__2::optional>\2c\20bool\2c\20float\29 3920:get_dst_swizzle_and_store\28GrColorType\2c\20SkRasterPipelineOp*\2c\20LumMode*\2c\20bool*\2c\20bool*\29 3921:get_driver_and_version\28GrGLStandard\2c\20GrGLVendor\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\29 3922:get_cicp_trfn\28skcms_TransferFunction\20const&\29 3923:get_cicp_primaries\28skcms_Matrix3x3\20const&\29 3924:gen_key\28skgpu::KeyBuilder*\2c\20GrProgramInfo\20const&\2c\20GrCaps\20const&\29 3925:gen_fp_key\28GrFragmentProcessor\20const&\2c\20GrCaps\20const&\2c\20skgpu::KeyBuilder*\29 3926:gather_uniforms_and_check_for_main\28SkSL::Program\20const&\2c\20std::__2::vector>*\2c\20std::__2::vector>*\2c\20SkRuntimeEffect::Uniform::Flags\2c\20unsigned\20long*\29 3927:fwrite 3928:ft_var_to_normalized 3929:ft_var_load_item_variation_store 3930:ft_var_load_hvvar 3931:ft_var_load_avar 3932:ft_var_get_value_pointer 3933:ft_var_apply_tuple 3934:ft_validator_init 3935:ft_mem_strcpyn 3936:ft_hash_num_lookup 3937:ft_glyphslot_set_bitmap 3938:ft_glyphslot_preset_bitmap 3939:ft_corner_orientation 3940:ft_corner_is_flat 3941:frexp 3942:fread 3943:fp_force_eval 3944:fp_barrier.1 3945:fopen 3946:fold_opacity_layer_color_to_paint\28SkPaint\20const*\2c\20bool\2c\20SkPaint*\29 3947:fmodl 3948:float\20std::__2::__num_get_float\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\29 3949:fill_shadow_rec\28SkPath\20const&\2c\20SkPoint3\20const&\2c\20SkPoint3\20const&\2c\20float\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkDrawShadowRec*\29 3950:fill_inverse_cmap 3951:fileno 3952:examine_app0 3953:emscripten::internal::MethodInvoker::invoke\28void\20\28SkCanvas::*\20const&\29\28SkPath\20const&\2c\20SkClipOp\2c\20bool\29\2c\20SkCanvas*\2c\20SkPath*\2c\20SkClipOp\2c\20bool\29 3954:emscripten::internal::Invoker\2c\20sk_sp\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28sk_sp\2c\20sk_sp\29\2c\20sk_sp*\2c\20sk_sp*\29 3955:emscripten::internal::Invoker\2c\20SkBlendMode\2c\20sk_sp\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28SkBlendMode\2c\20sk_sp\2c\20sk_sp\29\2c\20SkBlendMode\2c\20sk_sp*\2c\20sk_sp*\29 3956:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20unsigned\20long\2c\20int\29\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\29 3957:emscripten::internal::Invoker\2c\20SkBlendMode>::invoke\28sk_sp\20\28*\29\28SkBlendMode\29\2c\20SkBlendMode\29 3958:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\29\2c\20SkPath*\2c\20float\2c\20float\2c\20float\2c\20float\29 3959:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkPath&\2c\20float\2c\20float\29\2c\20SkPath*\2c\20float\2c\20float\29 3960:emscripten::internal::FunctionInvoker\29\2c\20void\2c\20SkPaint&\2c\20unsigned\20long\2c\20sk_sp>::invoke\28void\20\28**\29\28SkPaint&\2c\20unsigned\20long\2c\20sk_sp\29\2c\20SkPaint*\2c\20unsigned\20long\2c\20sk_sp*\29 3961:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkCanvas&\2c\20skia::textlayout::Paragraph*\2c\20float\2c\20float\29\2c\20SkCanvas*\2c\20skia::textlayout::Paragraph*\2c\20float\2c\20float\29 3962:emscripten::internal::FunctionInvoker\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20SkBlendMode\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29\2c\20void\2c\20SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20SkBlendMode\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*>::invoke\28void\20\28**\29\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20SkBlendMode\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29\2c\20SkCanvas*\2c\20sk_sp*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20SkBlendMode\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29 3963:emscripten::internal::FunctionInvoker\20const&\2c\20float\2c\20float\2c\20SkPaint\20const*\29\2c\20void\2c\20SkCanvas&\2c\20sk_sp\20const&\2c\20float\2c\20float\2c\20SkPaint\20const*>::invoke\28void\20\28**\29\28SkCanvas&\2c\20sk_sp\20const&\2c\20float\2c\20float\2c\20SkPaint\20const*\29\2c\20SkCanvas*\2c\20sk_sp*\2c\20float\2c\20float\2c\20SkPaint\20const*\29 3964:emscripten::internal::FunctionInvoker\20\28*\29\28SkCanvas&\2c\20SimpleImageInfo\29\2c\20sk_sp\2c\20SkCanvas&\2c\20SimpleImageInfo>::invoke\28sk_sp\20\28**\29\28SkCanvas&\2c\20SimpleImageInfo\29\2c\20SkCanvas*\2c\20SimpleImageInfo*\29 3965:emscripten::internal::FunctionInvoker\20\28*\29\28sk_sp\29\2c\20sk_sp\2c\20sk_sp>::invoke\28sk_sp\20\28**\29\28sk_sp\29\2c\20sk_sp*\29 3966:emscripten::internal::FunctionInvoker::invoke\28bool\20\28**\29\28SkPath&\2c\20SkPath\20const&\2c\20SkPathOp\29\2c\20SkPath*\2c\20SkPath*\2c\20SkPathOp\29 3967:embind_init_builtin\28\29 3968:embind_init_Skia\28\29 3969:embind_init_Paragraph\28\29::$_0::__invoke\28SimpleParagraphStyle\2c\20sk_sp\29 3970:embind_init_Paragraph\28\29 3971:embind_init_ParagraphGen\28\29 3972:edge_line_needs_recursion\28SkPoint\20const&\2c\20SkPoint\20const&\29 3973:draw_nine\28SkMask\20const&\2c\20SkIRect\20const&\2c\20SkIPoint\20const&\2c\20bool\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 3974:dquad_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 3975:dquad_intersect_ray\28SkDCurve\20const&\2c\20SkDLine\20const&\2c\20SkIntersections*\29 3976:double\20std::__2::__num_get_float\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\29 3977:dline_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 3978:dline_intersect_ray\28SkDCurve\20const&\2c\20SkDLine\20const&\2c\20SkIntersections*\29 3979:deserialize_image\28sk_sp\2c\20SkDeserialProcs\2c\20std::__2::optional\29 3980:deflate_stored 3981:decompose_current_character\28hb_ot_shape_normalize_context_t\20const*\2c\20bool\29 3982:decltype\28std::__2::__unwrap_iter_impl\2c\20true>::__unwrap\28std::declval>\28\29\29\29\20std::__2::__unwrap_iter\5babi:v160004\5d\2c\20std::__2::__unwrap_iter_impl\2c\20true>\2c\200>\28std::__2::__wrap_iter\29 3983:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::Make\28SkArenaAlloc*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 3984:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28bool&\2c\20skgpu::tess::PatchAttribs&\29::'lambda'\28void*\29>\28skgpu::ganesh::PathCurveTessellator&&\29::'lambda'\28char*\29::__invoke\28char*\29 3985:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\2c\20SkFilterMode\2c\20bool\29::'lambda'\28void*\29>\28skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::Make\28SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20sk_sp\2c\20SkFilterMode\2c\20bool\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 3986:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::MeshGP::Make\28SkArenaAlloc*\2c\20sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::MeshGP::Make\28SkArenaAlloc*\2c\20sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 3987:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::GaussPass::MakeMaker\28double\2c\20SkArenaAlloc*\29::Maker*\20SkArenaAlloc::make<\28anonymous\20namespace\29::GaussPass::MakeMaker\28double\2c\20SkArenaAlloc*\29::Maker\2c\20int&>\28int&\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::GaussPass::MakeMaker\28double\2c\20SkArenaAlloc*\29::Maker&&\29::'lambda'\28char*\29::__invoke\28char*\29 3988:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkShaderBase\20const&\2c\20bool\20const&\29::'lambda'\28void*\29>\28SkTransformShader&&\29::'lambda'\28char*\29::__invoke\28char*\29 3989:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkPixmap\20const&\2c\20SkPaint\20const&\29::'lambda'\28void*\29>\28SkA8_Blitter&&\29::'lambda'\28char*\29::__invoke\28char*\29 3990:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28skgpu::UniqueKey\20const&\2c\20GrSurfaceProxyView\20const&\29::'lambda'\28void*\29>\28GrThreadSafeCache::Entry&&\29::'lambda'\28char*\29::__invoke\28char*\29 3991:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28GrSurfaceProxy*&\2c\20skgpu::ScratchKey&&\2c\20GrResourceProvider*&\29::'lambda'\28void*\29>\28GrResourceAllocator::Register&&\29 3992:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\20const&\2c\20SkMatrix\20const&\2c\20GrCaps\20const&\2c\20SkMatrix\20const&\2c\20bool\2c\20unsigned\20char\29::'lambda'\28void*\29>\28GrQuadEffect::Make\28SkArenaAlloc*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20GrCaps\20const&\2c\20SkMatrix\20const&\2c\20bool\2c\20unsigned\20char\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 3993:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28GrPipeline::InitArgs&\2c\20GrProcessorSet&&\2c\20GrAppliedClip&&\29::'lambda'\28void*\29>\28GrPipeline&&\29::'lambda'\28char*\29::__invoke\28char*\29 3994:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28GrDistanceFieldA8TextGeoProc::Make\28SkArenaAlloc*\2c\20GrShaderCaps\20const&\2c\20GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\2c\20float\2c\20unsigned\20int\2c\20SkMatrix\20const&\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 3995:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\20const&\2c\20bool\2c\20sk_sp\2c\20GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\2c\20skgpu::MaskFormat\2c\20SkMatrix\20const&\2c\20bool\29::'lambda'\28void*\29>\28GrBitmapTextGeoProc::Make\28SkArenaAlloc*\2c\20GrShaderCaps\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20bool\2c\20sk_sp\2c\20GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\2c\20skgpu::MaskFormat\2c\20SkMatrix\20const&\2c\20bool\29::'lambda'\28void*\29&&\29 3996:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\20const&\2c\20SkMatrix\20const&\2c\20SkMatrix\20const&\2c\20bool\2c\20unsigned\20char\29::'lambda'\28void*\29>\28DefaultGeoProc::Make\28SkArenaAlloc*\2c\20unsigned\20int\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkMatrix\20const&\2c\20bool\2c\20unsigned\20char\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 3997:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\20const&\2c\20SkMatrix\20const&\2c\20SkMatrix\20const&\2c\20bool\2c\20unsigned\20char\29::'lambda'\28void*\29>\28DefaultGeoProc::Make\28SkArenaAlloc*\2c\20unsigned\20int\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkMatrix\20const&\2c\20bool\2c\20unsigned\20char\29::'lambda'\28void*\29&&\29 3998:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28CircleGeometryProcessor::Make\28SkArenaAlloc*\2c\20bool\2c\20bool\2c\20bool\2c\20bool\2c\20bool\2c\20bool\2c\20SkMatrix\20const&\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 3999:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul\2c\201ul>::__dispatch\5babi:v160004\5d>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__visitation::__variant::__value_visitor>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 4000:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul\2c\200ul>::__dispatch\5babi:v160004\5d\2c\20std::__2::unique_ptr>>>::__generic_construct\5babi:v160004\5d\2c\20std::__2::unique_ptr>>\2c\20\28std::__2::__variant_detail::_Trait\291>>\28std::__2::__variant_detail::__ctor\2c\20std::__2::unique_ptr>>>&\2c\20std::__2::__variant_detail::__move_constructor\2c\20std::__2::unique_ptr>>\2c\20\28std::__2::__variant_detail::_Trait\291>&&\29::'lambda'\28std::__2::__variant_detail::__move_constructor\2c\20std::__2::unique_ptr>>\2c\20\28std::__2::__variant_detail::_Trait\291>&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&&>\28std::__2::__variant_detail::__move_constructor\2c\20std::__2::unique_ptr>>\2c\20\28std::__2::__variant_detail::_Trait\291>\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&&\29 4001:dcubic_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 4002:dcubic_intersect_ray\28SkDCurve\20const&\2c\20SkDLine\20const&\2c\20SkIntersections*\29 4003:dconic_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 4004:dconic_intersect_ray\28SkDCurve\20const&\2c\20SkDLine\20const&\2c\20SkIntersections*\29 4005:data_destroy_arabic\28void*\29 4006:data_create_arabic\28hb_ot_shape_plan_t\20const*\29 4007:cycle 4008:cubic_intercept_v\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 4009:cubic_intercept_h\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 4010:create_colorindex 4011:copysignl 4012:copy_bitmap_subset\28SkBitmap\20const&\2c\20SkIRect\20const&\29 4013:conic_intercept_v\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 4014:conic_intercept_h\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 4015:compute_pos_tan\28SkPoint\20const*\2c\20unsigned\20int\2c\20float\2c\20SkPoint*\2c\20SkPoint*\29 4016:compute_intersection\28OffsetSegment\20const&\2c\20OffsetSegment\20const&\2c\20SkPoint*\2c\20float*\2c\20float*\29 4017:compress_block 4018:compose_khmer\28hb_ot_shape_normalize_context_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\29 4019:clipHandlesSprite\28SkRasterClip\20const&\2c\20int\2c\20int\2c\20SkPixmap\20const&\29 4020:clamp\28SkPoint\2c\20SkPoint\2c\20SkPoint\2c\20GrTriangulator::Comparator\20const&\29 4021:checkint 4022:check_inverse_on_empty_return\28SkRegion*\2c\20SkPath\20const&\2c\20SkRegion\20const&\29 4023:char*\20std::__2::copy\5babi:v160004\5d\2c\20char*>\28std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\2c\20char*\29 4024:char*\20std::__2::copy\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20char*\29 4025:cff_vstore_done 4026:cff_subfont_load 4027:cff_subfont_done 4028:cff_size_select 4029:cff_parser_run 4030:cff_make_private_dict 4031:cff_load_private_dict 4032:cff_index_get_name 4033:cff_get_kerning 4034:cff_blend_build_vector 4035:cf2_getSeacComponent 4036:cf2_computeDarkening 4037:cf2_arrstack_push 4038:cbrt 4039:byn$mgfn-shared$void\20extend_pts<\28SkPaint::Cap\292>\28SkPath::Verb\2c\20SkPath::Verb\2c\20SkPoint*\2c\20int\29 4040:byn$mgfn-shared$void\20SkSwizzler::SkipLeadingGrayAlphaZerosThen<&fast_swizzle_grayalpha_to_n32_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 4041:byn$mgfn-shared$virtual\20thunk\20to\20GrRenderTarget::onRelease\28\29 4042:byn$mgfn-shared$ubidi_getClass_skia 4043:byn$mgfn-shared$t1_hints_open 4044:byn$mgfn-shared$std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\29\20const 4045:byn$mgfn-shared$std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\20long\29\20const 4046:byn$mgfn-shared$std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20long\29\20const 4047:byn$mgfn-shared$std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20long\20long\29\20const 4048:byn$mgfn-shared$std::__2::ctype::do_toupper\28wchar_t*\2c\20wchar_t\20const*\29\20const 4049:byn$mgfn-shared$std::__2::ctype::do_toupper\28char*\2c\20char\20const*\29\20const 4050:byn$mgfn-shared$std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::__clone\28std::__2::__function::__base*\29\20const 4051:byn$mgfn-shared$std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::__clone\28\29\20const 4052:byn$mgfn-shared$std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::__clone\28std::__2::__function::__base&\29>*\29\20const 4053:byn$mgfn-shared$std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::__clone\28\29\20const 4054:byn$mgfn-shared$skia_private::TArray::push_back_raw\28int\29 4055:byn$mgfn-shared$skia_private::TArray::push_back_raw\28int\29 4056:byn$mgfn-shared$skia_private::TArray::push_back_raw\28int\29 4057:byn$mgfn-shared$skgpu::ganesh::\28anonymous\20namespace\29::HullShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::~Impl\28\29 4058:byn$mgfn-shared$skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::makeProgramImpl\28GrShaderCaps\20const&\29\20const 4059:byn$mgfn-shared$skgpu::ScratchKey::GenerateResourceType\28\29 4060:byn$mgfn-shared$skcms_TransferFunction_isPQish 4061:byn$mgfn-shared$setup_masks_khmer\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 4062:byn$mgfn-shared$portable::store_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 4063:byn$mgfn-shared$portable::load_8888_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 4064:byn$mgfn-shared$portable::load_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 4065:byn$mgfn-shared$portable::gather_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 4066:byn$mgfn-shared$non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::~DirectMaskSubRun\28\29.1 4067:byn$mgfn-shared$non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::~DirectMaskSubRun\28\29 4068:byn$mgfn-shared$make_unpremul_effect\28std::__2::unique_ptr>\29 4069:byn$mgfn-shared$hb_outline_recording_pen_move_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20void*\29 4070:byn$mgfn-shared$hb_lazy_loader_t\2c\20hb_face_t\2c\204u\2c\20hb_blob_t>::get\28\29\20const 4071:byn$mgfn-shared$embind_init_Skia\28\29::$_75::__invoke\28float\2c\20float\2c\20float\2c\20float\2c\20unsigned\20long\2c\20sk_sp\29 4072:byn$mgfn-shared$embind_init_Skia\28\29::$_72::__invoke\28float\2c\20float\2c\20sk_sp\29 4073:byn$mgfn-shared$embind_init_Skia\28\29::$_11::__invoke\28SkCanvas&\2c\20unsigned\20long\29 4074:byn$mgfn-shared$decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make::Node*\20SkArenaAlloc::make::Node\2c\20std::__2::function&\29>\2c\20skgpu::AtlasToken>\28std::__2::function&\29>&&\2c\20skgpu::AtlasToken&&\29::'lambda'\28void*\29>\28SkArenaAllocList::Node&&\29::'lambda'\28char*\29::__invoke\28char*\29 4075:byn$mgfn-shared$decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul\2c\201ul>::__dispatch\5babi:v160004\5d>::__generic_assign\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&>\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\29::'lambda'\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 4076:byn$mgfn-shared$cf2_stack_pushInt 4077:byn$mgfn-shared$__cxx_global_array_dtor.1 4078:byn$mgfn-shared$\28anonymous\20namespace\29::SDFTSubRun::regenerateAtlas\28int\2c\20int\2c\20std::__2::function\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>\29\20const 4079:byn$mgfn-shared$\28anonymous\20namespace\29::DrawAtlasPathShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 4080:byn$mgfn-shared$\28anonymous\20namespace\29::DirectMaskSubRun::~DirectMaskSubRun\28\29.1 4081:byn$mgfn-shared$\28anonymous\20namespace\29::DirectMaskSubRun::~DirectMaskSubRun\28\29 4082:byn$mgfn-shared$\28anonymous\20namespace\29::DirectMaskSubRun::glyphCount\28\29\20const 4083:byn$mgfn-shared$\28anonymous\20namespace\29::DirectMaskSubRun::draw\28SkCanvas*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20std::__2::function\2c\20sktext::gpu::RendererData\29>\20const&\29\20const 4084:byn$mgfn-shared$SkSL::optimize_intrinsic_call\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::IntrinsicKind\2c\20SkSL::ExpressionArray\20const&\2c\20SkSL::Type\20const&\29::$_0::operator\28\29\28int\29\20const 4085:byn$mgfn-shared$SkSL::RP::UnownedLValueSlice::~UnownedLValueSlice\28\29 4086:byn$mgfn-shared$SkSL::RP::LValue::~LValue\28\29.1 4087:byn$mgfn-shared$SkSL::ProgramUsage::add\28SkSL::ProgramElement\20const&\29 4088:byn$mgfn-shared$SkSL::ProgramUsage::add\28SkSL::Expression\20const*\29 4089:byn$mgfn-shared$SkSL::FunctionReference::clone\28SkSL::Position\29\20const 4090:byn$mgfn-shared$SkSL::EmptyExpression::clone\28SkSL::Position\29\20const 4091:byn$mgfn-shared$SkSL::ChildCall::description\28SkSL::OperatorPrecedence\29\20const 4092:byn$mgfn-shared$SkSL::ChildCall::clone\28SkSL::Position\29\20const 4093:byn$mgfn-shared$SkRuntimeBlender::~SkRuntimeBlender\28\29.1 4094:byn$mgfn-shared$SkRuntimeBlender::~SkRuntimeBlender\28\29 4095:byn$mgfn-shared$SkRecorder::onDrawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 4096:byn$mgfn-shared$SkRecorder::onDrawPaint\28SkPaint\20const&\29 4097:byn$mgfn-shared$SkRecorder::didScale\28float\2c\20float\29 4098:byn$mgfn-shared$SkRecorder::didConcat44\28SkM44\20const&\29 4099:byn$mgfn-shared$SkRasterPipelineBlitter::blitAntiH2\28int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 4100:byn$mgfn-shared$SkPictureRecord::onDrawPaint\28SkPaint\20const&\29 4101:byn$mgfn-shared$SkPictureRecord::onDrawOval\28SkRect\20const&\2c\20SkPaint\20const&\29 4102:byn$mgfn-shared$SkPictureRecord::didConcat44\28SkM44\20const&\29 4103:byn$mgfn-shared$SkPairPathEffect::~SkPairPathEffect\28\29.1 4104:byn$mgfn-shared$SkKnownRuntimeEffects::\28anonymous\20namespace\29::make_blur_1D_effect\28int\2c\20SkRuntimeEffect::Options\20const&\29 4105:byn$mgfn-shared$SkJSONWriter::endArray\28\29 4106:byn$mgfn-shared$SkComposePathEffect::~SkComposePathEffect\28\29 4107:byn$mgfn-shared$SkColorSpace::MakeSRGB\28\29 4108:byn$mgfn-shared$SkChopMonoCubicAtY\28SkPoint\20const*\2c\20float\2c\20SkPoint*\29 4109:byn$mgfn-shared$OT::PaintLinearGradient::sanitize\28hb_sanitize_context_t*\29\20const 4110:byn$mgfn-shared$GrRRectShadowGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 4111:byn$mgfn-shared$GrPathTessellationShader::Impl::~Impl\28\29 4112:byn$mgfn-shared$GrMakeUniqueKeyInvalidationListener\28skgpu::UniqueKey*\2c\20unsigned\20int\29::Listener::~Listener\28\29.1 4113:byn$mgfn-shared$GrMakeUniqueKeyInvalidationListener\28skgpu::UniqueKey*\2c\20unsigned\20int\29::Listener::~Listener\28\29 4114:byn$mgfn-shared$GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29::ComposeProcessor::clone\28\29\20const 4115:byn$mgfn-shared$GrDistanceFieldA8TextGeoProc::~GrDistanceFieldA8TextGeoProc\28\29.1 4116:byn$mgfn-shared$GrDistanceFieldA8TextGeoProc::~GrDistanceFieldA8TextGeoProc\28\29 4117:byn$mgfn-shared$GrColorSpaceXformEffect::~GrColorSpaceXformEffect\28\29.1 4118:byn$mgfn-shared$GrColorSpaceXformEffect::~GrColorSpaceXformEffect\28\29 4119:byn$mgfn-shared$GrBicubicEffect::onMakeProgramImpl\28\29\20const 4120:byn$mgfn-shared$Cr_z_inflate_table 4121:byn$mgfn-shared$BlendFragmentProcessor::onMakeProgramImpl\28\29\20const 4122:byn$mgfn-shared$AAT::Lookup>::get_value\28unsigned\20int\2c\20unsigned\20int\29\20const 4123:build_ycc_rgb_table 4124:bracketProcessChar\28BracketData*\2c\20int\29 4125:bracketInit\28UBiDi*\2c\20BracketData*\29 4126:bool\20std::__2::operator==\5babi:v160004\5d\28std::__2::unique_ptr\20const&\2c\20std::nullptr_t\29 4127:bool\20std::__2::operator!=\5babi:v160004\5d\28std::__2::variant\20const&\2c\20std::__2::variant\20const&\29 4128:bool\20std::__2::__insertion_sort_incomplete\28skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::finish\28skia::textlayout::Block\20const&\2c\20float\2c\20float&\29::$_0&\29 4129:bool\20std::__2::__insertion_sort_incomplete<\28anonymous\20namespace\29::EntryComparator&\2c\20\28anonymous\20namespace\29::Entry*>\28\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::Entry*\2c\20\28anonymous\20namespace\29::EntryComparator&\29 4130:bool\20std::__2::__insertion_sort_incomplete\28SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::Transform::\28anonymous\20namespace\29::BuiltinVariableScanner::sortNewElements\28\29::'lambda'\28SkSL::ProgramElement\20const*\2c\20SkSL::ProgramElement\20const*\29&\29 4131:bool\20std::__2::__insertion_sort_incomplete\28SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::Transform::FindAndDeclareBuiltinFunctions\28SkSL::Program&\29::$_0&\29 4132:bool\20is_parallel\28SkDLine\20const&\2c\20SkTCurve\20const&\29 4133:bool\20hb_hashmap_t::set_with_hash\28hb_serialize_context_t::object_t*&\2c\20unsigned\20int\2c\20unsigned\20int&\2c\20bool\29 4134:bool\20apply_string\28OT::hb_ot_apply_context_t*\2c\20GSUBProxy::Lookup\20const&\2c\20OT::hb_ot_layout_lookup_accelerator_t\20const&\29 4135:bool\20OT::hb_accelerate_subtables_context_t::cache_func_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\2c\20bool\29 4136:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4137:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4138:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4139:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4140:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4141:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4142:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4143:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4144:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4145:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4146:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4147:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4148:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4149:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4150:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4151:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4152:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4153:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 4154:bool\20OT::OffsetTo\2c\20true>::serialize_serialize\2c\20hb_array_t>\2c\20$_7\20const&\2c\20\28hb_function_sortedness_t\291\2c\20\28void*\290>&>\28hb_serialize_context_t*\2c\20hb_map_iter_t\2c\20hb_array_t>\2c\20$_7\20const&\2c\20\28hb_function_sortedness_t\291\2c\20\28void*\290>&\29 4155:bool\20GrTTopoSort_Visit\28GrRenderTask*\2c\20unsigned\20int*\29 4156:blur_column\28void\20\28*\29\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29\2c\20skvx::Vec<8\2c\20unsigned\20short>\20\28*\29\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29\2c\20int\2c\20int\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20unsigned\20char\20const*\2c\20unsigned\20long\2c\20int\2c\20unsigned\20char*\2c\20unsigned\20long\29 4157:blit_saved_trapezoid\28SkAnalyticEdge*\2c\20int\2c\20int\2c\20int\2c\20AdditiveBlitter*\2c\20unsigned\20char*\2c\20bool\2c\20bool\2c\20int\2c\20int\29 4158:blend_line\28SkColorType\2c\20void*\2c\20SkColorType\2c\20void\20const*\2c\20SkAlphaType\2c\20bool\2c\20int\29 4159:bits_to_runs\28SkBlitter*\2c\20int\2c\20int\2c\20unsigned\20char\20const*\2c\20unsigned\20char\2c\20long\2c\20unsigned\20char\29 4160:barycentric_coords\28float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>*\2c\20skvx::Vec<4\2c\20float>*\2c\20skvx::Vec<4\2c\20float>*\29 4161:auto\20std::__2::__unwrap_range\5babi:v160004\5d\2c\20std::__2::__wrap_iter>\28std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\29 4162:atanf 4163:apply_forward\28OT::hb_ot_apply_context_t*\2c\20OT::hb_ot_layout_lookup_accelerator_t\20const&\2c\20unsigned\20int\29 4164:append_color_output\28PorterDuffXferProcessor\20const&\2c\20GrGLSLXPFragmentBuilder*\2c\20skgpu::BlendFormula::OutputType\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\29 4165:af_loader_compute_darkening 4166:af_latin_metrics_scale_dim 4167:af_latin_hints_detect_features 4168:af_latin_hint_edges 4169:af_hint_normal_stem 4170:af_cjk_metrics_scale_dim 4171:af_cjk_metrics_scale 4172:af_cjk_metrics_init_widths 4173:af_cjk_metrics_check_digits 4174:af_cjk_hints_init 4175:af_cjk_hints_detect_features 4176:af_cjk_hints_compute_blue_edges 4177:af_cjk_hints_apply 4178:af_cjk_hint_edges 4179:af_cjk_get_standard_widths 4180:af_axis_hints_new_edge 4181:adler32 4182:a_ctz_32 4183:_iup_worker_interpolate 4184:_hb_preprocess_text_vowel_constraints\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 4185:_hb_ot_shape 4186:_hb_options_init\28\29 4187:_hb_grapheme_group_func\28hb_glyph_info_t\20const&\2c\20hb_glyph_info_t\20const&\29 4188:_hb_font_create\28hb_face_t*\29 4189:_hb_fallback_shape 4190:_glyf_get_advance_with_var_unscaled\28hb_font_t*\2c\20unsigned\20int\2c\20bool\29 4191:__vfprintf_internal 4192:__trunctfsf2 4193:__tan 4194:__rem_pio2_large 4195:__overflow 4196:__newlocale 4197:__math_xflowf 4198:__math_invalidf 4199:__loc_is_allocated 4200:__isxdigit_l 4201:__getf2 4202:__get_locale 4203:__ftello_unlocked 4204:__fseeko_unlocked 4205:__floatscan 4206:__expo2 4207:__dynamic_cast 4208:__divtf3 4209:__cxxabiv1::__base_class_type_info::has_unambiguous_public_base\28__cxxabiv1::__dynamic_cast_info*\2c\20void*\2c\20int\29\20const 4210:\28anonymous\20namespace\29::set_uv_quad\28SkPoint\20const*\2c\20\28anonymous\20namespace\29::BezierVertex*\29 4211:\28anonymous\20namespace\29::safe_to_ignore_subset_rect\28GrAAType\2c\20SkFilterMode\2c\20DrawQuad\20const&\2c\20SkRect\20const&\29 4212:\28anonymous\20namespace\29::prepare_for_direct_mask_drawing\28SkStrike*\2c\20SkMatrix\20const&\2c\20SkZip\2c\20SkZip\2c\20SkZip\29 4213:\28anonymous\20namespace\29::morphology_pass\28skif::Context\20const&\2c\20skif::FilterResult\20const&\2c\20\28anonymous\20namespace\29::MorphType\2c\20\28anonymous\20namespace\29::MorphDirection\2c\20int\29 4214:\28anonymous\20namespace\29::make_non_convex_fill_op\28GrRecordingContext*\2c\20SkArenaAlloc*\2c\20skgpu::ganesh::FillPathFlags\2c\20GrAAType\2c\20SkRect\20const&\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\2c\20GrPaint&&\29 4215:\28anonymous\20namespace\29::is_newer_better\28SkData*\2c\20SkData*\29 4216:\28anonymous\20namespace\29::get_glyph_run_intercepts\28sktext::GlyphRun\20const&\2c\20SkPaint\20const&\2c\20float\20const*\2c\20float*\2c\20int*\29 4217:\28anonymous\20namespace\29::draw_to_sw_mask\28GrSWMaskHelper*\2c\20skgpu::ganesh::ClipStack::Element\20const&\2c\20bool\29 4218:\28anonymous\20namespace\29::determine_clipped_src_rect\28SkIRect\2c\20SkMatrix\20const&\2c\20SkMatrix\20const&\2c\20SkISize\20const&\2c\20SkRect\20const*\29 4219:\28anonymous\20namespace\29::create_hb_face\28SkTypeface\20const&\29::$_0::__invoke\28void*\29 4220:\28anonymous\20namespace\29::cpu_blur\28skif::Context\20const&\2c\20skif::LayerSpace\2c\20sk_sp\20const&\2c\20skif::LayerSpace\2c\20skif::LayerSpace\29::$_0::operator\28\29\28double\29\20const 4221:\28anonymous\20namespace\29::copyFTBitmap\28FT_Bitmap_\20const&\2c\20SkMaskBuilder*\29 4222:\28anonymous\20namespace\29::colrv1_start_glyph\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20unsigned\20short\2c\20FT_Color_Root_Transform_\2c\20skia_private::THashSet*\29 4223:\28anonymous\20namespace\29::colrv1_draw_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_COLR_Paint_\20const&\29 4224:\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29 4225:\28anonymous\20namespace\29::YUVPlanesRec::~YUVPlanesRec\28\29 4226:\28anonymous\20namespace\29::TriangulatingPathOp::~TriangulatingPathOp\28\29 4227:\28anonymous\20namespace\29::TriangulatingPathOp::TriangulatingPathOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20GrStyledShape\20const&\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20GrAAType\2c\20GrUserStencilSettings\20const*\29 4228:\28anonymous\20namespace\29::TriangulatingPathOp::Triangulate\28GrEagerVertexAllocator*\2c\20SkMatrix\20const&\2c\20GrStyledShape\20const&\2c\20SkIRect\20const&\2c\20float\2c\20bool*\29 4229:\28anonymous\20namespace\29::TriangulatingPathOp::CreateKey\28skgpu::UniqueKey*\2c\20GrStyledShape\20const&\2c\20SkIRect\20const&\29 4230:\28anonymous\20namespace\29::TransformedMaskSubRun::makeAtlasTextOp\28GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20skgpu::ganesh::SurfaceDrawContext*\29\20const 4231:\28anonymous\20namespace\29::TextureOpImpl::propagateCoverageAAThroughoutChain\28\29 4232:\28anonymous\20namespace\29::TextureOpImpl::characterize\28\28anonymous\20namespace\29::TextureOpImpl::Desc*\29\20const 4233:\28anonymous\20namespace\29::TextureOpImpl::appendQuad\28DrawQuad*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\29 4234:\28anonymous\20namespace\29::TextureOpImpl::Make\28GrRecordingContext*\2c\20GrTextureSetEntry*\2c\20int\2c\20int\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20skgpu::ganesh::TextureOp::Saturate\2c\20GrAAType\2c\20SkCanvas::SrcRectConstraint\2c\20SkMatrix\20const&\2c\20sk_sp\29 4235:\28anonymous\20namespace\29::TextureOpImpl::FillInVertices\28GrCaps\20const&\2c\20\28anonymous\20namespace\29::TextureOpImpl*\2c\20\28anonymous\20namespace\29::TextureOpImpl::Desc*\2c\20char*\29 4236:\28anonymous\20namespace\29::SpotVerticesFactory::makeVertices\28SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkPoint*\29\20const 4237:\28anonymous\20namespace\29::SkImageImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 4238:\28anonymous\20namespace\29::SDFTSubRun::makeAtlasTextOp\28GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20skgpu::ganesh::SurfaceDrawContext*\29\20const 4239:\28anonymous\20namespace\29::RunIteratorQueue::advanceRuns\28\29 4240:\28anonymous\20namespace\29::Pass::blur\28int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int*\2c\20int\29 4241:\28anonymous\20namespace\29::MipLevelHelper::allocAndInit\28SkArenaAlloc*\2c\20SkSamplingOptions\20const&\2c\20SkTileMode\2c\20SkTileMode\29 4242:\28anonymous\20namespace\29::MeshOp::~MeshOp\28\29 4243:\28anonymous\20namespace\29::MeshOp::MeshOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20sk_sp\2c\20GrPrimitiveType\20const*\2c\20GrAAType\2c\20sk_sp\2c\20SkMatrix\20const&\29 4244:\28anonymous\20namespace\29::MeshOp::MeshOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMesh\20const&\2c\20skia_private::TArray>\2c\20true>\2c\20GrAAType\2c\20sk_sp\2c\20SkMatrix\20const&\29 4245:\28anonymous\20namespace\29::MeshOp::Mesh::Mesh\28SkMesh\20const&\29 4246:\28anonymous\20namespace\29::MeshGP::~MeshGP\28\29 4247:\28anonymous\20namespace\29::MeshGP::Impl::~Impl\28\29 4248:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::defineStruct\28char\20const*\29 4249:\28anonymous\20namespace\29::FillRectOpImpl::tessellate\28skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20char*\29\20const 4250:\28anonymous\20namespace\29::FillRectOpImpl::Make\28GrRecordingContext*\2c\20GrPaint&&\2c\20GrAAType\2c\20DrawQuad*\2c\20GrUserStencilSettings\20const*\2c\20GrSimpleMeshDrawOpHelper::InputFlags\29 4251:\28anonymous\20namespace\29::FillRectOpImpl::FillRectOpImpl\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\2c\20GrAAType\2c\20DrawQuad*\2c\20GrUserStencilSettings\20const*\2c\20GrSimpleMeshDrawOpHelper::InputFlags\29 4252:\28anonymous\20namespace\29::EllipticalRRectEffect::Make\28std::__2::unique_ptr>\2c\20GrClipEdgeType\2c\20SkRRect\20const&\29 4253:\28anonymous\20namespace\29::DrawAtlasOpImpl::DrawAtlasOpImpl\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20GrAAType\2c\20int\2c\20SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\29 4254:\28anonymous\20namespace\29::DirectMaskSubRun::~DirectMaskSubRun\28\29.1 4255:\28anonymous\20namespace\29::DirectMaskSubRun::~DirectMaskSubRun\28\29 4256:\28anonymous\20namespace\29::DirectMaskSubRun::makeAtlasTextOp\28GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20skgpu::ganesh::SurfaceDrawContext*\29\20const 4257:\28anonymous\20namespace\29::DirectMaskSubRun::glyphCount\28\29\20const 4258:\28anonymous\20namespace\29::DefaultPathOp::programInfo\28\29 4259:\28anonymous\20namespace\29::DefaultPathOp::Make\28GrRecordingContext*\2c\20GrPaint&&\2c\20SkPath\20const&\2c\20float\2c\20unsigned\20char\2c\20SkMatrix\20const&\2c\20bool\2c\20GrAAType\2c\20SkRect\20const&\2c\20GrUserStencilSettings\20const*\29 4260:\28anonymous\20namespace\29::DefaultPathOp::DefaultPathOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkPath\20const&\2c\20float\2c\20unsigned\20char\2c\20SkMatrix\20const&\2c\20bool\2c\20GrAAType\2c\20SkRect\20const&\2c\20GrUserStencilSettings\20const*\29 4261:\28anonymous\20namespace\29::ClipGeometry\20\28anonymous\20namespace\29::get_clip_geometry\28skgpu::ganesh::ClipStack::SaveRecord\20const&\2c\20skgpu::ganesh::ClipStack::Draw\20const&\29 4262:\28anonymous\20namespace\29::CircularRRectEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 4263:\28anonymous\20namespace\29::CachedTessellations::~CachedTessellations\28\29 4264:\28anonymous\20namespace\29::CachedTessellations::CachedTessellations\28\29 4265:\28anonymous\20namespace\29::CacheImpl::~CacheImpl\28\29 4266:\28anonymous\20namespace\29::AAHairlineOp::AAHairlineOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20unsigned\20char\2c\20SkMatrix\20const&\2c\20SkPath\20const&\2c\20SkIRect\2c\20float\2c\20GrUserStencilSettings\20const*\29 4267:WebPResetDecParams 4268:WebPRescalerGetScaledDimensions 4269:WebPMultRows 4270:WebPMultARGBRows 4271:WebPIoInitFromOptions 4272:WebPInitUpsamplers 4273:WebPFlipBuffer 4274:WebPDemuxGetChunk 4275:WebPCopyDecBufferPixels 4276:WebPAllocateDecBuffer 4277:VP8RemapBitReader 4278:VP8LHuffmanTablesAllocate 4279:VP8LDspInit 4280:VP8LConvertFromBGRA 4281:VP8LColorCacheInit 4282:VP8LColorCacheCopy 4283:VP8LBuildHuffmanTable 4284:VP8LBitReaderSetBuffer 4285:VP8InitScanline 4286:VP8GetInfo 4287:VP8BitReaderSetBuffer 4288:Update_Max 4289:TransformOne_C 4290:TT_Set_Named_Instance 4291:TT_Hint_Glyph 4292:StoreFrame 4293:SortContourList\28SkOpContourHead**\2c\20bool\2c\20bool\29 4294:SkYUVAPixmapInfo::isSupported\28SkYUVAPixmapInfo::SupportedDataTypes\20const&\29\20const 4295:SkWuffsCodec::seekFrame\28int\29 4296:SkWuffsCodec::onStartIncrementalDecode\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\29 4297:SkWuffsCodec::onIncrementalDecodeTwoPass\28\29 4298:SkWuffsCodec::decodeFrameConfig\28\29 4299:SkWriter32::writeString\28char\20const*\2c\20unsigned\20long\29 4300:SkWriteICCProfile\28skcms_ICCProfile\20const*\2c\20char\20const*\29 4301:SkWebpDecoder::IsWebp\28void\20const*\2c\20unsigned\20long\29 4302:SkWebpCodec::MakeFromStream\28std::__2::unique_ptr>\2c\20SkCodec::Result*\29 4303:SkWbmpDecoder::IsWbmp\28void\20const*\2c\20unsigned\20long\29 4304:SkWbmpCodec::MakeFromStream\28std::__2::unique_ptr>\2c\20SkCodec::Result*\29 4305:SkWStream::SizeOfPackedUInt\28unsigned\20long\29 4306:SkWBuffer::padToAlign4\28\29 4307:SkVertices::Builder::indices\28\29 4308:SkUnicode::convertUtf16ToUtf8\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 4309:SkUTF::UTF16ToUTF8\28char*\2c\20int\2c\20unsigned\20short\20const*\2c\20unsigned\20long\29 4310:SkTypeface_FreeType::FaceRec::Make\28SkTypeface_FreeType\20const*\29 4311:SkTypeface_Custom::onGetFamilyName\28SkString*\29\20const 4312:SkTypeface::textToGlyphs\28void\20const*\2c\20unsigned\20long\2c\20SkTextEncoding\2c\20unsigned\20short*\2c\20int\29\20const 4313:SkTypeface::serialize\28SkWStream*\2c\20SkTypeface::SerializeBehavior\29\20const 4314:SkTypeface::openStream\28int*\29\20const 4315:SkTypeface::getFamilyName\28SkString*\29\20const 4316:SkTransformShader::update\28SkMatrix\20const&\29 4317:SkTransformShader::SkTransformShader\28SkShaderBase\20const&\2c\20bool\29 4318:SkTiffImageFileDirectory::getEntryTag\28unsigned\20short\29\20const 4319:SkTiffImageFileDirectory::getEntryRawData\28unsigned\20short\2c\20unsigned\20short*\2c\20unsigned\20short*\2c\20unsigned\20int*\2c\20unsigned\20char\20const**\2c\20unsigned\20long*\29\20const 4320:SkTiffImageFileDirectory::MakeFromOffset\28sk_sp\2c\20bool\2c\20unsigned\20int\29 4321:SkTextBlobBuilder::allocRunPos\28SkFont\20const&\2c\20int\2c\20SkRect\20const*\29 4322:SkTextBlob::getIntercepts\28float\20const*\2c\20float*\2c\20SkPaint\20const*\29\20const 4323:SkTextBlob::RunRecord::StorageSize\28unsigned\20int\2c\20unsigned\20int\2c\20SkTextBlob::GlyphPositioning\2c\20SkSafeMath*\29 4324:SkTextBlob::MakeFromText\28void\20const*\2c\20unsigned\20long\2c\20SkFont\20const&\2c\20SkTextEncoding\29 4325:SkTextBlob::MakeFromRSXform\28void\20const*\2c\20unsigned\20long\2c\20SkRSXform\20const*\2c\20SkFont\20const&\2c\20SkTextEncoding\29 4326:SkTextBlob::Iter::experimentalNext\28SkTextBlob::Iter::ExperimentalRun*\29 4327:SkTextBlob::Iter::Iter\28SkTextBlob\20const&\29 4328:SkTaskGroup::wait\28\29 4329:SkTaskGroup::add\28std::__2::function\29 4330:SkTSpan::onlyEndPointsInCommon\28SkTSpan\20const*\2c\20bool*\2c\20bool*\2c\20bool*\29 4331:SkTSpan::linearIntersects\28SkTCurve\20const&\29\20const 4332:SkTSect::removeAllBut\28SkTSpan\20const*\2c\20SkTSpan*\2c\20SkTSect*\29 4333:SkTSect::intersects\28SkTSpan*\2c\20SkTSect*\2c\20SkTSpan*\2c\20int*\29 4334:SkTSect::deleteEmptySpans\28\29 4335:SkTSect::addSplitAt\28SkTSpan*\2c\20double\29 4336:SkTSect::addForPerp\28SkTSpan*\2c\20double\29 4337:SkTSect::EndsEqual\28SkTSect\20const*\2c\20SkTSect\20const*\2c\20SkIntersections*\29 4338:SkTMultiMap::~SkTMultiMap\28\29 4339:SkTDynamicHash<\28anonymous\20namespace\29::CacheImpl::Value\2c\20SkImageFilterCacheKey\2c\20\28anonymous\20namespace\29::CacheImpl::Value>::find\28SkImageFilterCacheKey\20const&\29\20const 4340:SkTDStorage::calculateSizeOrDie\28int\29::$_1::operator\28\29\28\29\20const 4341:SkTDStorage::SkTDStorage\28SkTDStorage&&\29 4342:SkTCubic::hullIntersects\28SkDQuad\20const&\2c\20bool*\29\20const 4343:SkTConic::otherPts\28int\2c\20SkDPoint\20const**\29\20const 4344:SkTConic::hullIntersects\28SkDCubic\20const&\2c\20bool*\29\20const 4345:SkTConic::controlsInside\28\29\20const 4346:SkTConic::collapsed\28\29\20const 4347:SkTBlockList::reset\28\29 4348:SkTBlockList::reset\28\29 4349:SkTBlockList::push_back\28GrGLProgramDataManager::GLUniformInfo\20const&\29 4350:SkSwizzler::MakeSimple\28int\2c\20SkImageInfo\20const&\2c\20SkCodec::Options\20const&\29 4351:SkSurfaces::WrapPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkSurfaceProps\20const*\29 4352:SkSurface_Base::outstandingImageSnapshot\28\29\20const 4353:SkSurface_Base::onDraw\28SkCanvas*\2c\20float\2c\20float\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\29 4354:SkSurface_Base::onCapabilities\28\29 4355:SkStrokeRec::setHairlineStyle\28\29 4356:SkStrokeRec::SkStrokeRec\28SkPaint\20const&\2c\20SkPaint::Style\2c\20float\29 4357:SkStrokeRec::GetInflationRadius\28SkPaint::Join\2c\20float\2c\20SkPaint::Cap\2c\20float\29 4358:SkString::insertHex\28unsigned\20long\2c\20unsigned\20int\2c\20int\29 4359:SkString::appendVAList\28char\20const*\2c\20void*\29 4360:SkString::SkString\28std::__2::basic_string_view>\29 4361:SkStrikeSpec::SkStrikeSpec\28SkStrikeSpec\20const&\29 4362:SkStrikeSpec::ShouldDrawAsPath\28SkPaint\20const&\2c\20SkFont\20const&\2c\20SkMatrix\20const&\29 4363:SkStrSplit\28char\20const*\2c\20char\20const*\2c\20SkStrSplitMode\2c\20skia_private::TArray*\29 4364:SkStrAppendS32\28char*\2c\20int\29 4365:SkSpriteBlitter_Memcpy::~SkSpriteBlitter_Memcpy\28\29 4366:SkSpecialImages::MakeFromRaster\28SkIRect\20const&\2c\20sk_sp\2c\20SkSurfaceProps\20const&\29 4367:SkSpecialImages::AsBitmap\28SkSpecialImage\20const*\2c\20SkBitmap*\29 4368:SkSharedMutex::releaseShared\28\29 4369:SkShapers::unicode::BidiRunIterator\28sk_sp\2c\20char\20const*\2c\20unsigned\20long\2c\20unsigned\20char\29 4370:SkShapers::HB::ScriptRunIterator\28char\20const*\2c\20unsigned\20long\29 4371:SkShaper::MakeStdLanguageRunIterator\28char\20const*\2c\20unsigned\20long\29 4372:SkShaders::MatrixRec::concat\28SkMatrix\20const&\29\20const 4373:SkShaders::Blend\28sk_sp\2c\20sk_sp\2c\20sk_sp\29 4374:SkShaderUtils::VisitLineByLine\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::function\20const&\29 4375:SkShaderUtils::PrettyPrint\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 4376:SkShaderUtils::GLSLPrettyPrint::parseUntil\28char\20const*\29 4377:SkShaderBase::getFlattenableType\28\29\20const 4378:SkShader::makeWithLocalMatrix\28SkMatrix\20const&\29\20const 4379:SkShader::makeWithColorFilter\28sk_sp\29\20const 4380:SkScan::PathRequiresTiling\28SkIRect\20const&\29 4381:SkScan::HairLine\28SkPoint\20const*\2c\20int\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 4382:SkScan::AntiFrameRect\28SkRect\20const&\2c\20SkPoint\20const&\2c\20SkRegion\20const*\2c\20SkBlitter*\29 4383:SkScan::AntiFillXRect\28SkIRect\20const&\2c\20SkRegion\20const*\2c\20SkBlitter*\29 4384:SkScan::AntiFillRect\28SkRect\20const&\2c\20SkRegion\20const*\2c\20SkBlitter*\29 4385:SkScan::AAAFillPath\28SkPath\20const&\2c\20SkBlitter*\2c\20SkIRect\20const&\2c\20SkIRect\20const&\2c\20bool\29 4386:SkScalerContext_FreeType::updateGlyphBoundsIfSubpixel\28SkGlyph\20const&\2c\20SkRect*\2c\20bool\29 4387:SkScalerContext_FreeType::shouldSubpixelBitmap\28SkGlyph\20const&\2c\20SkMatrix\20const&\29 4388:SkScalerContextRec::getSingleMatrix\28SkMatrix*\29\20const 4389:SkScalerContextFTUtils::drawCOLRv1Glyph\28FT_FaceRec_*\2c\20SkGlyph\20const&\2c\20unsigned\20int\2c\20SkSpan\2c\20SkCanvas*\29\20const 4390:SkScalerContextFTUtils::drawCOLRv0Glyph\28FT_FaceRec_*\2c\20SkGlyph\20const&\2c\20unsigned\20int\2c\20SkSpan\2c\20SkCanvas*\29\20const 4391:SkScalerContext::internalMakeGlyph\28SkPackedGlyphID\2c\20SkMask::Format\2c\20SkArenaAlloc*\29 4392:SkScalerContext::internalGetPath\28SkGlyph&\2c\20SkArenaAlloc*\29 4393:SkScalerContext::getFontMetrics\28SkFontMetrics*\29 4394:SkScalerContext::SkScalerContext\28sk_sp\2c\20SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29 4395:SkScalerContext::PreprocessRec\28SkTypeface\20const&\2c\20SkScalerContextEffects\20const&\2c\20SkDescriptor\20const&\29 4396:SkScalerContext::MakeRecAndEffects\28SkFont\20const&\2c\20SkPaint\20const&\2c\20SkSurfaceProps\20const&\2c\20SkScalerContextFlags\2c\20SkMatrix\20const&\2c\20SkScalerContextRec*\2c\20SkScalerContextEffects*\29 4397:SkScalerContext::MakeEmpty\28sk_sp\2c\20SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29 4398:SkScalerContext::GetMaskPreBlend\28SkScalerContextRec\20const&\29 4399:SkScalerContext::AutoDescriptorGivenRecAndEffects\28SkScalerContextRec\20const&\2c\20SkScalerContextEffects\20const&\2c\20SkAutoDescriptor*\29 4400:SkSampledCodec::sampledDecode\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkAndroidCodec::AndroidOptions\20const&\29 4401:SkSampledCodec::accountForNativeScaling\28int*\2c\20int*\29\20const 4402:SkSampledCodec::SkSampledCodec\28SkCodec*\29 4403:SkSL::zero_expression\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\29 4404:SkSL::type_to_sksltype\28SkSL::Context\20const&\2c\20SkSL::Type\20const&\2c\20SkSLType*\29 4405:SkSL::stoi\28std::__2::basic_string_view>\2c\20long\20long*\29 4406:SkSL::splat_scalar\28SkSL::Context\20const&\2c\20SkSL::Expression\20const&\2c\20SkSL::Type\20const&\29 4407:SkSL::optimize_intrinsic_call\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::IntrinsicKind\2c\20SkSL::ExpressionArray\20const&\2c\20SkSL::Type\20const&\29::$_2::operator\28\29\28int\29\20const 4408:SkSL::optimize_intrinsic_call\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::IntrinsicKind\2c\20SkSL::ExpressionArray\20const&\2c\20SkSL::Type\20const&\29::$_1::operator\28\29\28int\29\20const 4409:SkSL::optimize_intrinsic_call\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::IntrinsicKind\2c\20SkSL::ExpressionArray\20const&\2c\20SkSL::Type\20const&\29::$_0::operator\28\29\28int\29\20const 4410:SkSL::negate_expression\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Type\20const&\29 4411:SkSL::make_reciprocal_expression\28SkSL::Context\20const&\2c\20SkSL::Expression\20const&\29 4412:SkSL::index_out_of_range\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20long\20long\2c\20SkSL::Expression\20const&\29 4413:SkSL::get_struct_definitions_from_module\28SkSL::Program&\2c\20SkSL::Module\20const&\2c\20std::__2::vector>*\29 4414:SkSL::find_existing_declaration\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ModifierFlags\2c\20SkSL::IntrinsicKind\2c\20std::__2::basic_string_view>\2c\20skia_private::TArray>\2c\20true>&\2c\20SkSL::Position\2c\20SkSL::Type\20const*\2c\20SkSL::FunctionDeclaration**\29::$_0::operator\28\29\28\29\20const 4415:SkSL::extract_matrix\28SkSL::Expression\20const*\2c\20float*\29 4416:SkSL::eliminate_unreachable_code\28SkSpan>>\2c\20SkSL::ProgramUsage*\29::UnreachableCodeEliminator::visitStatementPtr\28std::__2::unique_ptr>&\29 4417:SkSL::check_main_signature\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20skia_private::TArray>\2c\20true>&\29::$_4::operator\28\29\28int\29\20const 4418:SkSL::\28anonymous\20namespace\29::check_valid_uniform_type\28SkSL::Position\2c\20SkSL::Type\20const*\2c\20SkSL::Context\20const&\2c\20bool\29::$_0::operator\28\29\28\29\20const 4419:SkSL::\28anonymous\20namespace\29::ProgramUsageVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 4420:SkSL::\28anonymous\20namespace\29::ProgramUsageVisitor::visitExpression\28SkSL::Expression\20const&\29 4421:SkSL::\28anonymous\20namespace\29::FinalizationVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 4422:SkSL::VariableReference::setRefKind\28SkSL::VariableRefKind\29 4423:SkSL::Variable::setVarDeclaration\28SkSL::VarDeclaration*\29 4424:SkSL::Variable::setGlobalVarDeclaration\28SkSL::GlobalVarDeclaration*\29 4425:SkSL::Variable::globalVarDeclaration\28\29\20const 4426:SkSL::Variable::Make\28SkSL::Position\2c\20SkSL::Position\2c\20SkSL::Layout\20const&\2c\20SkSL::ModifierFlags\2c\20SkSL::Type\20const*\2c\20std::__2::basic_string_view>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20bool\2c\20SkSL::VariableStorage\29 4427:SkSL::Variable::MakeScratchVariable\28SkSL::Context\20const&\2c\20SkSL::Mangler&\2c\20std::__2::basic_string_view>\2c\20SkSL::Type\20const*\2c\20SkSL::SymbolTable*\2c\20std::__2::unique_ptr>\29 4428:SkSL::VarDeclaration::Make\28SkSL::Context\20const&\2c\20SkSL::Variable*\2c\20SkSL::Type\20const*\2c\20int\2c\20std::__2::unique_ptr>\29 4429:SkSL::VarDeclaration::ErrorCheck\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Position\2c\20SkSL::Layout\20const&\2c\20SkSL::ModifierFlags\2c\20SkSL::Type\20const*\2c\20SkSL::Type\20const*\2c\20SkSL::VariableStorage\29 4430:SkSL::TypeReference::description\28SkSL::OperatorPrecedence\29\20const 4431:SkSL::TypeReference::VerifyType\28SkSL::Context\20const&\2c\20SkSL::Type\20const*\2c\20SkSL::Position\29 4432:SkSL::TypeReference::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const*\29 4433:SkSL::Type::MakeStructType\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::basic_string_view>\2c\20skia_private::TArray\2c\20bool\29 4434:SkSL::Type::MakeLiteralType\28char\20const*\2c\20SkSL::Type\20const&\2c\20signed\20char\29 4435:SkSL::Transform::\28anonymous\20namespace\29::BuiltinVariableScanner::addDeclaringElement\28SkSL::ProgramElement\20const*\29 4436:SkSL::ToGLSL\28SkSL::Program&\2c\20SkSL::ShaderCaps\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>*\29 4437:SkSL::TernaryExpression::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 4438:SkSL::SymbolTable::insertNewParent\28\29 4439:SkSL::SymbolTable::addWithoutOwnership\28SkSL::Symbol*\29 4440:SkSL::Swizzle::MaskString\28skia_private::STArray<4\2c\20signed\20char\2c\20true>\20const&\29 4441:SkSL::SwitchStatement::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 4442:SkSL::SwitchCase::Make\28SkSL::Position\2c\20long\20long\2c\20std::__2::unique_ptr>\29 4443:SkSL::SwitchCase::MakeDefault\28SkSL::Position\2c\20std::__2::unique_ptr>\29 4444:SkSL::StructType::StructType\28SkSL::Position\2c\20std::__2::basic_string_view>\2c\20skia_private::TArray\2c\20int\2c\20bool\2c\20bool\29 4445:SkSL::String::vappendf\28std::__2::basic_string\2c\20std::__2::allocator>*\2c\20char\20const*\2c\20void*\29 4446:SkSL::SingleArgumentConstructor::argumentSpan\28\29 4447:SkSL::RP::stack_usage\28SkSL::RP::Instruction\20const&\29 4448:SkSL::RP::UnownedLValueSlice::isWritable\28\29\20const 4449:SkSL::RP::UnownedLValueSlice::dynamicSlotRange\28\29 4450:SkSL::RP::ScratchLValue::~ScratchLValue\28\29 4451:SkSL::RP::Program::~Program\28\29 4452:SkSL::RP::LValue::swizzle\28\29 4453:SkSL::RP::Generator::writeVarDeclaration\28SkSL::VarDeclaration\20const&\29 4454:SkSL::RP::Generator::writeFunction\28SkSL::IRNode\20const&\2c\20SkSL::FunctionDefinition\20const&\2c\20SkSpan>\20const>\29 4455:SkSL::RP::Generator::storeImmutableValueToSlots\28skia_private::TArray\20const&\2c\20SkSL::RP::SlotRange\29 4456:SkSL::RP::Generator::pushVariableReferencePartial\28SkSL::VariableReference\20const&\2c\20SkSL::RP::SlotRange\29 4457:SkSL::RP::Generator::pushPrefixExpression\28SkSL::Operator\2c\20SkSL::Expression\20const&\29 4458:SkSL::RP::Generator::pushIntrinsic\28SkSL::IntrinsicKind\2c\20SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\29 4459:SkSL::RP::Generator::pushImmutableData\28SkSL::Expression\20const&\29 4460:SkSL::RP::Generator::pushAbsFloatIntrinsic\28int\29 4461:SkSL::RP::Generator::getImmutableValueForExpression\28SkSL::Expression\20const&\2c\20skia_private::TArray*\29 4462:SkSL::RP::Generator::foldWithMultiOp\28SkSL::RP::BuilderOp\2c\20int\29 4463:SkSL::RP::Generator::findPreexistingImmutableData\28skia_private::TArray\20const&\29 4464:SkSL::RP::Builder::push_slots_or_immutable_indirect\28SkSL::RP::SlotRange\2c\20int\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::BuilderOp\29 4465:SkSL::RP::Builder::push_condition_mask\28\29 4466:SkSL::RP::Builder::copy_stack_to_slots\28SkSL::RP::SlotRange\2c\20int\29 4467:SkSL::RP::Builder::branch_if_any_lanes_active\28int\29 4468:SkSL::ProgramVisitor::visit\28SkSL::Program\20const&\29 4469:SkSL::ProgramUsage::remove\28SkSL::Expression\20const*\29 4470:SkSL::ProgramUsage::add\28SkSL::Statement\20const*\29 4471:SkSL::ProgramUsage::add\28SkSL::Expression\20const*\29 4472:SkSL::Pool::attachToThread\28\29 4473:SkSL::PipelineStage::PipelineStageCodeGenerator::functionName\28SkSL::FunctionDeclaration\20const&\29 4474:SkSL::PipelineStage::PipelineStageCodeGenerator::functionDeclaration\28SkSL::FunctionDeclaration\20const&\29 4475:SkSL::Parser::~Parser\28\29 4476:SkSL::Parser::varDeclarations\28\29 4477:SkSL::Parser::varDeclarationsOrExpressionStatement\28\29 4478:SkSL::Parser::switchCaseBody\28SkSL::ExpressionArray*\2c\20skia_private::STArray<2\2c\20std::__2::unique_ptr>\2c\20true>*\2c\20std::__2::unique_ptr>\29 4479:SkSL::Parser::statementOrNop\28SkSL::Position\2c\20std::__2::unique_ptr>\29 4480:SkSL::Parser::shiftExpression\28\29 4481:SkSL::Parser::relationalExpression\28\29 4482:SkSL::Parser::parameter\28std::__2::unique_ptr>*\29 4483:SkSL::Parser::multiplicativeExpression\28\29 4484:SkSL::Parser::logicalXorExpression\28\29 4485:SkSL::Parser::logicalAndExpression\28\29 4486:SkSL::Parser::localVarDeclarationEnd\28SkSL::Position\2c\20SkSL::Modifiers\20const&\2c\20SkSL::Type\20const*\2c\20SkSL::Token\29 4487:SkSL::Parser::intLiteral\28long\20long*\29 4488:SkSL::Parser::globalVarDeclarationEnd\28SkSL::Position\2c\20SkSL::Modifiers\20const&\2c\20SkSL::Type\20const*\2c\20SkSL::Token\29 4489:SkSL::Parser::equalityExpression\28\29 4490:SkSL::Parser::directive\28bool\29 4491:SkSL::Parser::declarations\28\29 4492:SkSL::Parser::checkNext\28SkSL::Token::Kind\2c\20SkSL::Token*\29 4493:SkSL::Parser::bitwiseXorExpression\28\29 4494:SkSL::Parser::bitwiseOrExpression\28\29 4495:SkSL::Parser::bitwiseAndExpression\28\29 4496:SkSL::Parser::additiveExpression\28\29 4497:SkSL::Parser::Parser\28SkSL::Compiler*\2c\20SkSL::ProgramSettings\20const&\2c\20SkSL::ProgramKind\2c\20std::__2::unique_ptr\2c\20std::__2::allocator>\2c\20std::__2::default_delete\2c\20std::__2::allocator>>>\29 4498:SkSL::MultiArgumentConstructor::argumentSpan\28\29 4499:SkSL::ModuleLoader::~ModuleLoader\28\29 4500:SkSL::ModuleLoader::loadVertexModule\28SkSL::Compiler*\29 4501:SkSL::ModuleLoader::loadSharedModule\28SkSL::Compiler*\29 4502:SkSL::ModuleLoader::loadPublicModule\28SkSL::Compiler*\29 4503:SkSL::ModuleLoader::loadGraphiteVertexModule\28SkSL::Compiler*\29 4504:SkSL::ModuleLoader::loadGraphiteFragmentModule\28SkSL::Compiler*\29 4505:SkSL::ModuleLoader::loadFragmentModule\28SkSL::Compiler*\29 4506:SkSL::ModuleLoader::Get\28\29 4507:SkSL::MethodReference::~MethodReference\28\29.1 4508:SkSL::MethodReference::~MethodReference\28\29 4509:SkSL::MatrixType::bitWidth\28\29\20const 4510:SkSL::MakeRasterPipelineProgram\28SkSL::Program\20const&\2c\20SkSL::FunctionDefinition\20const&\2c\20SkSL::DebugTracePriv*\2c\20bool\29 4511:SkSL::Layout::description\28\29\20const 4512:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_matrixCompMult\28double\2c\20double\2c\20double\29 4513:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_length\28std::__2::array\20const&\29 4514:SkSL::InterfaceBlock::~InterfaceBlock\28\29 4515:SkSL::Inliner::candidateCanBeInlined\28SkSL::InlineCandidate\20const&\2c\20SkSL::ProgramUsage\20const&\2c\20skia_private::THashMap*\29 4516:SkSL::IfStatement::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 4517:SkSL::GLSLCodeGenerator::writeVarDeclaration\28SkSL::VarDeclaration\20const&\2c\20bool\29 4518:SkSL::GLSLCodeGenerator::writeProgramElement\28SkSL::ProgramElement\20const&\29 4519:SkSL::GLSLCodeGenerator::writeMinAbsHack\28SkSL::Expression&\2c\20SkSL::Expression&\29 4520:SkSL::GLSLCodeGenerator::generateCode\28\29 4521:SkSL::FunctionDefinition::~FunctionDefinition\28\29.1 4522:SkSL::FunctionDefinition::~FunctionDefinition\28\29 4523:SkSL::FunctionDefinition::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::FunctionDeclaration\20const&\2c\20std::__2::unique_ptr>\2c\20bool\29::Finalizer::visitStatementPtr\28std::__2::unique_ptr>&\29 4524:SkSL::FunctionDefinition::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::FunctionDeclaration\20const&\2c\20std::__2::unique_ptr>\2c\20bool\29::Finalizer::addLocalVariable\28SkSL::Variable\20const*\2c\20SkSL::Position\29 4525:SkSL::FunctionDeclaration::~FunctionDeclaration\28\29.1 4526:SkSL::FunctionDeclaration::~FunctionDeclaration\28\29 4527:SkSL::FunctionDeclaration::mangledName\28\29\20const 4528:SkSL::FunctionDeclaration::determineFinalTypes\28SkSL::ExpressionArray\20const&\2c\20skia_private::STArray<8\2c\20SkSL::Type\20const*\2c\20true>*\2c\20SkSL::Type\20const**\29\20const 4529:SkSL::FunctionDeclaration::FunctionDeclaration\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ModifierFlags\2c\20std::__2::basic_string_view>\2c\20skia_private::TArray\2c\20SkSL::Type\20const*\2c\20SkSL::IntrinsicKind\29 4530:SkSL::FunctionCall::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const*\2c\20SkSL::FunctionDeclaration\20const&\2c\20SkSL::ExpressionArray\29 4531:SkSL::FunctionCall::FindBestFunctionForCall\28SkSL::Context\20const&\2c\20SkSL::FunctionDeclaration\20const*\2c\20SkSL::ExpressionArray\20const&\29 4532:SkSL::FunctionCall::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::FunctionDeclaration\20const&\2c\20SkSL::ExpressionArray\29 4533:SkSL::ForStatement::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ForLoopPositions\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 4534:SkSL::FindIntrinsicKind\28std::__2::basic_string_view>\29 4535:SkSL::FieldAccess::~FieldAccess\28\29.1 4536:SkSL::FieldAccess::~FieldAccess\28\29 4537:SkSL::ExpressionStatement::Convert\28SkSL::Context\20const&\2c\20std::__2::unique_ptr>\29 4538:SkSL::DoStatement::~DoStatement\28\29.1 4539:SkSL::DoStatement::~DoStatement\28\29 4540:SkSL::DebugTracePriv::setSource\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 4541:SkSL::ConstructorScalarCast::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray\29 4542:SkSL::ConstructorMatrixResize::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>\29 4543:SkSL::Constructor::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray\29 4544:SkSL::ConstantFolder::Simplify\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\2c\20SkSL::Type\20const&\29 4545:SkSL::Compiler::writeErrorCount\28\29 4546:SkSL::Compiler::initializeContext\28SkSL::Module\20const*\2c\20SkSL::ProgramKind\2c\20SkSL::ProgramSettings\2c\20std::__2::basic_string_view>\2c\20bool\29 4547:SkSL::Compiler::cleanupContext\28\29 4548:SkSL::ChildCall::~ChildCall\28\29.1 4549:SkSL::ChildCall::~ChildCall\28\29 4550:SkSL::ChildCall::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const*\2c\20SkSL::Variable\20const&\2c\20SkSL::ExpressionArray\29 4551:SkSL::BinaryExpression::isAssignmentIntoVariable\28\29 4552:SkSL::BinaryExpression::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20SkSL::Operator\2c\20std::__2::unique_ptr>\2c\20SkSL::Type\20const*\29 4553:SkSL::Analysis::\28anonymous\20namespace\29::LoopControlFlowVisitor::visitStatement\28SkSL::Statement\20const&\29 4554:SkSL::Analysis::IsDynamicallyUniformExpression\28SkSL::Expression\20const&\29 4555:SkSL::Analysis::IsConstantExpression\28SkSL::Expression\20const&\29 4556:SkSL::Analysis::IsAssignable\28SkSL::Expression&\2c\20SkSL::Analysis::AssignmentInfo*\2c\20SkSL::ErrorReporter*\29 4557:SkSL::Analysis::GetLoopUnrollInfo\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ForLoopPositions\20const&\2c\20SkSL::Statement\20const*\2c\20std::__2::unique_ptr>*\2c\20SkSL::Expression\20const*\2c\20SkSL::Statement\20const*\2c\20SkSL::ErrorReporter*\29 4558:SkSL::Analysis::GetLoopControlFlowInfo\28SkSL::Statement\20const&\29 4559:SkSL::AliasType::numberKind\28\29\20const 4560:SkSL::AliasType::isAllowedInES2\28\29\20const 4561:SkRuntimeShader::~SkRuntimeShader\28\29 4562:SkRuntimeEffectPriv::WriteChildEffects\28SkWriteBuffer&\2c\20SkSpan\29 4563:SkRuntimeEffectPriv::TransformUniforms\28SkSpan\2c\20sk_sp\2c\20SkColorSpaceXformSteps\20const&\29 4564:SkRuntimeEffect::~SkRuntimeEffect\28\29 4565:SkRuntimeEffect::makeShader\28sk_sp\2c\20sk_sp*\2c\20unsigned\20long\2c\20SkMatrix\20const*\29\20const 4566:SkRuntimeEffect::makeColorFilter\28sk_sp\2c\20SkSpan\29\20const 4567:SkRuntimeEffect::TracedShader*\20emscripten::internal::raw_constructor\28\29 4568:SkRuntimeEffect::MakeInternal\28std::__2::unique_ptr>\2c\20SkRuntimeEffect::Options\20const&\2c\20SkSL::ProgramKind\29 4569:SkRuntimeEffect::ChildPtr&\20skia_private::TArray::emplace_back&>\28sk_sp&\29 4570:SkRuntimeBlender::flatten\28SkWriteBuffer&\29\20const 4571:SkRgnBuilder::~SkRgnBuilder\28\29 4572:SkResourceCache::PostPurgeSharedID\28unsigned\20long\20long\29 4573:SkResourceCache::GetDiscardableFactory\28\29 4574:SkRescaleAndReadPixels\28SkBitmap\2c\20SkImageInfo\20const&\2c\20SkIRect\20const&\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29 4575:SkRegion::Spanerator::Spanerator\28SkRegion\20const&\2c\20int\2c\20int\2c\20int\29 4576:SkRegion::Oper\28SkRegion\20const&\2c\20SkRegion\20const&\2c\20SkRegion::Op\2c\20SkRegion*\29 4577:SkRefCntSet::~SkRefCntSet\28\29 4578:SkRefCntBase::internal_dispose\28\29\20const 4579:SkReduceOrder::reduce\28SkDQuad\20const&\29 4580:SkReduceOrder::Conic\28SkConic\20const&\2c\20SkPoint*\29 4581:SkRectClipBlitter::requestRowsPreserved\28\29\20const 4582:SkRectClipBlitter::allocBlitMemory\28unsigned\20long\29 4583:SkRect::intersect\28SkRect\20const&\2c\20SkRect\20const&\29 4584:SkRecords::TypedMatrix::TypedMatrix\28SkMatrix\20const&\29 4585:SkRecords::FillBounds::popSaveBlock\28\29 4586:SkRecordOptimize\28SkRecord*\29 4587:SkRecordFillBounds\28SkRect\20const&\2c\20SkRecord\20const&\2c\20SkRect*\2c\20SkBBoxHierarchy::Metadata*\29 4588:SkRecord::bytesUsed\28\29\20const 4589:SkReadPixelsRec::trim\28int\2c\20int\29 4590:SkReadBuffer::readString\28unsigned\20long*\29 4591:SkReadBuffer::readRegion\28SkRegion*\29 4592:SkReadBuffer::readRect\28\29 4593:SkReadBuffer::readPoint3\28SkPoint3*\29 4594:SkReadBuffer::readPad32\28void*\2c\20unsigned\20long\29 4595:SkRasterPipeline_<256ul>::SkRasterPipeline_\28\29 4596:SkRasterPipeline::appendSetRGB\28SkArenaAlloc*\2c\20float\20const*\29 4597:SkRasterClipStack::SkRasterClipStack\28int\2c\20int\29 4598:SkRTreeFactory::operator\28\29\28\29\20const 4599:SkRTree::search\28SkRTree::Node*\2c\20SkRect\20const&\2c\20std::__2::vector>*\29\20const 4600:SkRTree::bulkLoad\28std::__2::vector>*\2c\20int\29 4601:SkRTree::allocateNodeAtLevel\28unsigned\20short\29 4602:SkRSXform::toQuad\28float\2c\20float\2c\20SkPoint*\29\20const 4603:SkRRect::isValid\28\29\20const 4604:SkRRect::computeType\28\29 4605:SkRGBA4f<\28SkAlphaType\292>\20skgpu::Swizzle::applyTo<\28SkAlphaType\292>\28SkRGBA4f<\28SkAlphaType\292>\29\20const 4606:SkRBuffer::skipToAlign4\28\29 4607:SkQuads::EvalAt\28double\2c\20double\2c\20double\2c\20double\29 4608:SkQuadraticEdge::setQuadraticWithoutUpdate\28SkPoint\20const*\2c\20int\29 4609:SkPtrSet::reset\28\29 4610:SkPtrSet::copyToArray\28void**\29\20const 4611:SkPtrSet::add\28void*\29 4612:SkPoint::Normalize\28SkPoint*\29 4613:SkPngEncoder::Make\28SkWStream*\2c\20SkPixmap\20const&\2c\20SkPngEncoder::Options\20const&\29 4614:SkPngEncoder::Encode\28GrDirectContext*\2c\20SkImage\20const*\2c\20SkPngEncoder::Options\20const&\29 4615:SkPngCodec::initializeXforms\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\29 4616:SkPngCodec::initializeSwizzler\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\2c\20bool\29 4617:SkPngCodec::allocateStorage\28SkImageInfo\20const&\29 4618:SkPixmapUtils::Orient\28SkPixmap\20const&\2c\20SkPixmap\20const&\2c\20SkEncodedOrigin\29 4619:SkPixmap::erase\28unsigned\20int\2c\20SkIRect\20const&\29\20const 4620:SkPixmap::erase\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkIRect\20const*\29\20const 4621:SkPixelRef::getGenerationID\28\29\20const 4622:SkPixelRef::addGenIDChangeListener\28sk_sp\29 4623:SkPixelRef::SkPixelRef\28int\2c\20int\2c\20void*\2c\20unsigned\20long\29 4624:SkPictureShader::CachedImageInfo::makeImage\28sk_sp\2c\20SkPicture\20const*\29\20const 4625:SkPictureShader::CachedImageInfo::Make\28SkRect\20const&\2c\20SkMatrix\20const&\2c\20SkColorType\2c\20SkColorSpace*\2c\20int\2c\20SkSurfaceProps\20const&\29 4626:SkPictureRecord::endRecording\28\29 4627:SkPictureRecord::beginRecording\28\29 4628:SkPicturePriv::Flatten\28sk_sp\2c\20SkWriteBuffer&\29 4629:SkPicturePlayback::draw\28SkCanvas*\2c\20SkPicture::AbortCallback*\2c\20SkReadBuffer*\29 4630:SkPictureData::parseBufferTag\28SkReadBuffer&\2c\20unsigned\20int\2c\20unsigned\20int\29 4631:SkPictureData::getPicture\28SkReadBuffer*\29\20const 4632:SkPictureData::getDrawable\28SkReadBuffer*\29\20const 4633:SkPictureData::flatten\28SkWriteBuffer&\29\20const 4634:SkPictureData::flattenToBuffer\28SkWriteBuffer&\2c\20bool\29\20const 4635:SkPictureData::SkPictureData\28SkPictureRecord\20const&\2c\20SkPictInfo\20const&\29 4636:SkPicture::backport\28\29\20const 4637:SkPicture::SkPicture\28\29 4638:SkPicture::MakeFromStreamPriv\28SkStream*\2c\20SkDeserialProcs\20const*\2c\20SkTypefacePlayback*\2c\20int\29 4639:SkPerlinNoiseShader::getPaintingData\28\29\20const 4640:SkPathWriter::assemble\28\29 4641:SkPathWriter::SkPathWriter\28SkPath&\29 4642:SkPathRef::resetToSize\28int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\29 4643:SkPathPriv::IsNestedFillRects\28SkPath\20const&\2c\20SkRect*\2c\20SkPathDirection*\29 4644:SkPathPriv::CreateDrawArcPath\28SkPath*\2c\20SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20bool\29 4645:SkPathEffectBase::PointData::~PointData\28\29 4646:SkPathEffect::filterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29\20const 4647:SkPathBuilder::addOval\28SkRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\29 4648:SkPath::writeToMemoryAsRRect\28void*\29\20const 4649:SkPath::setLastPt\28float\2c\20float\29 4650:SkPath::reverseAddPath\28SkPath\20const&\29 4651:SkPath::readFromMemory\28void\20const*\2c\20unsigned\20long\29 4652:SkPath::offset\28float\2c\20float\2c\20SkPath*\29\20const 4653:SkPath::isZeroLengthSincePoint\28int\29\20const 4654:SkPath::isRRect\28SkRRect*\29\20const 4655:SkPath::isOval\28SkRect*\29\20const 4656:SkPath::conservativelyContainsRect\28SkRect\20const&\29\20const 4657:SkPath::computeConvexity\28\29\20const 4658:SkPath::addPath\28SkPath\20const&\2c\20float\2c\20float\2c\20SkPath::AddPathMode\29 4659:SkPath::Polygon\28SkPoint\20const*\2c\20int\2c\20bool\2c\20SkPathFillType\2c\20bool\29 4660:SkPath2DPathEffect::Make\28SkMatrix\20const&\2c\20SkPath\20const&\29 4661:SkPath1DPathEffect::Make\28SkPath\20const&\2c\20float\2c\20float\2c\20SkPath1DPathEffect::Style\29 4662:SkParseEncodedOrigin\28void\20const*\2c\20unsigned\20long\2c\20SkEncodedOrigin*\29 4663:SkPaintPriv::ShouldDither\28SkPaint\20const&\2c\20SkColorType\29 4664:SkPaintPriv::Overwrites\28SkPaint\20const*\2c\20SkPaintPriv::ShaderOverrideOpacity\29 4665:SkPaint::setStroke\28bool\29 4666:SkPaint::reset\28\29 4667:SkPaint::refColorFilter\28\29\20const 4668:SkOpSpanBase::merge\28SkOpSpan*\29 4669:SkOpSpanBase::globalState\28\29\20const 4670:SkOpSpan::sortableTop\28SkOpContour*\29 4671:SkOpSpan::release\28SkOpPtT\20const*\29 4672:SkOpSpan::insertCoincidence\28SkOpSegment\20const*\2c\20bool\2c\20bool\29 4673:SkOpSpan::init\28SkOpSegment*\2c\20SkOpSpan*\2c\20double\2c\20SkPoint\20const&\29 4674:SkOpSegment::updateWindingReverse\28SkOpAngle\20const*\29 4675:SkOpSegment::oppXor\28\29\20const 4676:SkOpSegment::moveMultiples\28\29 4677:SkOpSegment::isXor\28\29\20const 4678:SkOpSegment::findNextWinding\28SkTDArray*\2c\20SkOpSpanBase**\2c\20SkOpSpanBase**\2c\20bool*\29 4679:SkOpSegment::findNextOp\28SkTDArray*\2c\20SkOpSpanBase**\2c\20SkOpSpanBase**\2c\20bool*\2c\20bool*\2c\20SkPathOp\2c\20int\2c\20int\29 4680:SkOpSegment::computeSum\28SkOpSpanBase*\2c\20SkOpSpanBase*\2c\20SkOpAngle::IncludeType\29 4681:SkOpSegment::collapsed\28double\2c\20double\29\20const 4682:SkOpSegment::addExpanded\28double\2c\20SkOpSpanBase\20const*\2c\20bool*\29 4683:SkOpSegment::activeAngle\28SkOpSpanBase*\2c\20SkOpSpanBase**\2c\20SkOpSpanBase**\2c\20bool*\29 4684:SkOpSegment::UseInnerWinding\28int\2c\20int\29 4685:SkOpPtT::ptAlreadySeen\28SkOpPtT\20const*\29\20const 4686:SkOpPtT::contains\28SkOpSegment\20const*\2c\20double\29\20const 4687:SkOpGlobalState::SkOpGlobalState\28SkOpContourHead*\2c\20SkArenaAlloc*\29 4688:SkOpEdgeBuilder::preFetch\28\29 4689:SkOpEdgeBuilder::init\28\29 4690:SkOpEdgeBuilder::finish\28\29 4691:SkOpContourBuilder::addConic\28SkPoint*\2c\20float\29 4692:SkOpContour::addQuad\28SkPoint*\29 4693:SkOpContour::addCubic\28SkPoint*\29 4694:SkOpContour::addConic\28SkPoint*\2c\20float\29 4695:SkOpCoincidence::release\28SkOpSegment\20const*\29 4696:SkOpCoincidence::mark\28\29 4697:SkOpCoincidence::markCollapsed\28SkCoincidentSpans*\2c\20SkOpPtT*\29 4698:SkOpCoincidence::fixUp\28SkCoincidentSpans*\2c\20SkOpPtT*\2c\20SkOpPtT\20const*\29 4699:SkOpCoincidence::contains\28SkCoincidentSpans\20const*\2c\20SkOpSegment\20const*\2c\20SkOpSegment\20const*\2c\20double\29\20const 4700:SkOpCoincidence::checkOverlap\28SkCoincidentSpans*\2c\20SkOpSegment\20const*\2c\20SkOpSegment\20const*\2c\20double\2c\20double\2c\20double\2c\20double\2c\20SkTDArray*\29\20const 4701:SkOpCoincidence::addOrOverlap\28SkOpSegment*\2c\20SkOpSegment*\2c\20double\2c\20double\2c\20double\2c\20double\2c\20bool*\29 4702:SkOpAngle::tangentsDiverge\28SkOpAngle\20const*\2c\20double\29 4703:SkOpAngle::setSpans\28\29 4704:SkOpAngle::setSector\28\29 4705:SkOpAngle::previous\28\29\20const 4706:SkOpAngle::midToSide\28SkOpAngle\20const*\2c\20bool*\29\20const 4707:SkOpAngle::loopCount\28\29\20const 4708:SkOpAngle::loopContains\28SkOpAngle\20const*\29\20const 4709:SkOpAngle::lastMarked\28\29\20const 4710:SkOpAngle::endToSide\28SkOpAngle\20const*\2c\20bool*\29\20const 4711:SkOpAngle::alignmentSameSide\28SkOpAngle\20const*\2c\20int*\29\20const 4712:SkOpAngle::after\28SkOpAngle*\29 4713:SkOffsetSimplePolygon\28SkPoint\20const*\2c\20int\2c\20SkRect\20const&\2c\20float\2c\20SkTDArray*\2c\20SkTDArray*\29 4714:SkNoDrawCanvas::onDrawEdgeAAImageSet2\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 4715:SkNoDrawCanvas::onDrawArc\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 4716:SkMipmapBuilder::countLevels\28\29\20const 4717:SkMeshPriv::CpuBuffer::~CpuBuffer\28\29.1 4718:SkMeshPriv::CpuBuffer::~CpuBuffer\28\29 4719:SkMeshPriv::CpuBuffer::size\28\29\20const 4720:SkMeshPriv::CpuBuffer::peek\28\29\20const 4721:SkMeshPriv::CpuBuffer::onUpdate\28GrDirectContext*\2c\20void\20const*\2c\20unsigned\20long\2c\20unsigned\20long\29 4722:SkMatrix::setRotate\28float\2c\20float\2c\20float\29 4723:SkMatrix::mapRectScaleTranslate\28SkRect*\2c\20SkRect\20const&\29\20const 4724:SkMatrix::isFinite\28\29\20const 4725:SkMatrix::Translate\28float\2c\20float\29 4726:SkMatrix::Translate\28SkIPoint\29 4727:SkMatrix::RotTrans_xy\28SkMatrix\20const&\2c\20float\2c\20float\2c\20SkPoint*\29 4728:SkMaskSwizzler::swizzle\28void*\2c\20unsigned\20char\20const*\29 4729:SkMaskFilterBase::NinePatch::~NinePatch\28\29 4730:SkMask::computeTotalImageSize\28\29\20const 4731:SkMakeResourceCacheSharedIDForBitmap\28unsigned\20int\29 4732:SkMD5::finish\28\29 4733:SkMD5::SkMD5\28\29 4734:SkMD5::Digest::toHexString\28\29\20const 4735:SkM44::preTranslate\28float\2c\20float\2c\20float\29 4736:SkM44::postTranslate\28float\2c\20float\2c\20float\29 4737:SkLocalMatrixShader::type\28\29\20const 4738:SkLinearColorSpaceLuminance::toLuma\28float\2c\20float\29\20const 4739:SkLineParameters::cubicEndPoints\28SkDCubic\20const&\29 4740:SkLatticeIter::SkLatticeIter\28SkCanvas::Lattice\20const&\2c\20SkRect\20const&\29 4741:SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::~SkLRUCache\28\29 4742:SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::reset\28\29 4743:SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::insert\28GrProgramDesc\20const&\2c\20std::__2::unique_ptr>\29 4744:SkJpegDecoder::IsJpeg\28void\20const*\2c\20unsigned\20long\29 4745:SkJpegCodec::readRows\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20int\2c\20SkCodec::Options\20const&\29 4746:SkJpegCodec::initializeSwizzler\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\2c\20bool\29 4747:SkIsSimplePolygon\28SkPoint\20const*\2c\20int\29 4748:SkIsConvexPolygon\28SkPoint\20const*\2c\20int\29 4749:SkInvert4x4Matrix\28float\20const*\2c\20float*\29 4750:SkInvert3x3Matrix\28float\20const*\2c\20float*\29 4751:SkInvert2x2Matrix\28float\20const*\2c\20float*\29 4752:SkIntersections::vertical\28SkDQuad\20const&\2c\20double\2c\20double\2c\20double\2c\20bool\29 4753:SkIntersections::vertical\28SkDLine\20const&\2c\20double\2c\20double\2c\20double\2c\20bool\29 4754:SkIntersections::vertical\28SkDCubic\20const&\2c\20double\2c\20double\2c\20double\2c\20bool\29 4755:SkIntersections::vertical\28SkDConic\20const&\2c\20double\2c\20double\2c\20double\2c\20bool\29 4756:SkIntersections::mostOutside\28double\2c\20double\2c\20SkDPoint\20const&\29\20const 4757:SkIntersections::intersect\28SkDQuad\20const&\2c\20SkDLine\20const&\29 4758:SkIntersections::intersect\28SkDCubic\20const&\2c\20SkDQuad\20const&\29 4759:SkIntersections::intersect\28SkDCubic\20const&\2c\20SkDLine\20const&\29 4760:SkIntersections::intersect\28SkDCubic\20const&\2c\20SkDConic\20const&\29 4761:SkIntersections::intersect\28SkDConic\20const&\2c\20SkDQuad\20const&\29 4762:SkIntersections::intersect\28SkDConic\20const&\2c\20SkDLine\20const&\29 4763:SkIntersections::insertCoincident\28double\2c\20double\2c\20SkDPoint\20const&\29 4764:SkIntersections::horizontal\28SkDQuad\20const&\2c\20double\2c\20double\2c\20double\2c\20bool\29 4765:SkIntersections::horizontal\28SkDLine\20const&\2c\20double\2c\20double\2c\20double\2c\20bool\29 4766:SkIntersections::horizontal\28SkDCubic\20const&\2c\20double\2c\20double\2c\20double\2c\20bool\29 4767:SkIntersections::horizontal\28SkDConic\20const&\2c\20double\2c\20double\2c\20double\2c\20bool\29 4768:SkImages::RasterFromPixmap\28SkPixmap\20const&\2c\20void\20\28*\29\28void\20const*\2c\20void*\29\2c\20void*\29 4769:SkImages::RasterFromData\28SkImageInfo\20const&\2c\20sk_sp\2c\20unsigned\20long\29 4770:SkImages::DeferredFromGenerator\28std::__2::unique_ptr>\29 4771:SkImage_Lazy::~SkImage_Lazy\28\29.1 4772:SkImage_GaneshBase::onMakeSubset\28GrDirectContext*\2c\20SkIRect\20const&\29\20const 4773:SkImage_Base::onAsyncRescaleAndReadPixelsYUV420\28SkYUVColorSpace\2c\20bool\2c\20sk_sp\2c\20SkIRect\2c\20SkISize\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29\20const 4774:SkImage_Base::onAsLegacyBitmap\28GrDirectContext*\2c\20SkBitmap*\29\20const 4775:SkImageShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const::$_1::operator\28\29\28\28anonymous\20namespace\29::MipLevelHelper\20const*\29\20const 4776:SkImageInfo::validRowBytes\28unsigned\20long\29\20const 4777:SkImageInfo::MakeN32Premul\28int\2c\20int\29 4778:SkImageGenerator::~SkImageGenerator\28\29.1 4779:SkImageFilters::ColorFilter\28sk_sp\2c\20sk_sp\2c\20SkImageFilters::CropRect\20const&\29 4780:SkImageFilter_Base::getCTMCapability\28\29\20const 4781:SkImageFilter_Base::filterImage\28skif::Context\20const&\29\20const 4782:SkImageFilterCache::Get\28\29 4783:SkImageFilter::computeFastBounds\28SkRect\20const&\29\20const 4784:SkImage::withMipmaps\28sk_sp\29\20const 4785:SkImage::peekPixels\28SkPixmap*\29\20const 4786:SkImage::height\28\29\20const 4787:SkIcoDecoder::IsIco\28void\20const*\2c\20unsigned\20long\29 4788:SkIcoCodec::MakeFromStream\28std::__2::unique_ptr>\2c\20SkCodec::Result*\29 4789:SkGradientBaseShader::~SkGradientBaseShader\28\29 4790:SkGradientBaseShader::AppendGradientFillStages\28SkRasterPipeline*\2c\20SkArenaAlloc*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const*\2c\20float\20const*\2c\20int\29 4791:SkGlyphRunListPainterCPU::SkGlyphRunListPainterCPU\28SkSurfaceProps\20const&\2c\20SkColorType\2c\20SkColorSpace*\29 4792:SkGlyph::setImage\28SkArenaAlloc*\2c\20SkScalerContext*\29 4793:SkGlyph::setDrawable\28SkArenaAlloc*\2c\20SkScalerContext*\29 4794:SkGlyph::pathIsHairline\28\29\20const 4795:SkGlyph::mask\28SkPoint\29\20const 4796:SkGlyph::SkGlyph\28SkGlyph&&\29 4797:SkGifDecoder::MakeFromStream\28std::__2::unique_ptr>\2c\20SkCodec::SelectionPolicy\2c\20SkCodec::Result*\29 4798:SkGifDecoder::IsGif\28void\20const*\2c\20unsigned\20long\29 4799:SkGenerateDistanceFieldFromA8Image\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20unsigned\20long\29 4800:SkGaussFilter::SkGaussFilter\28double\29 4801:SkFrameHolder::setAlphaAndRequiredFrame\28SkFrame*\29 4802:SkFrame::fillIn\28SkCodec::FrameInfo*\2c\20bool\29\20const 4803:SkFontStyleSet_Custom::appendTypeface\28sk_sp\29 4804:SkFontStyleSet_Custom::SkFontStyleSet_Custom\28SkString\29 4805:SkFontScanner_FreeType::scanInstance\28SkStreamAsset*\2c\20int\2c\20int\2c\20SkString*\2c\20SkFontStyle*\2c\20bool*\2c\20skia_private::STArray<4\2c\20SkFontScanner::AxisDefinition\2c\20true>*\29\20const 4806:SkFontScanner_FreeType::SkFontScanner_FreeType\28\29 4807:SkFontPriv::GetFontBounds\28SkFont\20const&\29 4808:SkFontMgr::makeFromStream\28std::__2::unique_ptr>\2c\20int\29\20const 4809:SkFontMgr::makeFromStream\28std::__2::unique_ptr>\2c\20SkFontArguments\20const&\29\20const 4810:SkFontMgr::legacyMakeTypeface\28char\20const*\2c\20SkFontStyle\29\20const 4811:SkFontDescriptor::SkFontDescriptor\28\29 4812:SkFont::setupForAsPaths\28SkPaint*\29 4813:SkFont::setSkewX\28float\29 4814:SkFont::setLinearMetrics\28bool\29 4815:SkFont::setEmbolden\28bool\29 4816:SkFont::operator==\28SkFont\20const&\29\20const 4817:SkFont::getPaths\28unsigned\20short\20const*\2c\20int\2c\20void\20\28*\29\28SkPath\20const*\2c\20SkMatrix\20const&\2c\20void*\29\2c\20void*\29\20const 4818:SkFlattenable::RegisterFlattenablesIfNeeded\28\29 4819:SkFlattenable::PrivateInitializer::InitEffects\28\29 4820:SkFlattenable::NameToFactory\28char\20const*\29 4821:SkFlattenable::FactoryToName\28sk_sp\20\28*\29\28SkReadBuffer&\29\29 4822:SkFindQuadExtrema\28float\2c\20float\2c\20float\2c\20float*\29 4823:SkFindCubicExtrema\28float\2c\20float\2c\20float\2c\20float\2c\20float*\29 4824:SkFactorySet::~SkFactorySet\28\29 4825:SkExifMetadata::parseIfd\28unsigned\20int\2c\20bool\2c\20bool\29 4826:SkEncoder::encodeRows\28int\29 4827:SkEdgeClipper::clipQuad\28SkPoint\20const*\2c\20SkRect\20const&\29 4828:SkEdgeClipper::ClipPath\28SkPath\20const&\2c\20SkRect\20const&\2c\20bool\2c\20void\20\28*\29\28SkEdgeClipper*\2c\20bool\2c\20void*\29\2c\20void*\29 4829:SkEdgeBuilder::buildEdges\28SkPath\20const&\2c\20SkIRect\20const*\29 4830:SkDynamicMemoryWStream::bytesWritten\28\29\20const 4831:SkDrawableList::newDrawableSnapshot\28\29 4832:SkDrawTreatAAStrokeAsHairline\28float\2c\20SkMatrix\20const&\2c\20float*\29 4833:SkDrawShadowMetrics::GetSpotShadowTransform\28SkPoint3\20const&\2c\20float\2c\20SkMatrix\20const&\2c\20SkPoint3\20const&\2c\20SkRect\20const&\2c\20bool\2c\20SkMatrix*\2c\20float*\29 4834:SkDrawShadowMetrics::GetLocalBounds\28SkPath\20const&\2c\20SkDrawShadowRec\20const&\2c\20SkMatrix\20const&\2c\20SkRect*\29 4835:SkDrawBase::drawPaint\28SkPaint\20const&\29\20const 4836:SkDrawBase::DrawToMask\28SkPath\20const&\2c\20SkIRect\20const&\2c\20SkMaskFilter\20const*\2c\20SkMatrix\20const*\2c\20SkMaskBuilder*\2c\20SkMaskBuilder::CreateMode\2c\20SkStrokeRec::InitStyle\29 4837:SkDraw::drawSprite\28SkBitmap\20const&\2c\20int\2c\20int\2c\20SkPaint\20const&\29\20const 4838:SkDiscretePathEffectImpl::flatten\28SkWriteBuffer&\29\20const 4839:SkDiscretePathEffect::Make\28float\2c\20float\2c\20unsigned\20int\29 4840:SkDevice::getRelativeTransform\28SkDevice\20const&\29\20const 4841:SkDevice::drawShadow\28SkPath\20const&\2c\20SkDrawShadowRec\20const&\29 4842:SkDevice::drawDrawable\28SkCanvas*\2c\20SkDrawable*\2c\20SkMatrix\20const*\29 4843:SkDevice::drawDevice\28SkDevice*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\29 4844:SkDevice::drawArc\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 4845:SkDescriptor::addEntry\28unsigned\20int\2c\20unsigned\20long\2c\20void\20const*\29 4846:SkDeque::Iter::next\28\29 4847:SkDeque::Iter::Iter\28SkDeque\20const&\2c\20SkDeque::Iter::IterStart\29 4848:SkData::MakeSubset\28SkData\20const*\2c\20unsigned\20long\2c\20unsigned\20long\29 4849:SkDashPath::InternalFilter\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20float\20const*\2c\20int\2c\20float\2c\20int\2c\20float\2c\20float\2c\20SkDashPath::StrokeRecApplication\29 4850:SkDashPath::CalcDashParameters\28float\2c\20float\20const*\2c\20int\2c\20float*\2c\20int*\2c\20float*\2c\20float*\29 4851:SkDRect::setBounds\28SkDQuad\20const&\2c\20SkDQuad\20const&\2c\20double\2c\20double\29 4852:SkDRect::setBounds\28SkDCubic\20const&\2c\20SkDCubic\20const&\2c\20double\2c\20double\29 4853:SkDRect::setBounds\28SkDConic\20const&\2c\20SkDConic\20const&\2c\20double\2c\20double\29 4854:SkDQuad::subDivide\28double\2c\20double\29\20const 4855:SkDQuad::monotonicInY\28\29\20const 4856:SkDQuad::isLinear\28int\2c\20int\29\20const 4857:SkDQuad::hullIntersects\28SkDQuad\20const&\2c\20bool*\29\20const 4858:SkDPoint::approximatelyDEqual\28SkDPoint\20const&\29\20const 4859:SkDCurveSweep::setCurveHullSweep\28SkPath::Verb\29 4860:SkDCurve::nearPoint\28SkPath::Verb\2c\20SkDPoint\20const&\2c\20SkDPoint\20const&\29\20const 4861:SkDCubic::monotonicInX\28\29\20const 4862:SkDCubic::hullIntersects\28SkDQuad\20const&\2c\20bool*\29\20const 4863:SkDCubic::hullIntersects\28SkDPoint\20const*\2c\20int\2c\20bool*\29\20const 4864:SkDConic::subDivide\28double\2c\20double\29\20const 4865:SkCubics::RootsReal\28double\2c\20double\2c\20double\2c\20double\2c\20double*\29 4866:SkCubicEdge::setCubicWithoutUpdate\28SkPoint\20const*\2c\20int\2c\20bool\29 4867:SkCubicClipper::ChopMonoAtY\28SkPoint\20const*\2c\20float\2c\20float*\29 4868:SkCreateRasterPipelineBlitter\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkRasterPipeline\20const&\2c\20bool\2c\20SkArenaAlloc*\2c\20sk_sp\29 4869:SkCreateRasterPipelineBlitter\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\2c\20SkArenaAlloc*\2c\20sk_sp\2c\20SkSurfaceProps\20const&\29 4870:SkContourMeasureIter::~SkContourMeasureIter\28\29 4871:SkContourMeasureIter::SkContourMeasureIter\28SkPath\20const&\2c\20bool\2c\20float\29 4872:SkContourMeasure::length\28\29\20const 4873:SkContourMeasure::getSegment\28float\2c\20float\2c\20SkPath*\2c\20bool\29\20const 4874:SkConic::BuildUnitArc\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkRotationDirection\2c\20SkMatrix\20const*\2c\20SkConic*\29 4875:SkComputeRadialSteps\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20float*\2c\20float*\2c\20int*\29 4876:SkCompressedDataSize\28SkTextureCompressionType\2c\20SkISize\2c\20skia_private::TArray*\2c\20bool\29 4877:SkColorTypeValidateAlphaType\28SkColorType\2c\20SkAlphaType\2c\20SkAlphaType*\29 4878:SkColorSpaceSingletonFactory::Make\28skcms_TransferFunction\20const&\2c\20skcms_Matrix3x3\20const&\29 4879:SkColorSpace::toProfile\28skcms_ICCProfile*\29\20const 4880:SkColorSpace::makeLinearGamma\28\29\20const 4881:SkColorSpace::isSRGB\28\29\20const 4882:SkColorMatrix_RGB2YUV\28SkYUVColorSpace\2c\20float*\29 4883:SkColorFilterShader::SkColorFilterShader\28sk_sp\2c\20float\2c\20sk_sp\29 4884:SkColor4fXformer::SkColor4fXformer\28SkGradientBaseShader\20const*\2c\20SkColorSpace*\2c\20bool\29 4885:SkCoincidentSpans::extend\28SkOpPtT\20const*\2c\20SkOpPtT\20const*\2c\20SkOpPtT\20const*\2c\20SkOpPtT\20const*\29 4886:SkCodecs::get_decoders_for_editing\28\29 4887:SkCodec::outputScanline\28int\29\20const 4888:SkCodec::onGetYUVAPlanes\28SkYUVAPixmaps\20const&\29 4889:SkCodec::initializeColorXform\28SkImageInfo\20const&\2c\20SkEncodedInfo::Alpha\2c\20bool\29 4890:SkChopQuadAtMaxCurvature\28SkPoint\20const*\2c\20SkPoint*\29 4891:SkChopQuadAtHalf\28SkPoint\20const*\2c\20SkPoint*\29 4892:SkChopMonoCubicAtX\28SkPoint\20const*\2c\20float\2c\20SkPoint*\29 4893:SkChopCubicAtInflections\28SkPoint\20const*\2c\20SkPoint*\29 4894:SkCharToGlyphCache::findGlyphIndex\28int\29\20const 4895:SkCanvasPriv::WriteLattice\28void*\2c\20SkCanvas::Lattice\20const&\29 4896:SkCanvasPriv::ReadLattice\28SkReadBuffer&\2c\20SkCanvas::Lattice*\29 4897:SkCanvasPriv::ImageToColorFilter\28SkPaint*\29 4898:SkCanvasPriv::GetDstClipAndMatrixCounts\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20int*\2c\20int*\29 4899:SkCanvas::~SkCanvas\28\29 4900:SkCanvas::skew\28float\2c\20float\29 4901:SkCanvas::only_axis_aligned_saveBehind\28SkRect\20const*\29 4902:SkCanvas::internalDrawDeviceWithFilter\28SkDevice*\2c\20SkDevice*\2c\20SkSpan>\2c\20SkPaint\20const&\2c\20SkCanvas::DeviceCompatibleWithFilter\2c\20float\2c\20bool\29 4903:SkCanvas::getDeviceClipBounds\28\29\20const 4904:SkCanvas::experimental_DrawEdgeAAQuad\28SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkBlendMode\29 4905:SkCanvas::drawVertices\28sk_sp\20const&\2c\20SkBlendMode\2c\20SkPaint\20const&\29 4906:SkCanvas::drawSlug\28sktext::gpu::Slug\20const*\2c\20SkPaint\20const&\29 4907:SkCanvas::drawRegion\28SkRegion\20const&\2c\20SkPaint\20const&\29 4908:SkCanvas::drawLine\28float\2c\20float\2c\20float\2c\20float\2c\20SkPaint\20const&\29 4909:SkCanvas::drawImageNine\28SkImage\20const*\2c\20SkIRect\20const&\2c\20SkRect\20const&\2c\20SkFilterMode\2c\20SkPaint\20const*\29 4910:SkCanvas::drawClippedToSaveBehind\28SkPaint\20const&\29 4911:SkCanvas::drawAnnotation\28SkRect\20const&\2c\20char\20const*\2c\20SkData*\29 4912:SkCanvas::didTranslate\28float\2c\20float\29 4913:SkCanvas::clipShader\28sk_sp\2c\20SkClipOp\29 4914:SkCanvas::clipRegion\28SkRegion\20const&\2c\20SkClipOp\29 4915:SkCanvas::SkCanvas\28sk_sp\29 4916:SkCanvas::ImageSetEntry::ImageSetEntry\28\29 4917:SkCachedData::SkCachedData\28void*\2c\20unsigned\20long\29 4918:SkCachedData::SkCachedData\28unsigned\20long\2c\20SkDiscardableMemory*\29 4919:SkCTMShader::isOpaque\28\29\20const 4920:SkBulkGlyphMetricsAndPaths::glyphs\28SkSpan\29 4921:SkBmpStandardCodec::decodeIcoMask\28SkStream*\2c\20SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\29 4922:SkBmpMaskCodec::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int*\29 4923:SkBmpDecoder::IsBmp\28void\20const*\2c\20unsigned\20long\29 4924:SkBmpCodec::SkBmpCodec\28SkEncodedInfo&&\2c\20std::__2::unique_ptr>\2c\20unsigned\20short\2c\20SkCodec::SkScanlineOrder\29 4925:SkBmpBaseCodec::SkBmpBaseCodec\28SkEncodedInfo&&\2c\20std::__2::unique_ptr>\2c\20unsigned\20short\2c\20SkCodec::SkScanlineOrder\29 4926:SkBlurMask::ConvertRadiusToSigma\28float\29 4927:SkBlurMask::ComputeBlurredScanline\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20unsigned\20int\2c\20float\29 4928:SkBlurMask::BlurRect\28float\2c\20SkMaskBuilder*\2c\20SkRect\20const&\2c\20SkBlurStyle\2c\20SkIPoint*\2c\20SkMaskBuilder::CreateMode\29 4929:SkBlockMemoryStream::getPosition\28\29\20const 4930:SkBlitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 4931:SkBlitter::Choose\28SkPixmap\20const&\2c\20SkMatrix\20const&\2c\20SkPaint\20const&\2c\20SkArenaAlloc*\2c\20bool\2c\20sk_sp\2c\20SkSurfaceProps\20const&\29 4932:SkBlitter::ChooseSprite\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkPixmap\20const&\2c\20int\2c\20int\2c\20SkArenaAlloc*\2c\20sk_sp\29 4933:SkBlendShader::~SkBlendShader\28\29.1 4934:SkBlendShader::~SkBlendShader\28\29 4935:SkBitmapImageGetPixelRef\28SkImage\20const*\29 4936:SkBitmapDevice::SkBitmapDevice\28SkBitmap\20const&\2c\20SkSurfaceProps\20const&\2c\20void*\29 4937:SkBitmapDevice::Create\28SkImageInfo\20const&\2c\20SkSurfaceProps\20const&\2c\20SkRasterHandleAllocator*\29 4938:SkBitmapCache::Rec::install\28SkBitmap*\29 4939:SkBitmapCache::Rec::diagnostic_only_getDiscardable\28\29\20const 4940:SkBitmapCache::Find\28SkBitmapCacheDesc\20const&\2c\20SkBitmap*\29 4941:SkBitmapCache::Alloc\28SkBitmapCacheDesc\20const&\2c\20SkImageInfo\20const&\2c\20SkPixmap*\29 4942:SkBitmapCache::Add\28std::__2::unique_ptr\2c\20SkBitmap*\29 4943:SkBitmap::setPixelRef\28sk_sp\2c\20int\2c\20int\29 4944:SkBitmap::setAlphaType\28SkAlphaType\29 4945:SkBitmap::reset\28\29 4946:SkBitmap::makeShader\28SkTileMode\2c\20SkTileMode\2c\20SkSamplingOptions\20const&\2c\20SkMatrix\20const&\29\20const 4947:SkBitmap::getAddr\28int\2c\20int\29\20const 4948:SkBitmap::allocPixels\28SkImageInfo\20const&\2c\20unsigned\20long\29::$_0::operator\28\29\28\29\20const 4949:SkBitmap::HeapAllocator::allocPixelRef\28SkBitmap*\29 4950:SkBinaryWriteBuffer::writeFlattenable\28SkFlattenable\20const*\29 4951:SkBinaryWriteBuffer::writeColor4f\28SkRGBA4f<\28SkAlphaType\293>\20const&\29 4952:SkBigPicture::SkBigPicture\28SkRect\20const&\2c\20sk_sp\2c\20std::__2::unique_ptr>\2c\20sk_sp\2c\20unsigned\20long\29 4953:SkBezierQuad::IntersectWithHorizontalLine\28SkSpan\2c\20float\2c\20float*\29 4954:SkBezierCubic::IntersectWithHorizontalLine\28SkSpan\2c\20float\2c\20float*\29 4955:SkBasicEdgeBuilder::~SkBasicEdgeBuilder\28\29 4956:SkBaseShadowTessellator::finishPathPolygon\28\29 4957:SkBaseShadowTessellator::computeConvexShadow\28float\2c\20float\2c\20bool\29 4958:SkBaseShadowTessellator::computeConcaveShadow\28float\2c\20float\29 4959:SkBaseShadowTessellator::clipUmbraPoint\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint*\29 4960:SkBaseShadowTessellator::addInnerPoint\28SkPoint\20const&\2c\20unsigned\20int\2c\20SkTDArray\20const&\2c\20int*\29 4961:SkBaseShadowTessellator::addEdge\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20unsigned\20int\2c\20SkTDArray\20const&\2c\20bool\2c\20bool\29 4962:SkBaseShadowTessellator::addArc\28SkPoint\20const&\2c\20float\2c\20bool\29 4963:SkAutoCanvasMatrixPaint::~SkAutoCanvasMatrixPaint\28\29 4964:SkAutoCanvasMatrixPaint::SkAutoCanvasMatrixPaint\28SkCanvas*\2c\20SkMatrix\20const*\2c\20SkPaint\20const*\2c\20SkRect\20const&\29 4965:SkAndroidCodecAdapter::~SkAndroidCodecAdapter\28\29 4966:SkAndroidCodecAdapter::SkAndroidCodecAdapter\28SkCodec*\29 4967:SkAndroidCodec::~SkAndroidCodec\28\29 4968:SkAndroidCodec::getAndroidPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkAndroidCodec::AndroidOptions\20const*\29 4969:SkAndroidCodec::SkAndroidCodec\28SkCodec*\29 4970:SkAnalyticEdge::update\28int\2c\20bool\29 4971:SkAnalyticEdge::updateLine\28int\2c\20int\2c\20int\2c\20int\2c\20int\29 4972:SkAnalyticEdge::setLine\28SkPoint\20const&\2c\20SkPoint\20const&\29 4973:SkAAClip::operator=\28SkAAClip\20const&\29 4974:SkAAClip::op\28SkIRect\20const&\2c\20SkClipOp\29 4975:SkAAClip::Builder::flushRow\28bool\29 4976:SkAAClip::Builder::finish\28SkAAClip*\29 4977:SkAAClip::Builder::Blitter::~Blitter\28\29 4978:SkAAClip::Builder::Blitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 4979:Sk2DPathEffect::onFilterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29\20const 4980:SimpleImageInfo*\20emscripten::internal::raw_constructor\28\29 4981:SimpleFontStyle*\20emscripten::internal::MemberAccess::getWire\28SimpleFontStyle\20SimpleStrutStyle::*\20const&\2c\20SimpleStrutStyle\20const&\29 4982:SharedGenerator::isTextureGenerator\28\29 4983:RunBasedAdditiveBlitter::~RunBasedAdditiveBlitter\28\29.1 4984:RgnOper::addSpan\28int\2c\20int\20const*\2c\20int\20const*\29 4985:PorterDuffXferProcessor::onIsEqual\28GrXferProcessor\20const&\29\20const 4986:PathSegment::init\28\29 4987:PathAddVerbsPointsWeights\28SkPath&\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long\2c\20int\29 4988:ParseSingleImage 4989:ParseHeadersInternal 4990:PS_Conv_ASCIIHexDecode 4991:Op\28SkPath\20const&\2c\20SkPath\20const&\2c\20SkPathOp\2c\20SkPath*\29 4992:OpAsWinding::markReverse\28Contour*\2c\20Contour*\29 4993:OpAsWinding::getDirection\28Contour&\29 4994:OpAsWinding::checkContainerChildren\28Contour*\2c\20Contour*\29 4995:OffsetEdge::computeCrossingDistance\28OffsetEdge\20const*\29 4996:OT::sbix::accelerator_t::get_png_extents\28hb_font_t*\2c\20unsigned\20int\2c\20hb_glyph_extents_t*\2c\20bool\29\20const 4997:OT::sbix::accelerator_t::choose_strike\28hb_font_t*\29\20const 4998:OT::hmtxvmtx::accelerator_t::accelerator_t\28hb_face_t*\29 4999:OT::hmtxvmtx::accelerator_t::get_advance_with_var_unscaled\28unsigned\20int\2c\20hb_font_t*\2c\20float*\29\20const 5000:OT::hmtxvmtx::accelerator_t::accelerator_t\28hb_face_t*\29 5001:OT::hb_ot_layout_lookup_accelerator_t*\20OT::hb_ot_layout_lookup_accelerator_t::create\28OT::Layout::GPOS_impl::PosLookup\20const&\29 5002:OT::hb_kern_machine_t::kern\28hb_font_t*\2c\20hb_buffer_t*\2c\20unsigned\20int\2c\20bool\29\20const 5003:OT::hb_accelerate_subtables_context_t::return_t\20OT::Context::dispatch\28OT::hb_accelerate_subtables_context_t*\29\20const 5004:OT::hb_accelerate_subtables_context_t::return_t\20OT::ChainContext::dispatch\28OT::hb_accelerate_subtables_context_t*\29\20const 5005:OT::glyf_accelerator_t::get_extents\28hb_font_t*\2c\20unsigned\20int\2c\20hb_glyph_extents_t*\29\20const 5006:OT::glyf_accelerator_t::get_advance_with_var_unscaled\28hb_font_t*\2c\20unsigned\20int\2c\20bool\29\20const 5007:OT::cmap::accelerator_t::get_variation_glyph\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20hb_cache_t<21u\2c\2016u\2c\208u\2c\20true>*\29\20const 5008:OT::cff2::accelerator_templ_t>::accelerator_templ_t\28hb_face_t*\29 5009:OT::cff2::accelerator_templ_t>::_fini\28\29 5010:OT::cff1::lookup_expert_subset_charset_for_sid\28unsigned\20int\29 5011:OT::cff1::lookup_expert_charset_for_sid\28unsigned\20int\29 5012:OT::cff1::accelerator_templ_t>::~accelerator_templ_t\28\29 5013:OT::cff1::accelerator_templ_t>::_fini\28\29 5014:OT::TupleVariationData::unpack_points\28OT::IntType\20const*&\2c\20hb_vector_t&\2c\20OT::IntType\20const*\29 5015:OT::SBIXStrike::get_glyph_blob\28unsigned\20int\2c\20hb_blob_t*\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20unsigned\20int\2c\20unsigned\20int*\29\20const 5016:OT::RuleSet::sanitize\28hb_sanitize_context_t*\29\20const 5017:OT::RuleSet::apply\28OT::hb_ot_apply_context_t*\2c\20OT::ContextApplyLookupContext\20const&\29\20const 5018:OT::RecordListOf::sanitize\28hb_sanitize_context_t*\29\20const 5019:OT::RecordListOf::sanitize\28hb_sanitize_context_t*\29\20const 5020:OT::PaintTranslate::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 5021:OT::PaintSolid::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 5022:OT::PaintSkewAroundCenter::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 5023:OT::PaintSkew::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 5024:OT::PaintScaleUniformAroundCenter::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 5025:OT::PaintScaleUniform::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 5026:OT::PaintScaleAroundCenter::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 5027:OT::PaintScale::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 5028:OT::PaintRotateAroundCenter::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 5029:OT::PaintLinearGradient::sanitize\28hb_sanitize_context_t*\29\20const 5030:OT::PaintLinearGradient::sanitize\28hb_sanitize_context_t*\29\20const 5031:OT::Lookup::serialize\28hb_serialize_context_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 5032:OT::Layout::propagate_attachment_offsets\28hb_glyph_position_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20hb_direction_t\2c\20unsigned\20int\29 5033:OT::Layout::GSUB_impl::MultipleSubstFormat1_2::sanitize\28hb_sanitize_context_t*\29\20const 5034:OT::Layout::GSUB_impl::Ligature::apply\28OT::hb_ot_apply_context_t*\29\20const 5035:OT::Layout::GPOS_impl::reverse_cursive_minor_offset\28hb_glyph_position_t*\2c\20unsigned\20int\2c\20hb_direction_t\2c\20unsigned\20int\29 5036:OT::Layout::GPOS_impl::MarkRecord::sanitize\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 5037:OT::Layout::GPOS_impl::MarkBasePosFormat1_2::sanitize\28hb_sanitize_context_t*\29\20const 5038:OT::Layout::GPOS_impl::AnchorMatrix::sanitize\28hb_sanitize_context_t*\2c\20unsigned\20int\29\20const 5039:OT::IndexSubtableRecord::get_image_data\28unsigned\20int\2c\20void\20const*\2c\20unsigned\20int*\2c\20unsigned\20int*\2c\20unsigned\20int*\29\20const 5040:OT::FeatureVariationRecord::sanitize\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 5041:OT::FeatureParams::sanitize\28hb_sanitize_context_t*\2c\20unsigned\20int\29\20const 5042:OT::ContextFormat3::sanitize\28hb_sanitize_context_t*\29\20const 5043:OT::ContextFormat2_5::sanitize\28hb_sanitize_context_t*\29\20const 5044:OT::ContextFormat2_5::_apply\28OT::hb_ot_apply_context_t*\2c\20bool\29\20const 5045:OT::ContextFormat1_4::sanitize\28hb_sanitize_context_t*\29\20const 5046:OT::ColorStop::get_color_stop\28OT::hb_paint_context_t*\2c\20hb_color_stop_t*\2c\20unsigned\20int\2c\20OT::VarStoreInstancer\20const&\29\20const 5047:OT::ColorLine::static_get_extend\28hb_color_line_t*\2c\20void*\2c\20void*\29 5048:OT::ChainRuleSet::would_apply\28OT::hb_would_apply_context_t*\2c\20OT::ChainContextApplyLookupContext\20const&\29\20const 5049:OT::ChainRuleSet::sanitize\28hb_sanitize_context_t*\29\20const 5050:OT::ChainRuleSet::apply\28OT::hb_ot_apply_context_t*\2c\20OT::ChainContextApplyLookupContext\20const&\29\20const 5051:OT::ChainContextFormat3::sanitize\28hb_sanitize_context_t*\29\20const 5052:OT::ChainContextFormat2_5::sanitize\28hb_sanitize_context_t*\29\20const 5053:OT::ChainContextFormat2_5::_apply\28OT::hb_ot_apply_context_t*\2c\20bool\29\20const 5054:OT::ChainContextFormat1_4::sanitize\28hb_sanitize_context_t*\29\20const 5055:OT::CBDT::accelerator_t::get_extents\28hb_font_t*\2c\20unsigned\20int\2c\20hb_glyph_extents_t*\2c\20bool\29\20const 5056:OT::Affine2x3::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 5057:MakeOnScreenGLSurface\28sk_sp\2c\20int\2c\20int\2c\20sk_sp\2c\20int\2c\20int\29 5058:Load_SBit_Png 5059:LineCubicIntersections::intersectRay\28double*\29 5060:LineCubicIntersections::VerticalIntersect\28SkDCubic\20const&\2c\20double\2c\20double*\29 5061:LineCubicIntersections::HorizontalIntersect\28SkDCubic\20const&\2c\20double\2c\20double*\29 5062:Launch 5063:JpegDecoderMgr::returnFalse\28char\20const*\29 5064:JpegDecoderMgr::getEncodedColor\28SkEncodedInfo::Color*\29 5065:JSObjectFromLineMetrics\28skia::textlayout::LineMetrics&\29 5066:JSObjectFromGlyphInfo\28skia::textlayout::Paragraph::GlyphInfo&\29 5067:Ins_DELTAP 5068:HandleCoincidence\28SkOpContourHead*\2c\20SkOpCoincidence*\29 5069:GrWritePixelsTask::~GrWritePixelsTask\28\29 5070:GrWaitRenderTask::~GrWaitRenderTask\28\29 5071:GrVertexBufferAllocPool::makeSpace\28unsigned\20long\2c\20int\2c\20sk_sp*\2c\20int*\29 5072:GrVertexBufferAllocPool::makeSpaceAtLeast\28unsigned\20long\2c\20int\2c\20int\2c\20sk_sp*\2c\20int*\2c\20int*\29 5073:GrTriangulator::polysToTriangles\28GrTriangulator::Poly*\2c\20SkPathFillType\2c\20skgpu::VertexWriter\29\20const 5074:GrTriangulator::polysToTriangles\28GrTriangulator::Poly*\2c\20GrEagerVertexAllocator*\29\20const 5075:GrTriangulator::mergeEdgesBelow\28GrTriangulator::Edge*\2c\20GrTriangulator::Edge*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Comparator\20const&\29\20const 5076:GrTriangulator::mergeEdgesAbove\28GrTriangulator::Edge*\2c\20GrTriangulator::Edge*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Comparator\20const&\29\20const 5077:GrTriangulator::makeSortedVertex\28SkPoint\20const&\2c\20unsigned\20char\2c\20GrTriangulator::VertexList*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::Comparator\20const&\29\20const 5078:GrTriangulator::makeEdge\28GrTriangulator::Vertex*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::EdgeType\2c\20GrTriangulator::Comparator\20const&\29 5079:GrTriangulator::computeBisector\28GrTriangulator::Edge*\2c\20GrTriangulator::Edge*\2c\20GrTriangulator::Vertex*\29\20const 5080:GrTriangulator::appendQuadraticToContour\28SkPoint\20const*\2c\20float\2c\20GrTriangulator::VertexList*\29\20const 5081:GrTriangulator::SortMesh\28GrTriangulator::VertexList*\2c\20GrTriangulator::Comparator\20const&\29 5082:GrTriangulator::FindEnclosingEdges\28GrTriangulator::Vertex\20const&\2c\20GrTriangulator::EdgeList\20const&\2c\20GrTriangulator::Edge**\2c\20GrTriangulator::Edge**\29 5083:GrTriangulator::Edge::intersect\28GrTriangulator::Edge\20const&\2c\20SkPoint*\2c\20unsigned\20char*\29\20const 5084:GrTransferFromRenderTask::~GrTransferFromRenderTask\28\29 5085:GrThreadSafeCache::~GrThreadSafeCache\28\29 5086:GrThreadSafeCache::findVertsWithData\28skgpu::UniqueKey\20const&\29 5087:GrThreadSafeCache::addVertsWithData\28skgpu::UniqueKey\20const&\2c\20sk_sp\2c\20bool\20\28*\29\28SkData*\2c\20SkData*\29\29 5088:GrThreadSafeCache::Entry::set\28skgpu::UniqueKey\20const&\2c\20sk_sp\29 5089:GrThreadSafeCache::CreateLazyView\28GrDirectContext*\2c\20GrColorType\2c\20SkISize\2c\20GrSurfaceOrigin\2c\20SkBackingFit\29 5090:GrTextureResolveRenderTask::~GrTextureResolveRenderTask\28\29 5091:GrTextureRenderTargetProxy::GrTextureRenderTargetProxy\28sk_sp\2c\20GrSurfaceProxy::UseAllocator\2c\20GrDDLProvider\29 5092:GrTextureRenderTargetProxy::GrTextureRenderTargetProxy\28GrCaps\20const&\2c\20std::__2::function&&\2c\20GrBackendFormat\20const&\2c\20SkISize\2c\20int\2c\20skgpu::Mipmapped\2c\20GrMipmapStatus\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20GrInternalSurfaceFlags\2c\20GrSurfaceProxy::UseAllocator\2c\20GrDDLProvider\2c\20std::__2::basic_string_view>\29 5093:GrTextureProxyPriv::setDeferredUploader\28std::__2::unique_ptr>\29 5094:GrTextureProxy::setUniqueKey\28GrProxyProvider*\2c\20skgpu::UniqueKey\20const&\29 5095:GrTextureProxy::clearUniqueKey\28\29 5096:GrTextureProxy::ProxiesAreCompatibleAsDynamicState\28GrSurfaceProxy\20const*\2c\20GrSurfaceProxy\20const*\29 5097:GrTextureProxy::GrTextureProxy\28sk_sp\2c\20GrSurfaceProxy::UseAllocator\2c\20GrDDLProvider\29.1 5098:GrTextureEffect::Sampling::Sampling\28GrSurfaceProxy\20const&\2c\20GrSamplerState\2c\20SkRect\20const&\2c\20SkRect\20const*\2c\20float\20const*\2c\20bool\2c\20GrCaps\20const&\2c\20SkPoint\29::$_1::operator\28\29\28int\2c\20GrSamplerState::WrapMode\2c\20GrTextureEffect::Sampling::Sampling\28GrSurfaceProxy\20const&\2c\20GrSamplerState\2c\20SkRect\20const&\2c\20SkRect\20const*\2c\20float\20const*\2c\20bool\2c\20GrCaps\20const&\2c\20SkPoint\29::Span\2c\20GrTextureEffect::Sampling::Sampling\28GrSurfaceProxy\20const&\2c\20GrSamplerState\2c\20SkRect\20const&\2c\20SkRect\20const*\2c\20float\20const*\2c\20bool\2c\20GrCaps\20const&\2c\20SkPoint\29::Span\2c\20float\29\20const 5099:GrTextureEffect::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::$_2::operator\28\29\28GrTextureEffect::ShaderMode\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\29\20const 5100:GrTexture::markMipmapsDirty\28\29 5101:GrTexture::computeScratchKey\28skgpu::ScratchKey*\29\20const 5102:GrTDeferredProxyUploader>::~GrTDeferredProxyUploader\28\29 5103:GrSurfaceProxyPriv::exactify\28\29 5104:GrSurfaceProxy::GrSurfaceProxy\28GrBackendFormat\20const&\2c\20SkISize\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20GrInternalSurfaceFlags\2c\20GrSurfaceProxy::UseAllocator\2c\20std::__2::basic_string_view>\29 5105:GrStyledShape::~GrStyledShape\28\29 5106:GrStyledShape::setInheritedKey\28GrStyledShape\20const&\2c\20GrStyle::Apply\2c\20float\29 5107:GrStyledShape::asRRect\28SkRRect*\2c\20SkPathDirection*\2c\20unsigned\20int*\2c\20bool*\29\20const 5108:GrStyledShape::GrStyledShape\28SkPath\20const&\2c\20SkPaint\20const&\2c\20GrStyledShape::DoSimplify\29 5109:GrStyle::~GrStyle\28\29 5110:GrStyle::applyToPath\28SkPath*\2c\20SkStrokeRec::InitStyle*\2c\20SkPath\20const&\2c\20float\29\20const 5111:GrStyle::applyPathEffect\28SkPath*\2c\20SkStrokeRec*\2c\20SkPath\20const&\29\20const 5112:GrStencilSettings::SetClipBitSettings\28bool\29 5113:GrStagingBufferManager::detachBuffers\28\29 5114:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::defineStruct\28char\20const*\29 5115:GrShape::simplify\28unsigned\20int\29 5116:GrShape::segmentMask\28\29\20const 5117:GrShape::conservativeContains\28SkRect\20const&\29\20const 5118:GrShape::closed\28\29\20const 5119:GrSWMaskHelper::toTextureView\28GrRecordingContext*\2c\20SkBackingFit\29 5120:GrSWMaskHelper::drawShape\28GrStyledShape\20const&\2c\20SkMatrix\20const&\2c\20GrAA\2c\20unsigned\20char\29 5121:GrSWMaskHelper::drawShape\28GrShape\20const&\2c\20SkMatrix\20const&\2c\20GrAA\2c\20unsigned\20char\29 5122:GrResourceProvider::writePixels\28sk_sp\2c\20GrColorType\2c\20SkISize\2c\20GrMipLevel\20const*\2c\20int\29\20const 5123:GrResourceProvider::wrapBackendSemaphore\28GrBackendSemaphore\20const&\2c\20GrSemaphoreWrapType\2c\20GrWrapOwnership\29 5124:GrResourceProvider::prepareLevels\28GrBackendFormat\20const&\2c\20GrColorType\2c\20SkISize\2c\20GrMipLevel\20const*\2c\20int\2c\20skia_private::AutoSTArray<14\2c\20GrMipLevel>*\2c\20skia_private::AutoSTArray<14\2c\20std::__2::unique_ptr>>*\29\20const 5125:GrResourceProvider::getExactScratch\28SkISize\2c\20GrBackendFormat\20const&\2c\20GrTextureType\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Budgeted\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 5126:GrResourceProvider::createTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20GrTextureType\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 5127:GrResourceProvider::createTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20GrTextureType\2c\20GrColorType\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Budgeted\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrMipLevel\20const*\2c\20std::__2::basic_string_view>\29 5128:GrResourceProvider::createApproxTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20GrTextureType\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 5129:GrResourceCache::~GrResourceCache\28\29 5130:GrResourceCache::removeResource\28GrGpuResource*\29 5131:GrResourceCache::processFreedGpuResources\28\29 5132:GrResourceCache::insertResource\28GrGpuResource*\29 5133:GrResourceCache::didChangeBudgetStatus\28GrGpuResource*\29 5134:GrResourceAllocator::~GrResourceAllocator\28\29 5135:GrResourceAllocator::planAssignment\28\29 5136:GrResourceAllocator::expire\28unsigned\20int\29 5137:GrRenderTask::makeSkippable\28\29 5138:GrRenderTask::isInstantiated\28\29\20const 5139:GrRenderTarget::GrRenderTarget\28GrGpu*\2c\20SkISize\20const&\2c\20int\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\2c\20sk_sp\29 5140:GrRecordingContextPriv::createDevice\28skgpu::Budgeted\2c\20SkImageInfo\20const&\2c\20SkBackingFit\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrSurfaceOrigin\2c\20SkSurfaceProps\20const&\2c\20skgpu::ganesh::Device::InitContents\29 5141:GrRecordingContext::init\28\29 5142:GrRRectEffect::Make\28std::__2::unique_ptr>\2c\20GrClipEdgeType\2c\20SkRRect\20const&\2c\20GrShaderCaps\20const&\29 5143:GrQuadUtils::TessellationHelper::reset\28GrQuad\20const&\2c\20GrQuad\20const*\29 5144:GrQuadUtils::TessellationHelper::outset\28skvx::Vec<4\2c\20float>\20const&\2c\20GrQuad*\2c\20GrQuad*\29 5145:GrQuadUtils::TessellationHelper::adjustDegenerateVertices\28skvx::Vec<4\2c\20float>\20const&\2c\20GrQuadUtils::TessellationHelper::Vertices*\29 5146:GrQuadUtils::TessellationHelper::OutsetRequest::reset\28GrQuadUtils::TessellationHelper::EdgeVectors\20const&\2c\20GrQuad::Type\2c\20skvx::Vec<4\2c\20float>\20const&\29 5147:GrQuadUtils::TessellationHelper::EdgeVectors::reset\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20GrQuad::Type\29 5148:GrQuadUtils::ClipToW0\28DrawQuad*\2c\20DrawQuad*\29 5149:GrQuad::bounds\28\29\20const 5150:GrProxyProvider::~GrProxyProvider\28\29 5151:GrProxyProvider::wrapBackendTexture\28GrBackendTexture\20const&\2c\20GrWrapOwnership\2c\20GrWrapCacheable\2c\20GrIOType\2c\20sk_sp\29 5152:GrProxyProvider::removeUniqueKeyFromProxy\28GrTextureProxy*\29 5153:GrProxyProvider::processInvalidUniqueKeyImpl\28skgpu::UniqueKey\20const&\2c\20GrTextureProxy*\2c\20GrProxyProvider::InvalidateGPUResource\2c\20GrProxyProvider::RemoveTableEntry\29 5154:GrProxyProvider::createLazyProxy\28std::__2::function&&\2c\20GrBackendFormat\20const&\2c\20SkISize\2c\20skgpu::Mipmapped\2c\20GrMipmapStatus\2c\20GrInternalSurfaceFlags\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20GrSurfaceProxy::UseAllocator\2c\20std::__2::basic_string_view>\29 5155:GrProxyProvider::contextID\28\29\20const 5156:GrProxyProvider::adoptUniqueKeyFromSurface\28GrTextureProxy*\2c\20GrSurface\20const*\29 5157:GrPixmapBase::clip\28SkISize\2c\20SkIPoint*\29 5158:GrPixmap::GrPixmap\28GrImageInfo\2c\20sk_sp\2c\20unsigned\20long\29 5159:GrPipeline::GrPipeline\28GrPipeline::InitArgs\20const&\2c\20sk_sp\2c\20GrAppliedHardClip\20const&\29 5160:GrPersistentCacheUtils::GetType\28SkReadBuffer*\29 5161:GrPathUtils::QuadUVMatrix::set\28SkPoint\20const*\29 5162:GrPathTessellationShader::MakeStencilOnlyPipeline\28GrTessellationShader::ProgramArgs\20const&\2c\20GrAAType\2c\20GrAppliedHardClip\20const&\2c\20GrPipeline::InputFlags\29 5163:GrPaint::setCoverageSetOpXPFactory\28SkRegion::Op\2c\20bool\29 5164:GrOvalOpFactory::MakeOvalOp\28GrRecordingContext*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20GrStyle\20const&\2c\20GrShaderCaps\20const*\29 5165:GrOpsRenderPass::drawIndexed\28int\2c\20int\2c\20unsigned\20short\2c\20unsigned\20short\2c\20int\29 5166:GrOpsRenderPass::drawIndexedInstanced\28int\2c\20int\2c\20int\2c\20int\2c\20int\29 5167:GrOpsRenderPass::drawIndexPattern\28int\2c\20int\2c\20int\2c\20int\2c\20int\29 5168:GrOpFlushState::reset\28\29 5169:GrOpFlushState::executeDrawsAndUploadsForMeshDrawOp\28GrOp\20const*\2c\20SkRect\20const&\2c\20GrPipeline\20const*\2c\20GrUserStencilSettings\20const*\29 5170:GrOpFlushState::addASAPUpload\28std::__2::function&\29>&&\29 5171:GrOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 5172:GrOp::combineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 5173:GrOnFlushResourceProvider::instantiateProxy\28GrSurfaceProxy*\29 5174:GrMeshDrawTarget::allocMesh\28\29 5175:GrMeshDrawOp::PatternHelper::init\28GrMeshDrawTarget*\2c\20GrPrimitiveType\2c\20unsigned\20long\2c\20sk_sp\2c\20int\2c\20int\2c\20int\2c\20int\29 5176:GrMeshDrawOp::CombinedQuadCountWillOverflow\28GrAAType\2c\20bool\2c\20int\29 5177:GrMemoryPool::allocate\28unsigned\20long\29 5178:GrMakeUniqueKeyInvalidationListener\28skgpu::UniqueKey*\2c\20unsigned\20int\29::Listener::changed\28\29 5179:GrIndexBufferAllocPool::makeSpace\28int\2c\20sk_sp*\2c\20int*\29 5180:GrIndexBufferAllocPool::makeSpaceAtLeast\28int\2c\20int\2c\20sk_sp*\2c\20int*\2c\20int*\29 5181:GrImageInfo::refColorSpace\28\29\20const 5182:GrImageInfo::minRowBytes\28\29\20const 5183:GrImageInfo::makeDimensions\28SkISize\29\20const 5184:GrImageInfo::bpp\28\29\20const 5185:GrImageInfo::GrImageInfo\28GrColorType\2c\20SkAlphaType\2c\20sk_sp\2c\20int\2c\20int\29 5186:GrImageContext::abandonContext\28\29 5187:GrGpuResource::makeBudgeted\28\29 5188:GrGpuResource::getResourceName\28\29\20const 5189:GrGpuResource::abandon\28\29 5190:GrGpuResource::CreateUniqueID\28\29 5191:GrGpu::~GrGpu\28\29 5192:GrGpu::regenerateMipMapLevels\28GrTexture*\29 5193:GrGpu::createTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20GrTextureType\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 5194:GrGpu::createTextureCommon\28SkISize\2c\20GrBackendFormat\20const&\2c\20GrTextureType\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20int\2c\20unsigned\20int\2c\20std::__2::basic_string_view>\29 5195:GrGeometryProcessor::AttributeSet::addToKey\28skgpu::KeyBuilder*\29\20const 5196:GrGLVertexArray::invalidateCachedState\28\29 5197:GrGLTextureParameters::invalidate\28\29 5198:GrGLTexture::MakeWrapped\28GrGLGpu*\2c\20GrMipmapStatus\2c\20GrGLTexture::Desc\20const&\2c\20sk_sp\2c\20GrWrapCacheable\2c\20GrIOType\2c\20std::__2::basic_string_view>\29 5199:GrGLTexture::GrGLTexture\28GrGLGpu*\2c\20skgpu::Budgeted\2c\20GrGLTexture::Desc\20const&\2c\20GrMipmapStatus\2c\20std::__2::basic_string_view>\29 5200:GrGLTexture::GrGLTexture\28GrGLGpu*\2c\20GrGLTexture::Desc\20const&\2c\20sk_sp\2c\20GrMipmapStatus\2c\20std::__2::basic_string_view>\29 5201:GrGLSLVaryingHandler::getFragDecls\28SkString*\2c\20SkString*\29\20const 5202:GrGLSLVaryingHandler::addAttribute\28GrShaderVar\20const&\29 5203:GrGLSLUniformHandler::liftUniformToVertexShader\28GrProcessor\20const&\2c\20SkString\29 5204:GrGLSLShaderBuilder::finalize\28unsigned\20int\29 5205:GrGLSLShaderBuilder::emitFunction\28char\20const*\2c\20char\20const*\29 5206:GrGLSLShaderBuilder::emitFunctionPrototype\28char\20const*\29 5207:GrGLSLShaderBuilder::appendTextureLookupAndBlend\28char\20const*\2c\20SkBlendMode\2c\20GrResourceHandle\2c\20char\20const*\2c\20GrGLSLColorSpaceXformHelper*\29 5208:GrGLSLShaderBuilder::appendColorGamutXform\28SkString*\2c\20char\20const*\2c\20GrGLSLColorSpaceXformHelper*\29::$_0::operator\28\29\28char\20const*\2c\20GrResourceHandle\2c\20skcms_TFType\29\20const 5209:GrGLSLShaderBuilder::addLayoutQualifier\28char\20const*\2c\20GrGLSLShaderBuilder::InterfaceQualifier\29 5210:GrGLSLShaderBuilder::GrGLSLShaderBuilder\28GrGLSLProgramBuilder*\29 5211:GrGLSLProgramDataManager::setRuntimeEffectUniforms\28SkSpan\2c\20SkSpan\20const>\2c\20SkSpan\2c\20void\20const*\29\20const 5212:GrGLSLProgramBuilder::~GrGLSLProgramBuilder\28\29 5213:GrGLSLBlend::SetBlendModeUniformData\28GrGLSLProgramDataManager\20const&\2c\20GrResourceHandle\2c\20SkBlendMode\29 5214:GrGLSLBlend::BlendExpression\28GrProcessor\20const*\2c\20GrGLSLUniformHandler*\2c\20GrResourceHandle*\2c\20char\20const*\2c\20char\20const*\2c\20SkBlendMode\29 5215:GrGLRenderTarget::GrGLRenderTarget\28GrGLGpu*\2c\20SkISize\20const&\2c\20GrGLFormat\2c\20int\2c\20GrGLRenderTarget::IDs\20const&\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 5216:GrGLProgramDataManager::set4fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 5217:GrGLProgramDataManager::set2fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 5218:GrGLProgramBuilder::uniformHandler\28\29 5219:GrGLProgramBuilder::PrecompileProgram\28GrDirectContext*\2c\20GrGLPrecompiledProgram*\2c\20SkData\20const&\29::$_0::operator\28\29\28SkSL::ProgramKind\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int\29\20const 5220:GrGLProgramBuilder::CreateProgram\28GrDirectContext*\2c\20GrProgramDesc\20const&\2c\20GrProgramInfo\20const&\2c\20GrGLPrecompiledProgram\20const*\29 5221:GrGLProgram::~GrGLProgram\28\29 5222:GrGLMakeAssembledWebGLInterface\28void*\2c\20void\20\28*\20\28*\29\28void*\2c\20char\20const*\29\29\28\29\29 5223:GrGLGpu::~GrGLGpu\28\29 5224:GrGLGpu::uploadTexData\28SkISize\2c\20unsigned\20int\2c\20SkIRect\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20long\2c\20GrMipLevel\20const*\2c\20int\29 5225:GrGLGpu::uploadCompressedTexData\28SkTextureCompressionType\2c\20GrGLFormat\2c\20SkISize\2c\20skgpu::Mipmapped\2c\20unsigned\20int\2c\20void\20const*\2c\20unsigned\20long\29 5226:GrGLGpu::uploadColorToTex\28GrGLFormat\2c\20SkISize\2c\20unsigned\20int\2c\20std::__2::array\2c\20unsigned\20int\29 5227:GrGLGpu::readOrTransferPixelsFrom\28GrSurface*\2c\20SkIRect\2c\20GrColorType\2c\20GrColorType\2c\20void*\2c\20int\29 5228:GrGLGpu::getCompatibleStencilIndex\28GrGLFormat\29 5229:GrGLGpu::deleteSync\28__GLsync*\29 5230:GrGLGpu::createRenderTargetObjects\28GrGLTexture::Desc\20const&\2c\20int\2c\20GrGLRenderTarget::IDs*\29 5231:GrGLGpu::createCompressedTexture2D\28SkISize\2c\20SkTextureCompressionType\2c\20GrGLFormat\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrGLTextureParameters::SamplerOverriddenState*\29 5232:GrGLGpu::bindFramebuffer\28unsigned\20int\2c\20unsigned\20int\29 5233:GrGLGpu::ProgramCache::reset\28\29 5234:GrGLGpu::ProgramCache::findOrCreateProgramImpl\28GrDirectContext*\2c\20GrProgramDesc\20const&\2c\20GrProgramInfo\20const&\2c\20GrThreadSafePipelineBuilder::Stats::ProgramCacheResult*\29 5235:GrGLFunction::GrGLFunction\28void\20\28*\29\28unsigned\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void\20const*\29\29::'lambda'\28void\20const*\2c\20unsigned\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void\20const*\29::__invoke\28void\20const*\2c\20unsigned\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void\20const*\29 5236:GrGLFunction::GrGLFunction\28void\20\28*\29\28int\2c\20float\29\29::'lambda'\28void\20const*\2c\20int\2c\20float\29::__invoke\28void\20const*\2c\20int\2c\20float\29 5237:GrGLFormatIsCompressed\28GrGLFormat\29 5238:GrGLFinishCallbacks::check\28\29 5239:GrGLContext::~GrGLContext\28\29.1 5240:GrGLContext::~GrGLContext\28\29 5241:GrGLCaps::~GrGLCaps\28\29 5242:GrGLCaps::getTexSubImageExternalFormatAndType\28GrGLFormat\2c\20GrColorType\2c\20GrColorType\2c\20unsigned\20int*\2c\20unsigned\20int*\29\20const 5243:GrGLCaps::getTexSubImageDefaultFormatTypeAndColorType\28GrGLFormat\2c\20unsigned\20int*\2c\20unsigned\20int*\2c\20GrColorType*\29\20const 5244:GrGLCaps::getRenderTargetSampleCount\28int\2c\20GrGLFormat\29\20const 5245:GrGLCaps::formatSupportsTexStorage\28GrGLFormat\29\20const 5246:GrGLCaps::canCopyAsDraw\28GrGLFormat\2c\20bool\2c\20bool\29\20const 5247:GrGLCaps::canCopyAsBlit\28GrGLFormat\2c\20int\2c\20GrTextureType\20const*\2c\20GrGLFormat\2c\20int\2c\20GrTextureType\20const*\2c\20SkRect\20const&\2c\20bool\2c\20SkIRect\20const&\2c\20SkIRect\20const&\29\20const 5248:GrFragmentProcessor::~GrFragmentProcessor\28\29 5249:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::Make\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29 5250:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29 5251:GrFragmentProcessor::ProgramImpl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 5252:GrFragmentProcessor::HighPrecision\28std::__2::unique_ptr>\29::HighPrecisionFragmentProcessor::Make\28std::__2::unique_ptr>\29 5253:GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29::ComposeProcessor::Make\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 5254:GrFragmentProcessor::ClampOutput\28std::__2::unique_ptr>\29 5255:GrFixedClip::preApply\28SkRect\20const&\2c\20GrAA\29\20const 5256:GrFixedClip::getConservativeBounds\28\29\20const 5257:GrFixedClip::apply\28GrAppliedHardClip*\2c\20SkIRect*\29\20const 5258:GrEagerDynamicVertexAllocator::unlock\28int\29 5259:GrDynamicAtlas::readView\28GrCaps\20const&\29\20const 5260:GrDynamicAtlas::instantiate\28GrOnFlushResourceProvider*\2c\20sk_sp\29 5261:GrDriverBugWorkarounds::GrDriverBugWorkarounds\28\29 5262:GrDrawingManager::getLastRenderTask\28GrSurfaceProxy\20const*\29\20const 5263:GrDrawingManager::flush\28SkSpan\2c\20SkSurfaces::BackendSurfaceAccess\2c\20GrFlushInfo\20const&\2c\20skgpu::MutableTextureState\20const*\29 5264:GrDrawOpAtlasConfig::atlasDimensions\28skgpu::MaskFormat\29\20const 5265:GrDrawOpAtlasConfig::GrDrawOpAtlasConfig\28int\2c\20unsigned\20long\29 5266:GrDrawOpAtlas::addToAtlas\28GrResourceProvider*\2c\20GrDeferredUploadTarget*\2c\20int\2c\20int\2c\20void\20const*\2c\20skgpu::AtlasLocator*\29 5267:GrDrawOpAtlas::Make\28GrProxyProvider*\2c\20GrBackendFormat\20const&\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20int\2c\20int\2c\20int\2c\20skgpu::AtlasGenerationCounter*\2c\20GrDrawOpAtlas::AllowMultitexturing\2c\20skgpu::PlotEvictionCallback*\2c\20std::__2::basic_string_view>\29 5268:GrDistanceFieldA8TextGeoProc::onTextureSampler\28int\29\20const 5269:GrDistanceFieldA8TextGeoProc::addNewViews\28GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\29 5270:GrDisableColorXPFactory::MakeXferProcessor\28\29 5271:GrDirectContextPriv::validPMUPMConversionExists\28\29 5272:GrDirectContext::~GrDirectContext\28\29 5273:GrDirectContext::onGetSmallPathAtlasMgr\28\29 5274:GrDirectContext::getResourceCacheLimits\28int*\2c\20unsigned\20long*\29\20const 5275:GrCopyRenderTask::~GrCopyRenderTask\28\29 5276:GrCopyRenderTask::onIsUsed\28GrSurfaceProxy*\29\20const 5277:GrCopyBaseMipMapToView\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20skgpu::Budgeted\29 5278:GrContext_Base::threadSafeProxy\28\29 5279:GrContext_Base::maxSurfaceSampleCountForColorType\28SkColorType\29\20const 5280:GrContext_Base::backend\28\29\20const 5281:GrContextThreadSafeProxy::~GrContextThreadSafeProxy\28\29 5282:GrColorInfo::makeColorType\28GrColorType\29\20const 5283:GrColorInfo::isLinearlyBlended\28\29\20const 5284:GrColorFragmentProcessorAnalysis::GrColorFragmentProcessorAnalysis\28GrProcessorAnalysisColor\20const&\2c\20std::__2::unique_ptr>\20const*\2c\20int\29 5285:GrClip::IsPixelAligned\28SkRect\20const&\29 5286:GrCaps::surfaceSupportsWritePixels\28GrSurface\20const*\29\20const 5287:GrCaps::getDstSampleFlagsForProxy\28GrRenderTargetProxy\20const*\2c\20bool\29\20const 5288:GrCPixmap::GrCPixmap\28GrPixmap\20const&\29 5289:GrBufferAllocPool::makeSpaceAtLeast\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20sk_sp*\2c\20unsigned\20long*\2c\20unsigned\20long*\29 5290:GrBufferAllocPool::createBlock\28unsigned\20long\29 5291:GrBufferAllocPool::CpuBufferCache::makeBuffer\28unsigned\20long\2c\20bool\29 5292:GrBlurUtils::draw_shape_with_mask_filter\28GrRecordingContext*\2c\20skgpu::ganesh::SurfaceDrawContext*\2c\20GrClip\20const*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkMaskFilterBase\20const*\2c\20GrStyledShape\20const&\29 5293:GrBlurUtils::draw_mask\28skgpu::ganesh::SurfaceDrawContext*\2c\20GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20GrPaint&&\2c\20GrSurfaceProxyView\29 5294:GrBlurUtils::create_integral_table\28float\2c\20SkBitmap*\29 5295:GrBlurUtils::convolve_gaussian\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20GrColorType\2c\20SkAlphaType\2c\20SkIRect\2c\20SkIRect\2c\20GrBlurUtils::\28anonymous\20namespace\29::Direction\2c\20int\2c\20float\2c\20SkTileMode\2c\20sk_sp\2c\20SkBackingFit\29 5296:GrBlurUtils::\28anonymous\20namespace\29::make_texture_effect\28GrCaps\20const*\2c\20GrSurfaceProxyView\2c\20SkAlphaType\2c\20GrSamplerState\20const&\2c\20SkIRect\20const&\2c\20SkIRect\20const&\2c\20SkISize\20const&\29 5297:GrBitmapTextGeoProc::addNewViews\28GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\29 5298:GrBicubicEffect::Make\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkMatrix\20const&\2c\20GrSamplerState::WrapMode\2c\20GrSamplerState::WrapMode\2c\20SkCubicResampler\2c\20GrBicubicEffect::Direction\2c\20GrCaps\20const&\29 5299:GrBicubicEffect::MakeSubset\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkMatrix\20const&\2c\20GrSamplerState::WrapMode\2c\20GrSamplerState::WrapMode\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkCubicResampler\2c\20GrBicubicEffect::Direction\2c\20GrCaps\20const&\29 5300:GrBackendTextures::MakeGL\28int\2c\20int\2c\20skgpu::Mipmapped\2c\20GrGLTextureInfo\20const&\2c\20std::__2::basic_string_view>\29 5301:GrBackendTexture::operator=\28GrBackendTexture\20const&\29 5302:GrBackendRenderTargets::MakeGL\28int\2c\20int\2c\20int\2c\20int\2c\20GrGLFramebufferInfo\20const&\29 5303:GrBackendRenderTargets::GetGLFramebufferInfo\28GrBackendRenderTarget\20const&\2c\20GrGLFramebufferInfo*\29 5304:GrBackendRenderTarget::~GrBackendRenderTarget\28\29 5305:GrBackendRenderTarget::isProtected\28\29\20const 5306:GrBackendFormatBytesPerBlock\28GrBackendFormat\20const&\29 5307:GrBackendFormat::makeTexture2D\28\29\20const 5308:GrBackendFormat::isMockStencilFormat\28\29\20const 5309:GrBackendFormat::MakeMock\28GrColorType\2c\20SkTextureCompressionType\2c\20bool\29 5310:GrAuditTrail::opsCombined\28GrOp\20const*\2c\20GrOp\20const*\29 5311:GrAttachment::ComputeSharedAttachmentUniqueKey\28GrCaps\20const&\2c\20GrBackendFormat\20const&\2c\20SkISize\2c\20GrAttachment::UsageFlags\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrMemoryless\2c\20skgpu::UniqueKey*\29 5312:GrAtlasManager::~GrAtlasManager\28\29 5313:GrAtlasManager::getViews\28skgpu::MaskFormat\2c\20unsigned\20int*\29 5314:GrAtlasManager::freeAll\28\29 5315:GrAATriangulator::makeEvent\28GrAATriangulator::SSEdge*\2c\20GrTriangulator::Vertex*\2c\20GrAATriangulator::SSEdge*\2c\20GrTriangulator::Vertex*\2c\20GrAATriangulator::EventList*\2c\20GrTriangulator::Comparator\20const&\29\20const 5316:GrAATriangulator::collapseOverlapRegions\28GrTriangulator::VertexList*\2c\20GrTriangulator::Comparator\20const&\2c\20GrAATriangulator::EventComparator\29 5317:GrAAConvexTessellator::quadTo\28SkPoint\20const*\29 5318:GetVariationDesignPosition\28AutoFTAccess&\2c\20SkFontArguments::VariationPosition::Coordinate*\2c\20int\29 5319:GetShapedLines\28skia::textlayout::Paragraph&\29 5320:GetLargeValue 5321:FontMgrRunIterator::endOfCurrentRun\28\29\20const 5322:FontMgrRunIterator::atEnd\28\29\20const 5323:FinishRow 5324:FindUndone\28SkOpContourHead*\29 5325:FT_Stream_Close 5326:FT_Sfnt_Table_Info 5327:FT_Render_Glyph_Internal 5328:FT_Remove_Module 5329:FT_Outline_Get_Orientation 5330:FT_Outline_EmboldenXY 5331:FT_New_Library 5332:FT_New_GlyphSlot 5333:FT_List_Iterate 5334:FT_List_Find 5335:FT_List_Finalize 5336:FT_GlyphLoader_CheckSubGlyphs 5337:FT_Get_Postscript_Name 5338:FT_Get_Paint_Layers 5339:FT_Get_PS_Font_Info 5340:FT_Get_Kerning 5341:FT_Get_Glyph_Name 5342:FT_Get_FSType_Flags 5343:FT_Get_Colorline_Stops 5344:FT_Get_Color_Glyph_ClipBox 5345:FT_Bitmap_Convert 5346:FT_Add_Default_Modules 5347:EllipticalRRectOp::~EllipticalRRectOp\28\29.1 5348:EllipticalRRectOp::~EllipticalRRectOp\28\29 5349:EllipticalRRectOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 5350:EllipticalRRectOp::RRect&\20skia_private::TArray::emplace_back\28EllipticalRRectOp::RRect&&\29 5351:EllipticalRRectOp::EllipticalRRectOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20float\2c\20float\2c\20SkPoint\2c\20bool\29 5352:EllipseOp::Make\28GrRecordingContext*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20SkStrokeRec\20const&\29 5353:EllipseOp::EllipseOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20EllipseOp::DeviceSpaceParams\20const&\2c\20SkStrokeRec\20const&\29 5354:EllipseGeometryProcessor::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 5355:DIEllipseOp::Make\28GrRecordingContext*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20SkStrokeRec\20const&\29 5356:DIEllipseOp::DIEllipseOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20DIEllipseOp::DeviceSpaceParams\20const&\2c\20SkMatrix\20const&\29 5357:CustomXP::makeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrXferProcessor\20const&\29 5358:CustomXP::makeProgramImpl\28\29\20const::Impl::emitBlendCodeForDstRead\28GrGLSLXPFragmentBuilder*\2c\20GrGLSLUniformHandler*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20GrXferProcessor\20const&\29 5359:Cr_z_deflateReset 5360:Cr_z_deflate 5361:Cr_z_crc32_z 5362:CoverageSetOpXP::onIsEqual\28GrXferProcessor\20const&\29\20const 5363:CircularRRectOp::~CircularRRectOp\28\29.1 5364:CircularRRectOp::~CircularRRectOp\28\29 5365:CircularRRectOp::CircularRRectOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20float\2c\20float\2c\20bool\29 5366:CircleOp::Make\28GrRecordingContext*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20float\2c\20GrStyle\20const&\2c\20CircleOp::ArcParams\20const*\29 5367:CircleOp::CircleOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20float\2c\20GrStyle\20const&\2c\20CircleOp::ArcParams\20const*\29 5368:CircleGeometryProcessor::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 5369:CheckDecBuffer 5370:CFF::path_procs_t::rlineto\28CFF::cff1_cs_interp_env_t&\2c\20cff1_extents_param_t&\29 5371:CFF::dict_interpreter_t\2c\20CFF::interp_env_t>::interpret\28CFF::cff1_private_dict_values_base_t&\29 5372:CFF::cff2_cs_opset_t::process_blend\28CFF::cff2_cs_interp_env_t&\2c\20cff2_extents_param_t&\29 5373:CFF::FDSelect3_4\2c\20OT::IntType>::sanitize\28hb_sanitize_context_t*\2c\20unsigned\20int\29\20const 5374:CFF::Charset::get_sid\28unsigned\20int\2c\20unsigned\20int\2c\20CFF::code_pair_t*\29\20const 5375:CFF::CFFIndex>::get_size\28\29\20const 5376:CFF::CFF2FDSelect::get_fd\28unsigned\20int\29\20const 5377:ButtCapDashedCircleOp::ButtCapDashedCircleOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 5378:BuildHuffmanTable 5379:AsWinding\28SkPath\20const&\2c\20SkPath*\29 5380:AngleWinding\28SkOpSpanBase*\2c\20SkOpSpanBase*\2c\20int*\2c\20bool*\29 5381:AddIntersectTs\28SkOpContour*\2c\20SkOpContour*\2c\20SkOpCoincidence*\29 5382:ActiveEdgeList::replace\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20unsigned\20short\2c\20unsigned\20short\2c\20unsigned\20short\29 5383:ActiveEdgeList::remove\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20unsigned\20short\2c\20unsigned\20short\29 5384:ActiveEdgeList::insert\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20unsigned\20short\2c\20unsigned\20short\29 5385:AAT::hb_aat_apply_context_t::return_t\20AAT::ChainSubtable::dispatch\28AAT::hb_aat_apply_context_t*\29\20const 5386:AAT::hb_aat_apply_context_t::return_t\20AAT::ChainSubtable::dispatch\28AAT::hb_aat_apply_context_t*\29\20const 5387:AAT::TrackData::sanitize\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 5388:AAT::TrackData::get_tracking\28void\20const*\2c\20float\29\20const 5389:AAT::StateTable::EntryData>::sanitize\28hb_sanitize_context_t*\2c\20unsigned\20int*\29\20const 5390:AAT::StateTable::EntryData>::sanitize\28hb_sanitize_context_t*\2c\20unsigned\20int*\29\20const 5391:AAT::StateTable::EntryData>::sanitize\28hb_sanitize_context_t*\2c\20unsigned\20int*\29\20const 5392:AAT::RearrangementSubtable::driver_context_t::transition\28AAT::StateTableDriver*\2c\20AAT::Entry\20const&\29 5393:AAT::NoncontextualSubtable::apply\28AAT::hb_aat_apply_context_t*\29\20const 5394:AAT::Lookup>::sanitize\28hb_sanitize_context_t*\29\20const 5395:AAT::Lookup>::get_value\28unsigned\20int\2c\20unsigned\20int\29\20const 5396:AAT::InsertionSubtable::driver_context_t::transition\28AAT::StateTableDriver::EntryData>*\2c\20AAT::Entry::EntryData>\20const&\29 5397:ycck_cmyk_convert 5398:ycc_rgb_convert 5399:ycc_rgb565_convert 5400:ycc_rgb565D_convert 5401:xyzd50_to_lab\28SkRGBA4f<\28SkAlphaType\292>\2c\20bool*\29 5402:xyzd50_to_hcl\28SkRGBA4f<\28SkAlphaType\292>\2c\20bool*\29 5403:wuffs_gif__decoder__tell_me_more 5404:wuffs_gif__decoder__set_report_metadata 5405:wuffs_gif__decoder__num_decoded_frame_configs 5406:wuffs_base__pixel_swizzler__xxxxxxxx__index_binary_alpha__src_over 5407:wuffs_base__pixel_swizzler__xxxxxxxx__index__src 5408:wuffs_base__pixel_swizzler__xxxx__index_binary_alpha__src_over 5409:wuffs_base__pixel_swizzler__xxxx__index__src 5410:wuffs_base__pixel_swizzler__xxx__index_binary_alpha__src_over 5411:wuffs_base__pixel_swizzler__xxx__index__src 5412:wuffs_base__pixel_swizzler__transparent_black_src_over 5413:wuffs_base__pixel_swizzler__transparent_black_src 5414:wuffs_base__pixel_swizzler__copy_1_1 5415:wuffs_base__pixel_swizzler__bgr_565__index_binary_alpha__src_over 5416:wuffs_base__pixel_swizzler__bgr_565__index__src 5417:webgl_get_gl_proc\28void*\2c\20char\20const*\29 5418:void\20std::__2::vector>::__emplace_back_slow_path\28char\20const*&\2c\20int&&\29 5419:void\20std::__2::vector>::__emplace_back_slow_path\20const&>\28unsigned\20char\20const&\2c\20sk_sp\20const&\29 5420:void\20mergeT\28void\20const*\2c\20int\2c\20unsigned\20char\20const*\2c\20int\2c\20void*\29 5421:void\20mergeT\28void\20const*\2c\20int\2c\20unsigned\20char\20const*\2c\20int\2c\20void*\29 5422:void\20emscripten::internal::raw_destructor>\28sk_sp*\29 5423:void\20emscripten::internal::raw_destructor\28SkVertices::Builder*\29 5424:void\20emscripten::internal::raw_destructor\28SkRuntimeEffect::TracedShader*\29 5425:void\20emscripten::internal::raw_destructor\28SkPictureRecorder*\29 5426:void\20emscripten::internal::raw_destructor\28SkPath*\29 5427:void\20emscripten::internal::raw_destructor\28SkPaint*\29 5428:void\20emscripten::internal::raw_destructor\28SkContourMeasureIter*\29 5429:void\20emscripten::internal::raw_destructor\28SimpleImageInfo*\29 5430:void\20emscripten::internal::MemberAccess::setWire\28SimpleTextStyle\20SimpleParagraphStyle::*\20const&\2c\20SimpleParagraphStyle&\2c\20SimpleTextStyle*\29 5431:void\20emscripten::internal::MemberAccess::setWire\28SimpleStrutStyle\20SimpleParagraphStyle::*\20const&\2c\20SimpleParagraphStyle&\2c\20SimpleStrutStyle*\29 5432:void\20emscripten::internal::MemberAccess>::setWire\28sk_sp\20SimpleImageInfo::*\20const&\2c\20SimpleImageInfo&\2c\20sk_sp*\29 5433:void\20const*\20emscripten::internal::getActualType\28skia::textlayout::TypefaceFontProvider*\29 5434:void\20const*\20emscripten::internal::getActualType\28skia::textlayout::ParagraphBuilderImpl*\29 5435:void\20const*\20emscripten::internal::getActualType\28skia::textlayout::Paragraph*\29 5436:void\20const*\20emscripten::internal::getActualType\28skia::textlayout::FontCollection*\29 5437:void\20const*\20emscripten::internal::getActualType\28SkVertices*\29 5438:void\20const*\20emscripten::internal::getActualType\28SkVertices::Builder*\29 5439:void\20const*\20emscripten::internal::getActualType\28SkTypeface*\29 5440:void\20const*\20emscripten::internal::getActualType\28SkTextBlob*\29 5441:void\20const*\20emscripten::internal::getActualType\28SkSurface*\29 5442:void\20const*\20emscripten::internal::getActualType\28SkShader*\29 5443:void\20const*\20emscripten::internal::getActualType\28SkSL::DebugTrace*\29 5444:void\20const*\20emscripten::internal::getActualType\28SkRuntimeEffect*\29 5445:void\20const*\20emscripten::internal::getActualType\28SkPictureRecorder*\29 5446:void\20const*\20emscripten::internal::getActualType\28SkPicture*\29 5447:void\20const*\20emscripten::internal::getActualType\28SkPathEffect*\29 5448:void\20const*\20emscripten::internal::getActualType\28SkPath*\29 5449:void\20const*\20emscripten::internal::getActualType\28SkPaint*\29 5450:void\20const*\20emscripten::internal::getActualType\28SkMaskFilter*\29 5451:void\20const*\20emscripten::internal::getActualType\28SkImageFilter*\29 5452:void\20const*\20emscripten::internal::getActualType\28SkImage*\29 5453:void\20const*\20emscripten::internal::getActualType\28SkFontMgr*\29 5454:void\20const*\20emscripten::internal::getActualType\28SkFont*\29 5455:void\20const*\20emscripten::internal::getActualType\28SkContourMeasureIter*\29 5456:void\20const*\20emscripten::internal::getActualType\28SkContourMeasure*\29 5457:void\20const*\20emscripten::internal::getActualType\28SkColorSpace*\29 5458:void\20const*\20emscripten::internal::getActualType\28SkColorFilter*\29 5459:void\20const*\20emscripten::internal::getActualType\28SkCanvas*\29 5460:void\20const*\20emscripten::internal::getActualType\28SkBlender*\29 5461:void\20const*\20emscripten::internal::getActualType\28SkAnimatedImage*\29 5462:void\20const*\20emscripten::internal::getActualType\28GrDirectContext*\29 5463:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5464:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5465:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5466:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5467:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5468:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5469:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5470:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5471:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5472:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5473:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5474:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5475:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5476:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5477:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5478:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5479:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5480:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5481:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5482:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5483:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5484:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5485:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5486:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5487:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5488:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5489:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5490:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5491:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5492:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5493:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5494:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5495:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5496:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5497:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5498:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5499:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5500:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5501:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5502:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5503:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5504:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5505:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5506:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5507:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5508:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5509:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5510:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5511:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5512:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5513:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5514:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5515:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5516:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5517:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5518:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5519:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5520:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5521:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5522:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5523:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5524:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5525:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5526:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5527:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5528:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5529:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5530:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5531:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5532:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5533:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5534:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5535:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5536:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5537:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5538:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5539:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5540:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5541:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5542:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5543:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5544:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5545:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5546:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5547:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5548:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5549:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5550:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5551:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5552:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5553:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5554:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5555:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5556:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5557:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5558:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 5559:void\20SkSwizzler::SkipLeadingGrayAlphaZerosThen<&swizzle_grayalpha_to_n32_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5560:void\20SkSwizzler::SkipLeadingGrayAlphaZerosThen<&swizzle_grayalpha_to_n32_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5561:void\20SkSwizzler::SkipLeadingGrayAlphaZerosThen<&fast_swizzle_grayalpha_to_n32_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5562:void\20SkSwizzler::SkipLeadingGrayAlphaZerosThen<&fast_swizzle_grayalpha_to_n32_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5563:void\20SkSwizzler::SkipLeading8888ZerosThen<&swizzle_rgba_to_rgba_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5564:void\20SkSwizzler::SkipLeading8888ZerosThen<&swizzle_rgba_to_bgra_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5565:void\20SkSwizzler::SkipLeading8888ZerosThen<&swizzle_rgba_to_bgra_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5566:void\20SkSwizzler::SkipLeading8888ZerosThen<&sample4\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5567:void\20SkSwizzler::SkipLeading8888ZerosThen<&fast_swizzle_rgba_to_rgba_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5568:void\20SkSwizzler::SkipLeading8888ZerosThen<&fast_swizzle_rgba_to_bgra_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5569:void\20SkSwizzler::SkipLeading8888ZerosThen<&fast_swizzle_rgba_to_bgra_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5570:void\20SkSwizzler::SkipLeading8888ZerosThen<©\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29>\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5571:virtual\20thunk\20to\20std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29.1 5572:virtual\20thunk\20to\20std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29 5573:virtual\20thunk\20to\20std::__2::basic_ostream>::~basic_ostream\28\29.1 5574:virtual\20thunk\20to\20std::__2::basic_ostream>::~basic_ostream\28\29 5575:virtual\20thunk\20to\20std::__2::basic_istream>::~basic_istream\28\29.1 5576:virtual\20thunk\20to\20std::__2::basic_istream>::~basic_istream\28\29 5577:virtual\20thunk\20to\20std::__2::basic_iostream>::~basic_iostream\28\29.1 5578:virtual\20thunk\20to\20std::__2::basic_iostream>::~basic_iostream\28\29 5579:virtual\20thunk\20to\20GrTextureRenderTargetProxy::~GrTextureRenderTargetProxy\28\29.1 5580:virtual\20thunk\20to\20GrTextureRenderTargetProxy::~GrTextureRenderTargetProxy\28\29 5581:virtual\20thunk\20to\20GrTextureRenderTargetProxy::onUninstantiatedGpuMemorySize\28\29\20const 5582:virtual\20thunk\20to\20GrTextureRenderTargetProxy::instantiate\28GrResourceProvider*\29 5583:virtual\20thunk\20to\20GrTextureRenderTargetProxy::createSurface\28GrResourceProvider*\29\20const 5584:virtual\20thunk\20to\20GrTextureRenderTargetProxy::callbackDesc\28\29\20const 5585:virtual\20thunk\20to\20GrTextureProxy::~GrTextureProxy\28\29.1 5586:virtual\20thunk\20to\20GrTextureProxy::~GrTextureProxy\28\29 5587:virtual\20thunk\20to\20GrTextureProxy::onUninstantiatedGpuMemorySize\28\29\20const 5588:virtual\20thunk\20to\20GrTextureProxy::instantiate\28GrResourceProvider*\29 5589:virtual\20thunk\20to\20GrTextureProxy::getUniqueKey\28\29\20const 5590:virtual\20thunk\20to\20GrTextureProxy::createSurface\28GrResourceProvider*\29\20const 5591:virtual\20thunk\20to\20GrTextureProxy::callbackDesc\28\29\20const 5592:virtual\20thunk\20to\20GrTextureProxy::asTextureProxy\28\29\20const 5593:virtual\20thunk\20to\20GrTextureProxy::asTextureProxy\28\29 5594:virtual\20thunk\20to\20GrTexture::onGpuMemorySize\28\29\20const 5595:virtual\20thunk\20to\20GrTexture::computeScratchKey\28skgpu::ScratchKey*\29\20const 5596:virtual\20thunk\20to\20GrTexture::asTexture\28\29\20const 5597:virtual\20thunk\20to\20GrTexture::asTexture\28\29 5598:virtual\20thunk\20to\20GrRenderTargetProxy::~GrRenderTargetProxy\28\29.1 5599:virtual\20thunk\20to\20GrRenderTargetProxy::~GrRenderTargetProxy\28\29 5600:virtual\20thunk\20to\20GrRenderTargetProxy::onUninstantiatedGpuMemorySize\28\29\20const 5601:virtual\20thunk\20to\20GrRenderTargetProxy::instantiate\28GrResourceProvider*\29 5602:virtual\20thunk\20to\20GrRenderTargetProxy::createSurface\28GrResourceProvider*\29\20const 5603:virtual\20thunk\20to\20GrRenderTargetProxy::callbackDesc\28\29\20const 5604:virtual\20thunk\20to\20GrRenderTargetProxy::asRenderTargetProxy\28\29\20const 5605:virtual\20thunk\20to\20GrRenderTargetProxy::asRenderTargetProxy\28\29 5606:virtual\20thunk\20to\20GrRenderTarget::onRelease\28\29 5607:virtual\20thunk\20to\20GrRenderTarget::onAbandon\28\29 5608:virtual\20thunk\20to\20GrRenderTarget::asRenderTarget\28\29\20const 5609:virtual\20thunk\20to\20GrRenderTarget::asRenderTarget\28\29 5610:virtual\20thunk\20to\20GrGLTextureRenderTarget::~GrGLTextureRenderTarget\28\29.1 5611:virtual\20thunk\20to\20GrGLTextureRenderTarget::~GrGLTextureRenderTarget\28\29 5612:virtual\20thunk\20to\20GrGLTextureRenderTarget::onRelease\28\29 5613:virtual\20thunk\20to\20GrGLTextureRenderTarget::onGpuMemorySize\28\29\20const 5614:virtual\20thunk\20to\20GrGLTextureRenderTarget::onAbandon\28\29 5615:virtual\20thunk\20to\20GrGLTextureRenderTarget::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 5616:virtual\20thunk\20to\20GrGLTexture::~GrGLTexture\28\29.1 5617:virtual\20thunk\20to\20GrGLTexture::~GrGLTexture\28\29 5618:virtual\20thunk\20to\20GrGLTexture::onRelease\28\29 5619:virtual\20thunk\20to\20GrGLTexture::onAbandon\28\29 5620:virtual\20thunk\20to\20GrGLTexture::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 5621:virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::~GrGLSLFragmentShaderBuilder\28\29.1 5622:virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::~GrGLSLFragmentShaderBuilder\28\29 5623:virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::onFinalize\28\29 5624:virtual\20thunk\20to\20GrGLRenderTarget::~GrGLRenderTarget\28\29.1 5625:virtual\20thunk\20to\20GrGLRenderTarget::~GrGLRenderTarget\28\29 5626:virtual\20thunk\20to\20GrGLRenderTarget::onRelease\28\29 5627:virtual\20thunk\20to\20GrGLRenderTarget::onGpuMemorySize\28\29\20const 5628:virtual\20thunk\20to\20GrGLRenderTarget::onAbandon\28\29 5629:virtual\20thunk\20to\20GrGLRenderTarget::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 5630:virtual\20thunk\20to\20GrGLRenderTarget::backendFormat\28\29\20const 5631:tt_vadvance_adjust 5632:tt_slot_init 5633:tt_size_select 5634:tt_size_reset_iterator 5635:tt_size_request 5636:tt_size_init 5637:tt_size_done 5638:tt_sbit_decoder_load_png 5639:tt_sbit_decoder_load_compound 5640:tt_sbit_decoder_load_byte_aligned 5641:tt_sbit_decoder_load_bit_aligned 5642:tt_property_set 5643:tt_property_get 5644:tt_name_ascii_from_utf16 5645:tt_name_ascii_from_other 5646:tt_hadvance_adjust 5647:tt_glyph_load 5648:tt_get_var_blend 5649:tt_get_interface 5650:tt_get_glyph_name 5651:tt_get_cmap_info 5652:tt_get_advances 5653:tt_face_set_sbit_strike 5654:tt_face_load_strike_metrics 5655:tt_face_load_sbit_image 5656:tt_face_load_sbit 5657:tt_face_load_post 5658:tt_face_load_pclt 5659:tt_face_load_os2 5660:tt_face_load_name 5661:tt_face_load_maxp 5662:tt_face_load_kern 5663:tt_face_load_hmtx 5664:tt_face_load_hhea 5665:tt_face_load_head 5666:tt_face_load_gasp 5667:tt_face_load_font_dir 5668:tt_face_load_cpal 5669:tt_face_load_colr 5670:tt_face_load_cmap 5671:tt_face_load_bhed 5672:tt_face_load_any 5673:tt_face_init 5674:tt_face_goto_table 5675:tt_face_get_paint_layers 5676:tt_face_get_paint 5677:tt_face_get_kerning 5678:tt_face_get_colr_layer 5679:tt_face_get_colr_glyph_paint 5680:tt_face_get_colorline_stops 5681:tt_face_get_color_glyph_clipbox 5682:tt_face_free_sbit 5683:tt_face_free_ps_names 5684:tt_face_free_name 5685:tt_face_free_cpal 5686:tt_face_free_colr 5687:tt_face_done 5688:tt_face_colr_blend_layer 5689:tt_driver_init 5690:tt_cvt_ready_iterator 5691:tt_cmap_unicode_init 5692:tt_cmap_unicode_char_next 5693:tt_cmap_unicode_char_index 5694:tt_cmap_init 5695:tt_cmap8_validate 5696:tt_cmap8_get_info 5697:tt_cmap8_char_next 5698:tt_cmap8_char_index 5699:tt_cmap6_validate 5700:tt_cmap6_get_info 5701:tt_cmap6_char_next 5702:tt_cmap6_char_index 5703:tt_cmap4_validate 5704:tt_cmap4_init 5705:tt_cmap4_get_info 5706:tt_cmap4_char_next 5707:tt_cmap4_char_index 5708:tt_cmap2_validate 5709:tt_cmap2_get_info 5710:tt_cmap2_char_next 5711:tt_cmap2_char_index 5712:tt_cmap14_variants 5713:tt_cmap14_variant_chars 5714:tt_cmap14_validate 5715:tt_cmap14_init 5716:tt_cmap14_get_info 5717:tt_cmap14_done 5718:tt_cmap14_char_variants 5719:tt_cmap14_char_var_isdefault 5720:tt_cmap14_char_var_index 5721:tt_cmap14_char_next 5722:tt_cmap13_validate 5723:tt_cmap13_get_info 5724:tt_cmap13_char_next 5725:tt_cmap13_char_index 5726:tt_cmap12_validate 5727:tt_cmap12_get_info 5728:tt_cmap12_char_next 5729:tt_cmap12_char_index 5730:tt_cmap10_validate 5731:tt_cmap10_get_info 5732:tt_cmap10_char_next 5733:tt_cmap10_char_index 5734:tt_cmap0_validate 5735:tt_cmap0_get_info 5736:tt_cmap0_char_next 5737:tt_cmap0_char_index 5738:transform_scanline_rgbA\28char*\2c\20char\20const*\2c\20int\2c\20int\29 5739:transform_scanline_memcpy\28char*\2c\20char\20const*\2c\20int\2c\20int\29 5740:transform_scanline_bgra_1010102_premul\28char*\2c\20char\20const*\2c\20int\2c\20int\29 5741:transform_scanline_bgra_1010102\28char*\2c\20char\20const*\2c\20int\2c\20int\29 5742:transform_scanline_bgr_101010x_xr\28char*\2c\20char\20const*\2c\20int\2c\20int\29 5743:transform_scanline_bgr_101010x\28char*\2c\20char\20const*\2c\20int\2c\20int\29 5744:transform_scanline_bgrA\28char*\2c\20char\20const*\2c\20int\2c\20int\29 5745:transform_scanline_RGBX\28char*\2c\20char\20const*\2c\20int\2c\20int\29 5746:transform_scanline_F32_premul\28char*\2c\20char\20const*\2c\20int\2c\20int\29 5747:transform_scanline_F32\28char*\2c\20char\20const*\2c\20int\2c\20int\29 5748:transform_scanline_F16_premul\28char*\2c\20char\20const*\2c\20int\2c\20int\29 5749:transform_scanline_F16\28char*\2c\20char\20const*\2c\20int\2c\20int\29 5750:transform_scanline_BGRX\28char*\2c\20char\20const*\2c\20int\2c\20int\29 5751:transform_scanline_BGRA\28char*\2c\20char\20const*\2c\20int\2c\20int\29 5752:transform_scanline_A8_to_GrayAlpha\28char*\2c\20char\20const*\2c\20int\2c\20int\29 5753:transform_scanline_565\28char*\2c\20char\20const*\2c\20int\2c\20int\29 5754:transform_scanline_444\28char*\2c\20char\20const*\2c\20int\2c\20int\29 5755:transform_scanline_4444\28char*\2c\20char\20const*\2c\20int\2c\20int\29 5756:transform_scanline_101010x\28char*\2c\20char\20const*\2c\20int\2c\20int\29 5757:transform_scanline_1010102_premul\28char*\2c\20char\20const*\2c\20int\2c\20int\29 5758:transform_scanline_1010102\28char*\2c\20char\20const*\2c\20int\2c\20int\29 5759:t2_hints_stems 5760:t2_hints_open 5761:t1_make_subfont 5762:t1_hints_stem 5763:t1_hints_open 5764:t1_decrypt 5765:t1_decoder_parse_metrics 5766:t1_decoder_init 5767:t1_decoder_done 5768:t1_cmap_unicode_init 5769:t1_cmap_unicode_char_next 5770:t1_cmap_unicode_char_index 5771:t1_cmap_std_done 5772:t1_cmap_std_char_next 5773:t1_cmap_std_char_index 5774:t1_cmap_standard_init 5775:t1_cmap_expert_init 5776:t1_cmap_custom_init 5777:t1_cmap_custom_done 5778:t1_cmap_custom_char_next 5779:t1_cmap_custom_char_index 5780:t1_builder_start_point 5781:t1_builder_init 5782:t1_builder_add_point1 5783:t1_builder_add_point 5784:t1_builder_add_contour 5785:swizzle_small_index_to_n32\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5786:swizzle_small_index_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5787:swizzle_rgba_to_rgba_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5788:swizzle_rgba_to_bgra_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5789:swizzle_rgba_to_bgra_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5790:swizzle_rgba16_to_rgba_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5791:swizzle_rgba16_to_rgba_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5792:swizzle_rgba16_to_bgra_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5793:swizzle_rgba16_to_bgra_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5794:swizzle_rgb_to_rgba\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5795:swizzle_rgb_to_bgra\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5796:swizzle_rgb_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5797:swizzle_rgb16_to_rgba\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5798:swizzle_rgb16_to_bgra\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5799:swizzle_rgb16_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5800:swizzle_mask32_to_rgba_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 5801:swizzle_mask32_to_rgba_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 5802:swizzle_mask32_to_rgba_opaque\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 5803:swizzle_mask32_to_bgra_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 5804:swizzle_mask32_to_bgra_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 5805:swizzle_mask32_to_bgra_opaque\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 5806:swizzle_mask32_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 5807:swizzle_mask24_to_rgba_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 5808:swizzle_mask24_to_rgba_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 5809:swizzle_mask24_to_rgba_opaque\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 5810:swizzle_mask24_to_bgra_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 5811:swizzle_mask24_to_bgra_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 5812:swizzle_mask24_to_bgra_opaque\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 5813:swizzle_mask24_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 5814:swizzle_mask16_to_rgba_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 5815:swizzle_mask16_to_rgba_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 5816:swizzle_mask16_to_rgba_opaque\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 5817:swizzle_mask16_to_bgra_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 5818:swizzle_mask16_to_bgra_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 5819:swizzle_mask16_to_bgra_opaque\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 5820:swizzle_mask16_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20SkMasks*\2c\20unsigned\20int\2c\20unsigned\20int\29 5821:swizzle_index_to_n32_skipZ\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5822:swizzle_index_to_n32\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5823:swizzle_index_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5824:swizzle_grayalpha_to_n32_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5825:swizzle_grayalpha_to_n32_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5826:swizzle_grayalpha_to_a8\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5827:swizzle_gray_to_n32\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5828:swizzle_gray_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5829:swizzle_cmyk_to_rgba\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5830:swizzle_cmyk_to_bgra\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5831:swizzle_cmyk_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5832:swizzle_bit_to_n32\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5833:swizzle_bit_to_grayscale\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5834:swizzle_bit_to_f16\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5835:swizzle_bit_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5836:swizzle_bgr_to_565\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 5837:string_read 5838:std::exception::what\28\29\20const 5839:std::bad_variant_access::what\28\29\20const 5840:std::bad_optional_access::what\28\29\20const 5841:std::bad_array_new_length::what\28\29\20const 5842:std::bad_alloc::what\28\29\20const 5843:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 5844:std::__2::unique_ptr>::operator=\5babi:v160004\5d\28std::__2::unique_ptr>&&\29 5845:std::__2::time_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20tm\20const*\2c\20char\2c\20char\29\20const 5846:std::__2::time_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20tm\20const*\2c\20char\2c\20char\29\20const 5847:std::__2::time_get>>::do_get_year\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 5848:std::__2::time_get>>::do_get_weekday\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 5849:std::__2::time_get>>::do_get_time\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 5850:std::__2::time_get>>::do_get_monthname\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 5851:std::__2::time_get>>::do_get_date\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 5852:std::__2::time_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\2c\20char\2c\20char\29\20const 5853:std::__2::time_get>>::do_get_year\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 5854:std::__2::time_get>>::do_get_weekday\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 5855:std::__2::time_get>>::do_get_time\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 5856:std::__2::time_get>>::do_get_monthname\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 5857:std::__2::time_get>>::do_get_date\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 5858:std::__2::time_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\2c\20char\2c\20char\29\20const 5859:std::__2::numpunct::~numpunct\28\29.1 5860:std::__2::numpunct::do_truename\28\29\20const 5861:std::__2::numpunct::do_grouping\28\29\20const 5862:std::__2::numpunct::do_falsename\28\29\20const 5863:std::__2::numpunct::~numpunct\28\29.1 5864:std::__2::numpunct::do_truename\28\29\20const 5865:std::__2::numpunct::do_thousands_sep\28\29\20const 5866:std::__2::numpunct::do_grouping\28\29\20const 5867:std::__2::numpunct::do_falsename\28\29\20const 5868:std::__2::numpunct::do_decimal_point\28\29\20const 5869:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20void\20const*\29\20const 5870:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20unsigned\20long\29\20const 5871:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20unsigned\20long\20long\29\20const 5872:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\29\20const 5873:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\20long\29\20const 5874:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\20double\29\20const 5875:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20double\29\20const 5876:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20bool\29\20const 5877:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20void\20const*\29\20const 5878:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20unsigned\20long\29\20const 5879:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20unsigned\20long\20long\29\20const 5880:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20long\29\20const 5881:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20long\20long\29\20const 5882:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20long\20double\29\20const 5883:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20double\29\20const 5884:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20bool\29\20const 5885:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20void*&\29\20const 5886:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20short&\29\20const 5887:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20long\20long&\29\20const 5888:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20long&\29\20const 5889:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20double&\29\20const 5890:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long&\29\20const 5891:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20float&\29\20const 5892:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20double&\29\20const 5893:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20bool&\29\20const 5894:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20void*&\29\20const 5895:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20short&\29\20const 5896:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20long\20long&\29\20const 5897:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20long&\29\20const 5898:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20double&\29\20const 5899:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long&\29\20const 5900:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20float&\29\20const 5901:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20double&\29\20const 5902:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20bool&\29\20const 5903:std::__2::money_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29\20const 5904:std::__2::money_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\20double\29\20const 5905:std::__2::money_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20char\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29\20const 5906:std::__2::money_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20char\2c\20long\20double\29\20const 5907:std::__2::money_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\29\20const 5908:std::__2::money_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20double&\29\20const 5909:std::__2::money_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\29\20const 5910:std::__2::money_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20double&\29\20const 5911:std::__2::messages::do_get\28long\2c\20int\2c\20int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29\20const 5912:std::__2::messages::do_get\28long\2c\20int\2c\20int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29\20const 5913:std::__2::locale::id::__init\28\29 5914:std::__2::locale::__imp::~__imp\28\29.1 5915:std::__2::ios_base::~ios_base\28\29.1 5916:std::__2::ctype::do_widen\28char\20const*\2c\20char\20const*\2c\20wchar_t*\29\20const 5917:std::__2::ctype::do_toupper\28wchar_t\29\20const 5918:std::__2::ctype::do_toupper\28wchar_t*\2c\20wchar_t\20const*\29\20const 5919:std::__2::ctype::do_tolower\28wchar_t\29\20const 5920:std::__2::ctype::do_tolower\28wchar_t*\2c\20wchar_t\20const*\29\20const 5921:std::__2::ctype::do_scan_not\28unsigned\20long\2c\20wchar_t\20const*\2c\20wchar_t\20const*\29\20const 5922:std::__2::ctype::do_scan_is\28unsigned\20long\2c\20wchar_t\20const*\2c\20wchar_t\20const*\29\20const 5923:std::__2::ctype::do_narrow\28wchar_t\2c\20char\29\20const 5924:std::__2::ctype::do_narrow\28wchar_t\20const*\2c\20wchar_t\20const*\2c\20char\2c\20char*\29\20const 5925:std::__2::ctype::do_is\28wchar_t\20const*\2c\20wchar_t\20const*\2c\20unsigned\20long*\29\20const 5926:std::__2::ctype::do_is\28unsigned\20long\2c\20wchar_t\29\20const 5927:std::__2::ctype::~ctype\28\29.1 5928:std::__2::ctype::do_widen\28char\20const*\2c\20char\20const*\2c\20char*\29\20const 5929:std::__2::ctype::do_toupper\28char\29\20const 5930:std::__2::ctype::do_toupper\28char*\2c\20char\20const*\29\20const 5931:std::__2::ctype::do_tolower\28char\29\20const 5932:std::__2::ctype::do_tolower\28char*\2c\20char\20const*\29\20const 5933:std::__2::ctype::do_narrow\28char\2c\20char\29\20const 5934:std::__2::ctype::do_narrow\28char\20const*\2c\20char\20const*\2c\20char\2c\20char*\29\20const 5935:std::__2::collate::do_transform\28wchar_t\20const*\2c\20wchar_t\20const*\29\20const 5936:std::__2::collate::do_hash\28wchar_t\20const*\2c\20wchar_t\20const*\29\20const 5937:std::__2::collate::do_compare\28wchar_t\20const*\2c\20wchar_t\20const*\2c\20wchar_t\20const*\2c\20wchar_t\20const*\29\20const 5938:std::__2::collate::do_transform\28char\20const*\2c\20char\20const*\29\20const 5939:std::__2::collate::do_hash\28char\20const*\2c\20char\20const*\29\20const 5940:std::__2::collate::do_compare\28char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\29\20const 5941:std::__2::codecvt::~codecvt\28\29.1 5942:std::__2::codecvt::do_unshift\28__mbstate_t&\2c\20char*\2c\20char*\2c\20char*&\29\20const 5943:std::__2::codecvt::do_out\28__mbstate_t&\2c\20wchar_t\20const*\2c\20wchar_t\20const*\2c\20wchar_t\20const*&\2c\20char*\2c\20char*\2c\20char*&\29\20const 5944:std::__2::codecvt::do_max_length\28\29\20const 5945:std::__2::codecvt::do_length\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20unsigned\20long\29\20const 5946:std::__2::codecvt::do_in\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*&\2c\20wchar_t*\2c\20wchar_t*\2c\20wchar_t*&\29\20const 5947:std::__2::codecvt::do_encoding\28\29\20const 5948:std::__2::codecvt::do_length\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20unsigned\20long\29\20const 5949:std::__2::basic_stringbuf\2c\20std::__2::allocator>::~basic_stringbuf\28\29.1 5950:std::__2::basic_stringbuf\2c\20std::__2::allocator>::underflow\28\29 5951:std::__2::basic_stringbuf\2c\20std::__2::allocator>::seekpos\28std::__2::fpos<__mbstate_t>\2c\20unsigned\20int\29 5952:std::__2::basic_stringbuf\2c\20std::__2::allocator>::seekoff\28long\20long\2c\20std::__2::ios_base::seekdir\2c\20unsigned\20int\29 5953:std::__2::basic_stringbuf\2c\20std::__2::allocator>::pbackfail\28int\29 5954:std::__2::basic_stringbuf\2c\20std::__2::allocator>::overflow\28int\29 5955:std::__2::basic_streambuf>::~basic_streambuf\28\29.1 5956:std::__2::basic_streambuf>::xsputn\28char\20const*\2c\20long\29 5957:std::__2::basic_streambuf>::xsgetn\28char*\2c\20long\29 5958:std::__2::basic_streambuf>::uflow\28\29 5959:std::__2::basic_streambuf>::setbuf\28char*\2c\20long\29 5960:std::__2::basic_streambuf>::seekpos\28std::__2::fpos<__mbstate_t>\2c\20unsigned\20int\29 5961:std::__2::basic_streambuf>::seekoff\28long\20long\2c\20std::__2::ios_base::seekdir\2c\20unsigned\20int\29 5962:std::__2::bad_function_call::what\28\29\20const 5963:std::__2::__time_get_c_storage::__x\28\29\20const 5964:std::__2::__time_get_c_storage::__weeks\28\29\20const 5965:std::__2::__time_get_c_storage::__r\28\29\20const 5966:std::__2::__time_get_c_storage::__months\28\29\20const 5967:std::__2::__time_get_c_storage::__c\28\29\20const 5968:std::__2::__time_get_c_storage::__am_pm\28\29\20const 5969:std::__2::__time_get_c_storage::__X\28\29\20const 5970:std::__2::__time_get_c_storage::__x\28\29\20const 5971:std::__2::__time_get_c_storage::__weeks\28\29\20const 5972:std::__2::__time_get_c_storage::__r\28\29\20const 5973:std::__2::__time_get_c_storage::__months\28\29\20const 5974:std::__2::__time_get_c_storage::__c\28\29\20const 5975:std::__2::__time_get_c_storage::__am_pm\28\29\20const 5976:std::__2::__time_get_c_storage::__X\28\29\20const 5977:std::__2::__shared_ptr_pointer<_IO_FILE*\2c\20void\20\28*\29\28_IO_FILE*\29\2c\20std::__2::allocator<_IO_FILE>>::__on_zero_shared\28\29 5978:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 5979:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 5980:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 5981:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 5982:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 5983:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 5984:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 5985:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 5986:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 5987:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 5988:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 5989:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 5990:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 5991:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 5992:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 5993:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 5994:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 5995:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 5996:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 5997:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 5998:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 5999:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 6000:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 6001:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 6002:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 6003:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 6004:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 6005:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 6006:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 6007:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::operator\28\29\28skia::textlayout::Cluster\20const*&&\2c\20unsigned\20long&&\2c\20bool&&\29 6008:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::__clone\28std::__2::__function::__base*\29\20const 6009:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::__clone\28\29\20const 6010:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::operator\28\29\28skia::textlayout::Cluster\20const*&&\2c\20unsigned\20long&&\2c\20bool&&\29 6011:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::__clone\28std::__2::__function::__base*\29\20const 6012:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::__clone\28\29\20const 6013:std::__2::__function::__func\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0\2c\20std::__2::allocator\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 6014:std::__2::__function::__func\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0\2c\20std::__2::allocator\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 6015:std::__2::__function::__func\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0\2c\20std::__2::allocator\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 6016:std::__2::__function::__func\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 6017:std::__2::__function::__func\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 6018:std::__2::__function::__func\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 6019:std::__2::__function::__func>&\29::$_0\2c\20std::__2::allocator>&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 6020:std::__2::__function::__func>&\29::$_0\2c\20std::__2::allocator>&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 6021:std::__2::__function::__func>&\29::$_0\2c\20std::__2::allocator>&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 6022:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 6023:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 6024:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 6025:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 6026:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 6027:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 6028:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 6029:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 6030:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 6031:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 6032:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 6033:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 6034:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 6035:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 6036:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 6037:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 6038:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 6039:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 6040:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 6041:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 6042:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 6043:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 6044:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 6045:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 6046:std::__2::__function::__func\20const&\29::$_0\2c\20std::__2::allocator\20const&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 6047:std::__2::__function::__func\20const&\29::$_0\2c\20std::__2::allocator\20const&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 6048:std::__2::__function::__func\20const&\29::$_0\2c\20std::__2::allocator\20const&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 6049:std::__2::__function::__func\20const&\29::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\20const&\29::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 6050:std::__2::__function::__func\20const&\29::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\20const&\29::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 6051:std::__2::__function::__func\20const&\29::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\20const&\29::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 6052:std::__2::__function::__func\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkPoint\2c\20SkPoint\2c\20skia::textlayout::InternalLineMetrics\2c\20bool\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::SkRange&&\2c\20skia::textlayout::SkRange&&\2c\20skia::textlayout::SkRange&&\2c\20skia::textlayout::SkRange&&\2c\20float&&\2c\20unsigned\20long&&\2c\20unsigned\20long&&\2c\20SkPoint&&\2c\20SkPoint&&\2c\20skia::textlayout::InternalLineMetrics&&\2c\20bool&&\29 6053:std::__2::__function::__func\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkPoint\2c\20SkPoint\2c\20skia::textlayout::InternalLineMetrics\2c\20bool\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkPoint\2c\20SkPoint\2c\20skia::textlayout::InternalLineMetrics\2c\20bool\29>*\29\20const 6054:std::__2::__function::__func\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkPoint\2c\20SkPoint\2c\20skia::textlayout::InternalLineMetrics\2c\20bool\29>::__clone\28\29\20const 6055:std::__2::__function::__func\2c\20void\20\28skia::textlayout::Cluster*\29>::operator\28\29\28skia::textlayout::Cluster*&&\29 6056:std::__2::__function::__func\2c\20void\20\28skia::textlayout::Cluster*\29>::__clone\28std::__2::__function::__base*\29\20const 6057:std::__2::__function::__func\2c\20void\20\28skia::textlayout::Cluster*\29>::__clone\28\29\20const 6058:std::__2::__function::__func\2c\20void\20\28skia::textlayout::ParagraphImpl*\2c\20char\20const*\2c\20bool\29>::__clone\28std::__2::__function::__base*\29\20const 6059:std::__2::__function::__func\2c\20void\20\28skia::textlayout::ParagraphImpl*\2c\20char\20const*\2c\20bool\29>::__clone\28\29\20const 6060:std::__2::__function::__func\2c\20float\20\28skia::textlayout::SkRange\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20SkSpan&&\2c\20float&\2c\20unsigned\20long&&\2c\20unsigned\20char&&\29 6061:std::__2::__function::__func\2c\20float\20\28skia::textlayout::SkRange\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29>::__clone\28std::__2::__function::__base\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29>*\29\20const 6062:std::__2::__function::__func\2c\20float\20\28skia::textlayout::SkRange\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29>::__clone\28\29\20const 6063:std::__2::__function::__func\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29\2c\20std::__2::allocator\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29>\2c\20void\20\28skia::textlayout::Block\2c\20skia_private::TArray\29>::operator\28\29\28skia::textlayout::Block&&\2c\20skia_private::TArray&&\29 6064:std::__2::__function::__func\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29\2c\20std::__2::allocator\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29>\2c\20void\20\28skia::textlayout::Block\2c\20skia_private::TArray\29>::__clone\28std::__2::__function::__base\29>*\29\20const 6065:std::__2::__function::__func\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29\2c\20std::__2::allocator\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29>\2c\20void\20\28skia::textlayout::Block\2c\20skia_private::TArray\29>::__clone\28\29\20const 6066:std::__2::__function::__func\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29::operator\28\29\28skia::textlayout::Block\2c\20skia_private::TArray\29\20const::'lambda'\28sk_sp\29\2c\20std::__2::allocator\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29::operator\28\29\28skia::textlayout::Block\2c\20skia_private::TArray\29\20const::'lambda'\28sk_sp\29>\2c\20skia::textlayout::OneLineShaper::Resolved\20\28sk_sp\29>::operator\28\29\28sk_sp&&\29 6067:std::__2::__function::__func\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29::operator\28\29\28skia::textlayout::Block\2c\20skia_private::TArray\29\20const::'lambda'\28sk_sp\29\2c\20std::__2::allocator\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29::operator\28\29\28skia::textlayout::Block\2c\20skia_private::TArray\29\20const::'lambda'\28sk_sp\29>\2c\20skia::textlayout::OneLineShaper::Resolved\20\28sk_sp\29>::__clone\28std::__2::__function::__base\29>*\29\20const 6068:std::__2::__function::__func\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29::operator\28\29\28skia::textlayout::Block\2c\20skia_private::TArray\29\20const::'lambda'\28sk_sp\29\2c\20std::__2::allocator\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29::operator\28\29\28skia::textlayout::Block\2c\20skia_private::TArray\29\20const::'lambda'\28sk_sp\29>\2c\20skia::textlayout::OneLineShaper::Resolved\20\28sk_sp\29>::__clone\28\29\20const 6069:std::__2::__function::__func\2c\20void\20\28skia::textlayout::SkRange\29>::operator\28\29\28skia::textlayout::SkRange&&\29 6070:std::__2::__function::__func\2c\20void\20\28skia::textlayout::SkRange\29>::__clone\28std::__2::__function::__base\29>*\29\20const 6071:std::__2::__function::__func\2c\20void\20\28skia::textlayout::SkRange\29>::__clone\28\29\20const 6072:std::__2::__function::__func\2c\20void\20\28sktext::gpu::AtlasSubRun\20const*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20sktext::gpu::RendererData\29>::operator\28\29\28sktext::gpu::AtlasSubRun\20const*&&\2c\20SkPoint&&\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20sktext::gpu::RendererData&&\29 6073:std::__2::__function::__func\2c\20void\20\28sktext::gpu::AtlasSubRun\20const*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20sktext::gpu::RendererData\29>::__clone\28std::__2::__function::__base\2c\20sktext::gpu::RendererData\29>*\29\20const 6074:std::__2::__function::__func\2c\20void\20\28sktext::gpu::AtlasSubRun\20const*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20sktext::gpu::RendererData\29>::__clone\28\29\20const 6075:std::__2::__function::__func\2c\20void\20\28void*\2c\20void\20const*\29>::~__func\28\29.1 6076:std::__2::__function::__func\2c\20void\20\28void*\2c\20void\20const*\29>::~__func\28\29 6077:std::__2::__function::__func\2c\20void\20\28void*\2c\20void\20const*\29>::operator\28\29\28void*&&\2c\20void\20const*&&\29 6078:std::__2::__function::__func\2c\20void\20\28void*\2c\20void\20const*\29>::destroy_deallocate\28\29 6079:std::__2::__function::__func\2c\20void\20\28void*\2c\20void\20const*\29>::destroy\28\29 6080:std::__2::__function::__func\2c\20void\20\28void*\2c\20void\20const*\29>::__clone\28std::__2::__function::__base*\29\20const 6081:std::__2::__function::__func\2c\20void\20\28void*\2c\20void\20const*\29>::__clone\28\29\20const 6082:std::__2::__function::__func\2c\20void\20\28\29>::operator\28\29\28\29 6083:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 6084:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28\29\20const 6085:std::__2::__function::__func\2c\20void\20\28\29>::operator\28\29\28\29 6086:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 6087:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28\29\20const 6088:std::__2::__function::__func\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::operator\28\29\28GrSurfaceProxy*&&\2c\20skgpu::Mipmapped&&\29 6089:std::__2::__function::__func\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28std::__2::__function::__base*\29\20const 6090:std::__2::__function::__func\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28\29\20const 6091:std::__2::__function::__func>\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0\2c\20std::__2::allocator>\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::operator\28\29\28GrSurfaceProxy*&&\2c\20skgpu::Mipmapped&&\29 6092:std::__2::__function::__func>\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0\2c\20std::__2::allocator>\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28std::__2::__function::__base*\29\20const 6093:std::__2::__function::__func>\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0\2c\20std::__2::allocator>\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28\29\20const 6094:std::__2::__function::__func>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0\2c\20std::__2::allocator>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::operator\28\29\28GrSurfaceProxy*&&\2c\20skgpu::Mipmapped&&\29 6095:std::__2::__function::__func>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0\2c\20std::__2::allocator>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28std::__2::__function::__base*\29\20const 6096:std::__2::__function::__func>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0\2c\20std::__2::allocator>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28\29\20const 6097:std::__2::__function::__func\2c\20void\20\28sktext::gpu::AtlasSubRun\20const*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20sktext::gpu::RendererData\29>::operator\28\29\28sktext::gpu::AtlasSubRun\20const*&&\2c\20SkPoint&&\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20sktext::gpu::RendererData&&\29 6098:std::__2::__function::__func\2c\20void\20\28sktext::gpu::AtlasSubRun\20const*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20sktext::gpu::RendererData\29>::__clone\28std::__2::__function::__base\2c\20sktext::gpu::RendererData\29>*\29\20const 6099:std::__2::__function::__func\2c\20void\20\28sktext::gpu::AtlasSubRun\20const*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20sktext::gpu::RendererData\29>::__clone\28\29\20const 6100:std::__2::__function::__func\2c\20std::__2::tuple\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>::operator\28\29\28sktext::gpu::GlyphVector*&&\2c\20int&&\2c\20int&&\2c\20skgpu::MaskFormat&&\2c\20int&&\29 6101:std::__2::__function::__func\2c\20std::__2::tuple\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>::__clone\28std::__2::__function::__base\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>*\29\20const 6102:std::__2::__function::__func\2c\20std::__2::tuple\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>::__clone\28\29\20const 6103:std::__2::__function::__func>\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\29::$_0\2c\20std::__2::allocator>\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\29::$_0>\2c\20bool\20\28GrSurfaceProxy\20const*\29>::operator\28\29\28GrSurfaceProxy\20const*&&\29 6104:std::__2::__function::__func>\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\29::$_0\2c\20std::__2::allocator>\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\29::$_0>\2c\20bool\20\28GrSurfaceProxy\20const*\29>::__clone\28std::__2::__function::__base*\29\20const 6105:std::__2::__function::__func>\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\29::$_0\2c\20std::__2::allocator>\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\29::$_0>\2c\20bool\20\28GrSurfaceProxy\20const*\29>::__clone\28\29\20const 6106:std::__2::__function::__func\2c\20void\20\28int\2c\20char\20const*\29>::operator\28\29\28int&&\2c\20char\20const*&&\29 6107:std::__2::__function::__func\2c\20void\20\28int\2c\20char\20const*\29>::__clone\28std::__2::__function::__base*\29\20const 6108:std::__2::__function::__func\2c\20void\20\28int\2c\20char\20const*\29>::__clone\28\29\20const 6109:std::__2::__function::__func\28GrOp\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29\2c\20std::__2::allocator\28GrOp\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28std::__2::__function::__base*\29\20const 6110:std::__2::__function::__func\28GrOp\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29\2c\20std::__2::allocator\28GrOp\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28\29\20const 6111:std::__2::__function::__func\28GrFragmentProcessor\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29\2c\20std::__2::allocator\28GrFragmentProcessor\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28std::__2::__function::__base*\29\20const 6112:std::__2::__function::__func\28GrFragmentProcessor\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29\2c\20std::__2::allocator\28GrFragmentProcessor\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28\29\20const 6113:std::__2::__function::__func<\28anonymous\20namespace\29::render_sw_mask\28GrRecordingContext*\2c\20SkIRect\20const&\2c\20skgpu::ganesh::ClipStack::Element\20const**\2c\20int\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::render_sw_mask\28GrRecordingContext*\2c\20SkIRect\20const&\2c\20skgpu::ganesh::ClipStack::Element\20const**\2c\20int\29::$_0>\2c\20void\20\28\29>::operator\28\29\28\29 6114:std::__2::__function::__func<\28anonymous\20namespace\29::render_sw_mask\28GrRecordingContext*\2c\20SkIRect\20const&\2c\20skgpu::ganesh::ClipStack::Element\20const**\2c\20int\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::render_sw_mask\28GrRecordingContext*\2c\20SkIRect\20const&\2c\20skgpu::ganesh::ClipStack::Element\20const**\2c\20int\29::$_0>\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 6115:std::__2::__function::__func<\28anonymous\20namespace\29::render_sw_mask\28GrRecordingContext*\2c\20SkIRect\20const&\2c\20skgpu::ganesh::ClipStack::Element\20const**\2c\20int\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::render_sw_mask\28GrRecordingContext*\2c\20SkIRect\20const&\2c\20skgpu::ganesh::ClipStack::Element\20const**\2c\20int\29::$_0>\2c\20void\20\28\29>::__clone\28\29\20const 6116:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_1\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_1>\2c\20void\20\28\29>::operator\28\29\28\29 6117:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_1\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_1>\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 6118:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_1\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_1>\2c\20void\20\28\29>::__clone\28\29\20const 6119:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0>\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 6120:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0>\2c\20void\20\28\29>::__clone\28\29\20const 6121:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0>\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 6122:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0>\2c\20void\20\28\29>::__clone\28\29\20const 6123:std::__2::__function::__func<\28anonymous\20namespace\29::MeshOp::visitProxies\28std::__2::function\20const&\29\20const::'lambda'\28GrTextureEffect\20const&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshOp::visitProxies\28std::__2::function\20const&\29\20const::'lambda'\28GrTextureEffect\20const&\29>\2c\20void\20\28GrTextureEffect\20const&\29>::operator\28\29\28GrTextureEffect\20const&\29 6124:std::__2::__function::__func<\28anonymous\20namespace\29::MeshOp::visitProxies\28std::__2::function\20const&\29\20const::'lambda'\28GrTextureEffect\20const&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshOp::visitProxies\28std::__2::function\20const&\29\20const::'lambda'\28GrTextureEffect\20const&\29>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 6125:std::__2::__function::__func<\28anonymous\20namespace\29::MeshOp::visitProxies\28std::__2::function\20const&\29\20const::'lambda'\28GrTextureEffect\20const&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshOp::visitProxies\28std::__2::function\20const&\29\20const::'lambda'\28GrTextureEffect\20const&\29>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28\29\20const 6126:std::__2::__function::__func<\28anonymous\20namespace\29::MeshOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29::$_0>\2c\20void\20\28GrTextureEffect\20const&\29>::operator\28\29\28GrTextureEffect\20const&\29 6127:std::__2::__function::__func<\28anonymous\20namespace\29::MeshOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29::$_0>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 6128:std::__2::__function::__func<\28anonymous\20namespace\29::MeshOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29::$_0>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28\29\20const 6129:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::MeshGP\28sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28GrTextureEffect\20const&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::MeshGP\28sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28GrTextureEffect\20const&\29>\2c\20void\20\28GrTextureEffect\20const&\29>::operator\28\29\28GrTextureEffect\20const&\29 6130:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::MeshGP\28sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28GrTextureEffect\20const&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::MeshGP\28sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28GrTextureEffect\20const&\29>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 6131:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::MeshGP\28sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28GrTextureEffect\20const&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::MeshGP\28sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28GrTextureEffect\20const&\29>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28\29\20const 6132:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::operator\28\29\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29 6133:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28std::__2::__function::__base*\29\20const 6134:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28\29\20const 6135:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::operator\28\29\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29 6136:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28std::__2::__function::__base*\29\20const 6137:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28\29\20const 6138:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28\29>::~__func\28\29.1 6139:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28\29>::~__func\28\29 6140:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28\29>::operator\28\29\28\29 6141:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28\29>::destroy_deallocate\28\29 6142:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28\29>::destroy\28\29 6143:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 6144:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28\29>::__clone\28\29\20const 6145:std::__2::__function::__func\2c\20void\20\28int\2c\20char\20const*\29>::operator\28\29\28int&&\2c\20char\20const*&&\29 6146:std::__2::__function::__func\2c\20void\20\28int\2c\20char\20const*\29>::__clone\28std::__2::__function::__base*\29\20const 6147:std::__2::__function::__func\2c\20void\20\28int\2c\20char\20const*\29>::__clone\28\29\20const 6148:std::__2::__function::__func\2c\20void\20\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29>::operator\28\29\28unsigned\20long&&\2c\20unsigned\20long&&\2c\20unsigned\20long&&\2c\20unsigned\20long&&\29 6149:std::__2::__function::__func\2c\20void\20\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29>::__clone\28std::__2::__function::__base*\29\20const 6150:std::__2::__function::__func\2c\20void\20\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29>::__clone\28\29\20const 6151:std::__2::__function::__func\2c\20void\20\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29>::__clone\28std::__2::__function::__base*\29\20const 6152:std::__2::__function::__func\2c\20void\20\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29>::__clone\28\29\20const 6153:std::__2::__function::__func\2c\20void\20\28SkVertices\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\2c\20float\2c\20float\2c\20bool\29>::operator\28\29\28SkVertices\20const*&&\2c\20SkBlendMode&&\2c\20SkPaint\20const&\2c\20float&&\2c\20float&&\2c\20bool&&\29 6154:std::__2::__function::__func\2c\20void\20\28SkVertices\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\2c\20float\2c\20float\2c\20bool\29>::__clone\28std::__2::__function::__base*\29\20const 6155:std::__2::__function::__func\2c\20void\20\28SkVertices\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\2c\20float\2c\20float\2c\20bool\29>::__clone\28\29\20const 6156:std::__2::__function::__func\2c\20void\20\28SkIRect\20const&\29>::operator\28\29\28SkIRect\20const&\29 6157:std::__2::__function::__func\2c\20void\20\28SkIRect\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 6158:std::__2::__function::__func\2c\20void\20\28SkIRect\20const&\29>::__clone\28\29\20const 6159:std::__2::__function::__func\2c\20SkCodec::Result\20\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int\29>::operator\28\29\28SkImageInfo\20const&\2c\20void*&&\2c\20unsigned\20long&&\2c\20SkCodec::Options\20const&\2c\20int&&\29 6160:std::__2::__function::__func\2c\20SkCodec::Result\20\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int\29>::__clone\28std::__2::__function::__base*\29\20const 6161:std::__2::__function::__func\2c\20SkCodec::Result\20\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int\29>::__clone\28\29\20const 6162:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::~__func\28\29.1 6163:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::~__func\28\29 6164:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::operator\28\29\28GrResourceProvider*&&\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29 6165:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::destroy_deallocate\28\29 6166:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::destroy\28\29 6167:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 6168:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28\29\20const 6169:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::~__func\28\29.1 6170:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::~__func\28\29 6171:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::operator\28\29\28GrResourceProvider*&&\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29 6172:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::destroy_deallocate\28\29 6173:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::destroy\28\29 6174:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 6175:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28\29\20const 6176:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::~__func\28\29.1 6177:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::~__func\28\29 6178:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::operator\28\29\28GrResourceProvider*&&\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29 6179:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::destroy_deallocate\28\29 6180:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::destroy\28\29 6181:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 6182:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28\29\20const 6183:std::__2::__function::__func&\29>&\2c\20bool\29::$_0\2c\20std::__2::allocator&\29>&\2c\20bool\29::$_0>\2c\20bool\20\28GrTextureProxy*\2c\20SkIRect\2c\20GrColorType\2c\20void\20const*\2c\20unsigned\20long\29>::operator\28\29\28GrTextureProxy*&&\2c\20SkIRect&&\2c\20GrColorType&&\2c\20void\20const*&&\2c\20unsigned\20long&&\29 6184:std::__2::__function::__func&\29>&\2c\20bool\29::$_0\2c\20std::__2::allocator&\29>&\2c\20bool\29::$_0>\2c\20bool\20\28GrTextureProxy*\2c\20SkIRect\2c\20GrColorType\2c\20void\20const*\2c\20unsigned\20long\29>::__clone\28std::__2::__function::__base*\29\20const 6185:std::__2::__function::__func&\29>&\2c\20bool\29::$_0\2c\20std::__2::allocator&\29>&\2c\20bool\29::$_0>\2c\20bool\20\28GrTextureProxy*\2c\20SkIRect\2c\20GrColorType\2c\20void\20const*\2c\20unsigned\20long\29>::__clone\28\29\20const 6186:std::__2::__function::__func*\29::$_0\2c\20std::__2::allocator*\29::$_0>\2c\20void\20\28GrBackendTexture\29>::operator\28\29\28GrBackendTexture&&\29 6187:std::__2::__function::__func*\29::$_0\2c\20std::__2::allocator*\29::$_0>\2c\20void\20\28GrBackendTexture\29>::__clone\28std::__2::__function::__base*\29\20const 6188:std::__2::__function::__func*\29::$_0\2c\20std::__2::allocator*\29::$_0>\2c\20void\20\28GrBackendTexture\29>::__clone\28\29\20const 6189:std::__2::__function::__func\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::operator\28\29\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29 6190:std::__2::__function::__func\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28std::__2::__function::__base*\29\20const 6191:std::__2::__function::__func\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28\29\20const 6192:std::__2::__function::__func\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::operator\28\29\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29 6193:std::__2::__function::__func\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28std::__2::__function::__base*\29\20const 6194:std::__2::__function::__func\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28\29\20const 6195:std::__2::__function::__func\2c\20void\20\28GrTextureEffect\20const&\29>::operator\28\29\28GrTextureEffect\20const&\29 6196:std::__2::__function::__func\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 6197:std::__2::__function::__func\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28\29\20const 6198:std::__2::__function::__func\2c\20void\20\28\29>::operator\28\29\28\29 6199:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 6200:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28\29\20const 6201:std::__2::__function::__func\20const&\29\20const::$_0\2c\20std::__2::allocator\20const&\29\20const::$_0>\2c\20void\20\28GrTextureEffect\20const&\29>::operator\28\29\28GrTextureEffect\20const&\29 6202:std::__2::__function::__func\20const&\29\20const::$_0\2c\20std::__2::allocator\20const&\29\20const::$_0>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 6203:std::__2::__function::__func\20const&\29\20const::$_0\2c\20std::__2::allocator\20const&\29\20const::$_0>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28\29\20const 6204:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::operator\28\29\28GrResourceProvider*&&\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29 6205:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 6206:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28\29\20const 6207:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::~__func\28\29.1 6208:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::~__func\28\29 6209:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::__clone\28std::__2::__function::__base&\29>*\29\20const 6210:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::__clone\28\29\20const 6211:std::__2::__function::__func\2c\20void\20\28std::__2::function&\29>::~__func\28\29.1 6212:std::__2::__function::__func\2c\20void\20\28std::__2::function&\29>::~__func\28\29 6213:std::__2::__function::__func\2c\20void\20\28std::__2::function&\29>::__clone\28std::__2::__function::__base&\29>*\29\20const 6214:std::__2::__function::__func\2c\20void\20\28std::__2::function&\29>::__clone\28\29\20const 6215:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::operator\28\29\28std::__2::function&\29 6216:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::__clone\28std::__2::__function::__base&\29>*\29\20const 6217:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::__clone\28\29\20const 6218:std::__2::__function::__func\2c\20void\20\28int\2c\20skia::textlayout::Paragraph::VisitorInfo\20const*\29>::operator\28\29\28int&&\2c\20skia::textlayout::Paragraph::VisitorInfo\20const*&&\29 6219:std::__2::__function::__func\2c\20void\20\28int\2c\20skia::textlayout::Paragraph::VisitorInfo\20const*\29>::__clone\28std::__2::__function::__base*\29\20const 6220:std::__2::__function::__func\2c\20void\20\28int\2c\20skia::textlayout::Paragraph::VisitorInfo\20const*\29>::__clone\28\29\20const 6221:start_pass_upsample 6222:start_pass_phuff_decoder 6223:start_pass_merged_upsample 6224:start_pass_main 6225:start_pass_huff_decoder 6226:start_pass_dpost 6227:start_pass_2_quant 6228:start_pass_1_quant 6229:start_pass 6230:start_output_pass 6231:start_input_pass.1 6232:stackSave 6233:stackRestore 6234:srgb_to_hwb\28SkRGBA4f<\28SkAlphaType\292>\2c\20bool*\29 6235:srgb_to_hsl\28SkRGBA4f<\28SkAlphaType\292>\2c\20bool*\29 6236:srcover_p\28unsigned\20char\2c\20unsigned\20char\29 6237:sn_write 6238:sktext::gpu::post_purge_blob_message\28unsigned\20int\2c\20unsigned\20int\29 6239:sktext::gpu::VertexFiller::isLCD\28\29\20const 6240:sktext::gpu::TextBlob::~TextBlob\28\29.1 6241:sktext::gpu::TextBlob::~TextBlob\28\29 6242:sktext::gpu::SubRun::~SubRun\28\29 6243:sktext::gpu::SlugImpl::~SlugImpl\28\29.1 6244:sktext::gpu::SlugImpl::~SlugImpl\28\29 6245:sktext::gpu::SlugImpl::sourceBounds\28\29\20const 6246:sktext::gpu::SlugImpl::sourceBoundsWithOrigin\28\29\20const 6247:sktext::gpu::SlugImpl::doFlatten\28SkWriteBuffer&\29\20const 6248:sktext::gpu::SDFMaskFilterImpl::getTypeName\28\29\20const 6249:sktext::gpu::SDFMaskFilterImpl::filterMask\28SkMaskBuilder*\2c\20SkMask\20const&\2c\20SkMatrix\20const&\2c\20SkIPoint*\29\20const 6250:sktext::gpu::SDFMaskFilterImpl::computeFastBounds\28SkRect\20const&\2c\20SkRect*\29\20const 6251:skip_variable 6252:skif::\28anonymous\20namespace\29::RasterBackend::~RasterBackend\28\29 6253:skif::\28anonymous\20namespace\29::RasterBackend::makeImage\28SkIRect\20const&\2c\20sk_sp\29\20const 6254:skif::\28anonymous\20namespace\29::RasterBackend::makeDevice\28SkISize\2c\20sk_sp\2c\20SkSurfaceProps\20const*\29\20const 6255:skif::\28anonymous\20namespace\29::RasterBackend::getCachedBitmap\28SkBitmap\20const&\29\20const 6256:skif::\28anonymous\20namespace\29::GaneshBackend::~GaneshBackend\28\29.1 6257:skif::\28anonymous\20namespace\29::GaneshBackend::~GaneshBackend\28\29 6258:skif::\28anonymous\20namespace\29::GaneshBackend::makeImage\28SkIRect\20const&\2c\20sk_sp\29\20const 6259:skif::\28anonymous\20namespace\29::GaneshBackend::makeDevice\28SkISize\2c\20sk_sp\2c\20SkSurfaceProps\20const*\29\20const 6260:skif::\28anonymous\20namespace\29::GaneshBackend::getCachedBitmap\28SkBitmap\20const&\29\20const 6261:skif::\28anonymous\20namespace\29::GaneshBackend::getBlurEngine\28\29\20const 6262:skif::\28anonymous\20namespace\29::GaneshBackend::findAlgorithm\28SkSize\2c\20SkColorType\29\20const 6263:skia_png_zalloc 6264:skia_png_write_rows 6265:skia_png_write_info 6266:skia_png_write_end 6267:skia_png_user_version_check 6268:skia_png_set_text 6269:skia_png_set_sRGB 6270:skia_png_set_keep_unknown_chunks 6271:skia_png_set_iCCP 6272:skia_png_set_gray_to_rgb 6273:skia_png_set_filter 6274:skia_png_set_filler 6275:skia_png_read_update_info 6276:skia_png_read_info 6277:skia_png_read_image 6278:skia_png_read_end 6279:skia_png_push_fill_buffer 6280:skia_png_process_data 6281:skia_png_default_write_data 6282:skia_png_default_read_data 6283:skia_png_default_flush 6284:skia_png_create_read_struct 6285:skia::textlayout::TypefaceFontStyleSet::~TypefaceFontStyleSet\28\29.1 6286:skia::textlayout::TypefaceFontStyleSet::~TypefaceFontStyleSet\28\29 6287:skia::textlayout::TypefaceFontStyleSet::getStyle\28int\2c\20SkFontStyle*\2c\20SkString*\29 6288:skia::textlayout::TypefaceFontProvider::~TypefaceFontProvider\28\29.1 6289:skia::textlayout::TypefaceFontProvider::~TypefaceFontProvider\28\29 6290:skia::textlayout::TypefaceFontProvider::onMatchFamily\28char\20const*\29\20const 6291:skia::textlayout::TypefaceFontProvider::onMatchFamilyStyle\28char\20const*\2c\20SkFontStyle\20const&\29\20const 6292:skia::textlayout::TypefaceFontProvider::onGetFamilyName\28int\2c\20SkString*\29\20const 6293:skia::textlayout::TextLine::shapeEllipsis\28SkString\20const&\2c\20skia::textlayout::Cluster\20const*\29::ShapeHandler::~ShapeHandler\28\29.1 6294:skia::textlayout::TextLine::shapeEllipsis\28SkString\20const&\2c\20skia::textlayout::Cluster\20const*\29::ShapeHandler::~ShapeHandler\28\29 6295:skia::textlayout::TextLine::shapeEllipsis\28SkString\20const&\2c\20skia::textlayout::Cluster\20const*\29::ShapeHandler::runBuffer\28SkShaper::RunHandler::RunInfo\20const&\29 6296:skia::textlayout::TextLine::shapeEllipsis\28SkString\20const&\2c\20skia::textlayout::Cluster\20const*\29::ShapeHandler::commitRunBuffer\28SkShaper::RunHandler::RunInfo\20const&\29 6297:skia::textlayout::PositionWithAffinity*\20emscripten::internal::raw_constructor\28\29 6298:skia::textlayout::ParagraphImpl::~ParagraphImpl\28\29.1 6299:skia::textlayout::ParagraphImpl::visit\28std::__2::function\20const&\29 6300:skia::textlayout::ParagraphImpl::updateTextAlign\28skia::textlayout::TextAlign\29 6301:skia::textlayout::ParagraphImpl::updateForegroundPaint\28unsigned\20long\2c\20unsigned\20long\2c\20SkPaint\29 6302:skia::textlayout::ParagraphImpl::updateFontSize\28unsigned\20long\2c\20unsigned\20long\2c\20float\29 6303:skia::textlayout::ParagraphImpl::updateBackgroundPaint\28unsigned\20long\2c\20unsigned\20long\2c\20SkPaint\29 6304:skia::textlayout::ParagraphImpl::unresolvedGlyphs\28\29 6305:skia::textlayout::ParagraphImpl::unresolvedCodepoints\28\29 6306:skia::textlayout::ParagraphImpl::paint\28skia::textlayout::ParagraphPainter*\2c\20float\2c\20float\29 6307:skia::textlayout::ParagraphImpl::paint\28SkCanvas*\2c\20float\2c\20float\29 6308:skia::textlayout::ParagraphImpl::markDirty\28\29 6309:skia::textlayout::ParagraphImpl::lineNumber\28\29 6310:skia::textlayout::ParagraphImpl::layout\28float\29 6311:skia::textlayout::ParagraphImpl::getWordBoundary\28unsigned\20int\29 6312:skia::textlayout::ParagraphImpl::getRectsForRange\28unsigned\20int\2c\20unsigned\20int\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\29 6313:skia::textlayout::ParagraphImpl::getRectsForPlaceholders\28\29 6314:skia::textlayout::ParagraphImpl::getPath\28int\2c\20SkPath*\29::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29::operator\28\29\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\20const::'lambda'\28SkPath\20const*\2c\20SkMatrix\20const&\2c\20void*\29::__invoke\28SkPath\20const*\2c\20SkMatrix\20const&\2c\20void*\29 6315:skia::textlayout::ParagraphImpl::getPath\28int\2c\20SkPath*\29 6316:skia::textlayout::ParagraphImpl::getLineNumberAt\28unsigned\20long\29\20const 6317:skia::textlayout::ParagraphImpl::getLineNumberAtUTF16Offset\28unsigned\20long\29 6318:skia::textlayout::ParagraphImpl::getLineMetrics\28std::__2::vector>&\29 6319:skia::textlayout::ParagraphImpl::getLineMetricsAt\28int\2c\20skia::textlayout::LineMetrics*\29\20const 6320:skia::textlayout::ParagraphImpl::getGlyphPositionAtCoordinate\28float\2c\20float\29 6321:skia::textlayout::ParagraphImpl::getFonts\28\29\20const 6322:skia::textlayout::ParagraphImpl::getFontAt\28unsigned\20long\29\20const 6323:skia::textlayout::ParagraphImpl::getFontAtUTF16Offset\28unsigned\20long\29 6324:skia::textlayout::ParagraphImpl::getClosestUTF16GlyphInfoAt\28float\2c\20float\2c\20skia::textlayout::Paragraph::GlyphInfo*\29 6325:skia::textlayout::ParagraphImpl::getClosestGlyphClusterAt\28float\2c\20float\2c\20skia::textlayout::Paragraph::GlyphClusterInfo*\29 6326:skia::textlayout::ParagraphImpl::getActualTextRange\28int\2c\20bool\29\20const 6327:skia::textlayout::ParagraphImpl::extendedVisit\28std::__2::function\20const&\29 6328:skia::textlayout::ParagraphImpl::containsEmoji\28SkTextBlob*\29 6329:skia::textlayout::ParagraphImpl::containsColorFontOrBitmap\28SkTextBlob*\29::$_0::__invoke\28SkPath\20const*\2c\20SkMatrix\20const&\2c\20void*\29 6330:skia::textlayout::ParagraphImpl::containsColorFontOrBitmap\28SkTextBlob*\29 6331:skia::textlayout::ParagraphBuilderImpl::~ParagraphBuilderImpl\28\29.1 6332:skia::textlayout::ParagraphBuilderImpl::setWordsUtf8\28std::__2::vector>\29 6333:skia::textlayout::ParagraphBuilderImpl::setWordsUtf16\28std::__2::vector>\29 6334:skia::textlayout::ParagraphBuilderImpl::setLineBreaksUtf8\28std::__2::vector>\29 6335:skia::textlayout::ParagraphBuilderImpl::setLineBreaksUtf16\28std::__2::vector>\29 6336:skia::textlayout::ParagraphBuilderImpl::setGraphemeBreaksUtf8\28std::__2::vector>\29 6337:skia::textlayout::ParagraphBuilderImpl::setGraphemeBreaksUtf16\28std::__2::vector>\29 6338:skia::textlayout::ParagraphBuilderImpl::pushStyle\28skia::textlayout::TextStyle\20const&\29 6339:skia::textlayout::ParagraphBuilderImpl::pop\28\29 6340:skia::textlayout::ParagraphBuilderImpl::peekStyle\28\29 6341:skia::textlayout::ParagraphBuilderImpl::getText\28\29 6342:skia::textlayout::ParagraphBuilderImpl::getParagraphStyle\28\29\20const 6343:skia::textlayout::ParagraphBuilderImpl::addText\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 6344:skia::textlayout::ParagraphBuilderImpl::addText\28char\20const*\2c\20unsigned\20long\29 6345:skia::textlayout::ParagraphBuilderImpl::addText\28char\20const*\29 6346:skia::textlayout::ParagraphBuilderImpl::addPlaceholder\28skia::textlayout::PlaceholderStyle\20const&\29 6347:skia::textlayout::ParagraphBuilderImpl::SetUnicode\28sk_sp\29 6348:skia::textlayout::ParagraphBuilderImpl::Reset\28\29 6349:skia::textlayout::ParagraphBuilderImpl::RequiresClientICU\28\29 6350:skia::textlayout::ParagraphBuilderImpl::Build\28\29 6351:skia::textlayout::Paragraph::getMinIntrinsicWidth\28\29 6352:skia::textlayout::Paragraph::getMaxWidth\28\29 6353:skia::textlayout::Paragraph::getMaxIntrinsicWidth\28\29 6354:skia::textlayout::Paragraph::getLongestLine\28\29 6355:skia::textlayout::Paragraph::getIdeographicBaseline\28\29 6356:skia::textlayout::Paragraph::getHeight\28\29 6357:skia::textlayout::Paragraph::getAlphabeticBaseline\28\29 6358:skia::textlayout::Paragraph::didExceedMaxLines\28\29 6359:skia::textlayout::Paragraph::FontInfo::~FontInfo\28\29.1 6360:skia::textlayout::Paragraph::FontInfo::~FontInfo\28\29 6361:skia::textlayout::OneLineShaper::~OneLineShaper\28\29.1 6362:skia::textlayout::OneLineShaper::runBuffer\28SkShaper::RunHandler::RunInfo\20const&\29 6363:skia::textlayout::OneLineShaper::commitRunBuffer\28SkShaper::RunHandler::RunInfo\20const&\29 6364:skia::textlayout::LangIterator::~LangIterator\28\29.1 6365:skia::textlayout::LangIterator::~LangIterator\28\29 6366:skia::textlayout::LangIterator::endOfCurrentRun\28\29\20const 6367:skia::textlayout::LangIterator::currentLanguage\28\29\20const 6368:skia::textlayout::LangIterator::consume\28\29 6369:skia::textlayout::LangIterator::atEnd\28\29\20const 6370:skia::textlayout::FontCollection::~FontCollection\28\29.1 6371:skia::textlayout::CanvasParagraphPainter::translate\28float\2c\20float\29 6372:skia::textlayout::CanvasParagraphPainter::save\28\29 6373:skia::textlayout::CanvasParagraphPainter::restore\28\29 6374:skia::textlayout::CanvasParagraphPainter::drawTextShadow\28sk_sp\20const&\2c\20float\2c\20float\2c\20unsigned\20int\2c\20float\29 6375:skia::textlayout::CanvasParagraphPainter::drawTextBlob\28sk_sp\20const&\2c\20float\2c\20float\2c\20std::__2::variant\20const&\29 6376:skia::textlayout::CanvasParagraphPainter::drawRect\28SkRect\20const&\2c\20std::__2::variant\20const&\29 6377:skia::textlayout::CanvasParagraphPainter::drawPath\28SkPath\20const&\2c\20skia::textlayout::ParagraphPainter::DecorationStyle\20const&\29 6378:skia::textlayout::CanvasParagraphPainter::drawLine\28float\2c\20float\2c\20float\2c\20float\2c\20skia::textlayout::ParagraphPainter::DecorationStyle\20const&\29 6379:skia::textlayout::CanvasParagraphPainter::drawFilledRect\28SkRect\20const&\2c\20skia::textlayout::ParagraphPainter::DecorationStyle\20const&\29 6380:skia::textlayout::CanvasParagraphPainter::clipRect\28SkRect\20const&\29 6381:skgpu::tess::FixedCountWedges::WriteVertexBuffer\28skgpu::VertexWriter\2c\20unsigned\20long\29 6382:skgpu::tess::FixedCountWedges::WriteIndexBuffer\28skgpu::VertexWriter\2c\20unsigned\20long\29 6383:skgpu::tess::FixedCountStrokes::WriteVertexBuffer\28skgpu::VertexWriter\2c\20unsigned\20long\29 6384:skgpu::tess::FixedCountCurves::WriteVertexBuffer\28skgpu::VertexWriter\2c\20unsigned\20long\29 6385:skgpu::tess::FixedCountCurves::WriteIndexBuffer\28skgpu::VertexWriter\2c\20unsigned\20long\29 6386:skgpu::ganesh::texture_proxy_view_from_planes\28GrRecordingContext*\2c\20SkImage_Lazy\20const*\2c\20skgpu::Budgeted\29::$_0::__invoke\28void*\2c\20void*\29 6387:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::~SmallPathOp\28\29.1 6388:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::visitProxies\28std::__2::function\20const&\29\20const 6389:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::onPrepareDraws\28GrMeshDrawTarget*\29 6390:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 6391:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 6392:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::name\28\29\20const 6393:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::fixedFunctionFlags\28\29\20const 6394:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 6395:skgpu::ganesh::\28anonymous\20namespace\29::QuadEdgeEffect::name\28\29\20const 6396:skgpu::ganesh::\28anonymous\20namespace\29::QuadEdgeEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 6397:skgpu::ganesh::\28anonymous\20namespace\29::QuadEdgeEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 6398:skgpu::ganesh::\28anonymous\20namespace\29::QuadEdgeEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const 6399:skgpu::ganesh::\28anonymous\20namespace\29::QuadEdgeEffect::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 6400:skgpu::ganesh::\28anonymous\20namespace\29::HullShader::~HullShader\28\29.1 6401:skgpu::ganesh::\28anonymous\20namespace\29::HullShader::~HullShader\28\29 6402:skgpu::ganesh::\28anonymous\20namespace\29::HullShader::name\28\29\20const 6403:skgpu::ganesh::\28anonymous\20namespace\29::HullShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::emitVertexCode\28GrShaderCaps\20const&\2c\20GrPathTessellationShader\20const&\2c\20GrGLSLVertexBuilder*\2c\20GrGLSLVaryingHandler*\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 6404:skgpu::ganesh::\28anonymous\20namespace\29::HullShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 6405:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::~AAFlatteningConvexPathOp\28\29.1 6406:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::~AAFlatteningConvexPathOp\28\29 6407:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::visitProxies\28std::__2::function\20const&\29\20const 6408:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::onPrepareDraws\28GrMeshDrawTarget*\29 6409:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 6410:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 6411:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 6412:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::name\28\29\20const 6413:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::fixedFunctionFlags\28\29\20const 6414:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 6415:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::~AAConvexPathOp\28\29.1 6416:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::~AAConvexPathOp\28\29 6417:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::visitProxies\28std::__2::function\20const&\29\20const 6418:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::onPrepareDraws\28GrMeshDrawTarget*\29 6419:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 6420:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 6421:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 6422:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::name\28\29\20const 6423:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 6424:skgpu::ganesh::TriangulatingPathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 6425:skgpu::ganesh::TriangulatingPathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 6426:skgpu::ganesh::TriangulatingPathRenderer::name\28\29\20const 6427:skgpu::ganesh::TessellationPathRenderer::onStencilPath\28skgpu::ganesh::PathRenderer::StencilPathArgs\20const&\29 6428:skgpu::ganesh::TessellationPathRenderer::onGetStencilSupport\28GrStyledShape\20const&\29\20const 6429:skgpu::ganesh::TessellationPathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 6430:skgpu::ganesh::TessellationPathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 6431:skgpu::ganesh::TessellationPathRenderer::name\28\29\20const 6432:skgpu::ganesh::SurfaceDrawContext::willReplaceOpsTask\28skgpu::ganesh::OpsTask*\2c\20skgpu::ganesh::OpsTask*\29 6433:skgpu::ganesh::SurfaceDrawContext::canDiscardPreviousOpsOnFullClear\28\29\20const 6434:skgpu::ganesh::SurfaceContext::~SurfaceContext\28\29.1 6435:skgpu::ganesh::SurfaceContext::asyncRescaleAndReadPixelsYUV420\28GrDirectContext*\2c\20SkYUVColorSpace\2c\20bool\2c\20sk_sp\2c\20SkIRect\20const&\2c\20SkISize\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29::$_0::__invoke\28void*\29 6436:skgpu::ganesh::SurfaceContext::asyncReadPixels\28GrDirectContext*\2c\20SkIRect\20const&\2c\20SkColorType\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29::$_0::__invoke\28void*\29 6437:skgpu::ganesh::StrokeTessellateOp::~StrokeTessellateOp\28\29.1 6438:skgpu::ganesh::StrokeTessellateOp::~StrokeTessellateOp\28\29 6439:skgpu::ganesh::StrokeTessellateOp::visitProxies\28std::__2::function\20const&\29\20const 6440:skgpu::ganesh::StrokeTessellateOp::usesStencil\28\29\20const 6441:skgpu::ganesh::StrokeTessellateOp::onPrepare\28GrOpFlushState*\29 6442:skgpu::ganesh::StrokeTessellateOp::onPrePrepare\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 6443:skgpu::ganesh::StrokeTessellateOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 6444:skgpu::ganesh::StrokeTessellateOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 6445:skgpu::ganesh::StrokeTessellateOp::name\28\29\20const 6446:skgpu::ganesh::StrokeTessellateOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 6447:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::~NonAAStrokeRectOp\28\29.1 6448:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::~NonAAStrokeRectOp\28\29 6449:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::visitProxies\28std::__2::function\20const&\29\20const 6450:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::programInfo\28\29 6451:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::onPrepareDraws\28GrMeshDrawTarget*\29 6452:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 6453:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 6454:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::name\28\29\20const 6455:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 6456:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::~AAStrokeRectOp\28\29.1 6457:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::~AAStrokeRectOp\28\29 6458:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::visitProxies\28std::__2::function\20const&\29\20const 6459:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::programInfo\28\29 6460:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::onPrepareDraws\28GrMeshDrawTarget*\29 6461:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 6462:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 6463:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 6464:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::name\28\29\20const 6465:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 6466:skgpu::ganesh::StencilClip::~StencilClip\28\29.1 6467:skgpu::ganesh::StencilClip::~StencilClip\28\29 6468:skgpu::ganesh::StencilClip::preApply\28SkRect\20const&\2c\20GrAA\29\20const 6469:skgpu::ganesh::StencilClip::getConservativeBounds\28\29\20const 6470:skgpu::ganesh::StencilClip::apply\28GrAppliedHardClip*\2c\20SkIRect*\29\20const 6471:skgpu::ganesh::SoftwarePathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 6472:skgpu::ganesh::SoftwarePathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 6473:skgpu::ganesh::SoftwarePathRenderer::name\28\29\20const 6474:skgpu::ganesh::SmallPathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 6475:skgpu::ganesh::SmallPathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 6476:skgpu::ganesh::SmallPathRenderer::name\28\29\20const 6477:skgpu::ganesh::SmallPathAtlasMgr::~SmallPathAtlasMgr\28\29.1 6478:skgpu::ganesh::SmallPathAtlasMgr::preFlush\28GrOnFlushResourceProvider*\29 6479:skgpu::ganesh::SmallPathAtlasMgr::postFlush\28skgpu::AtlasToken\29 6480:skgpu::ganesh::SmallPathAtlasMgr::evict\28skgpu::PlotLocator\29 6481:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::~RegionOpImpl\28\29.1 6482:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::~RegionOpImpl\28\29 6483:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::visitProxies\28std::__2::function\20const&\29\20const 6484:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::programInfo\28\29 6485:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::onPrepareDraws\28GrMeshDrawTarget*\29 6486:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 6487:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 6488:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 6489:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::name\28\29\20const 6490:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 6491:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_quad_generic\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 6492:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_2d_uv_strict\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 6493:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_2d_uv\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 6494:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_2d_cov_uv_strict\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 6495:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_2d_cov_uv\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 6496:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_2d_color_uv_strict\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 6497:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_2d_color_uv\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 6498:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_2d_color\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 6499:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::~QuadPerEdgeAAGeometryProcessor\28\29.1 6500:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::~QuadPerEdgeAAGeometryProcessor\28\29 6501:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::onTextureSampler\28int\29\20const 6502:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::name\28\29\20const 6503:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 6504:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 6505:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::makeProgramImpl\28GrShaderCaps\20const&\29\20const 6506:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 6507:skgpu::ganesh::PathWedgeTessellator::prepare\28GrMeshDrawTarget*\2c\20SkMatrix\20const&\2c\20skgpu::ganesh::PathTessellator::PathDrawList\20const&\2c\20int\29 6508:skgpu::ganesh::PathTessellator::~PathTessellator\28\29 6509:skgpu::ganesh::PathTessellateOp::~PathTessellateOp\28\29.1 6510:skgpu::ganesh::PathTessellateOp::~PathTessellateOp\28\29 6511:skgpu::ganesh::PathTessellateOp::visitProxies\28std::__2::function\20const&\29\20const 6512:skgpu::ganesh::PathTessellateOp::usesStencil\28\29\20const 6513:skgpu::ganesh::PathTessellateOp::onPrepare\28GrOpFlushState*\29 6514:skgpu::ganesh::PathTessellateOp::onPrePrepare\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 6515:skgpu::ganesh::PathTessellateOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 6516:skgpu::ganesh::PathTessellateOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 6517:skgpu::ganesh::PathTessellateOp::name\28\29\20const 6518:skgpu::ganesh::PathTessellateOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 6519:skgpu::ganesh::PathStencilCoverOp::~PathStencilCoverOp\28\29.1 6520:skgpu::ganesh::PathStencilCoverOp::~PathStencilCoverOp\28\29 6521:skgpu::ganesh::PathStencilCoverOp::visitProxies\28std::__2::function\20const&\29\20const 6522:skgpu::ganesh::PathStencilCoverOp::onPrepare\28GrOpFlushState*\29 6523:skgpu::ganesh::PathStencilCoverOp::onPrePrepare\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 6524:skgpu::ganesh::PathStencilCoverOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 6525:skgpu::ganesh::PathStencilCoverOp::name\28\29\20const 6526:skgpu::ganesh::PathStencilCoverOp::fixedFunctionFlags\28\29\20const 6527:skgpu::ganesh::PathStencilCoverOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 6528:skgpu::ganesh::PathRenderer::onStencilPath\28skgpu::ganesh::PathRenderer::StencilPathArgs\20const&\29 6529:skgpu::ganesh::PathRenderer::onGetStencilSupport\28GrStyledShape\20const&\29\20const 6530:skgpu::ganesh::PathInnerTriangulateOp::~PathInnerTriangulateOp\28\29.1 6531:skgpu::ganesh::PathInnerTriangulateOp::~PathInnerTriangulateOp\28\29 6532:skgpu::ganesh::PathInnerTriangulateOp::visitProxies\28std::__2::function\20const&\29\20const 6533:skgpu::ganesh::PathInnerTriangulateOp::onPrepare\28GrOpFlushState*\29 6534:skgpu::ganesh::PathInnerTriangulateOp::onPrePrepare\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 6535:skgpu::ganesh::PathInnerTriangulateOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 6536:skgpu::ganesh::PathInnerTriangulateOp::name\28\29\20const 6537:skgpu::ganesh::PathInnerTriangulateOp::fixedFunctionFlags\28\29\20const 6538:skgpu::ganesh::PathInnerTriangulateOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 6539:skgpu::ganesh::PathCurveTessellator::prepare\28GrMeshDrawTarget*\2c\20SkMatrix\20const&\2c\20skgpu::ganesh::PathTessellator::PathDrawList\20const&\2c\20int\29 6540:skgpu::ganesh::OpsTask::~OpsTask\28\29.1 6541:skgpu::ganesh::OpsTask::onPrepare\28GrOpFlushState*\29 6542:skgpu::ganesh::OpsTask::onPrePrepare\28GrRecordingContext*\29 6543:skgpu::ganesh::OpsTask::onMakeSkippable\28\29 6544:skgpu::ganesh::OpsTask::onIsUsed\28GrSurfaceProxy*\29\20const 6545:skgpu::ganesh::OpsTask::gatherProxyIntervals\28GrResourceAllocator*\29\20const 6546:skgpu::ganesh::OpsTask::endFlush\28GrDrawingManager*\29 6547:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::~NonAALatticeOp\28\29.1 6548:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::visitProxies\28std::__2::function\20const&\29\20const 6549:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::onPrepareDraws\28GrMeshDrawTarget*\29 6550:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 6551:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 6552:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 6553:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::name\28\29\20const 6554:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 6555:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::~LatticeGP\28\29.1 6556:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::~LatticeGP\28\29 6557:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::onTextureSampler\28int\29\20const 6558:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::name\28\29\20const 6559:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 6560:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 6561:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::makeProgramImpl\28GrShaderCaps\20const&\29\20const 6562:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 6563:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::~FillRRectOpImpl\28\29.1 6564:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::~FillRRectOpImpl\28\29 6565:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::visitProxies\28std::__2::function\20const&\29\20const 6566:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::programInfo\28\29 6567:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::onPrepareDraws\28GrMeshDrawTarget*\29 6568:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 6569:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 6570:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 6571:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::name\28\29\20const 6572:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 6573:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::clipToShape\28skgpu::ganesh::SurfaceDrawContext*\2c\20SkClipOp\2c\20SkMatrix\20const&\2c\20GrShape\20const&\2c\20GrAA\29 6574:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Processor::~Processor\28\29.1 6575:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Processor::~Processor\28\29 6576:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Processor::name\28\29\20const 6577:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Processor::makeProgramImpl\28GrShaderCaps\20const&\29\20const 6578:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Processor::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 6579:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Processor::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 6580:skgpu::ganesh::DrawableOp::~DrawableOp\28\29.1 6581:skgpu::ganesh::DrawableOp::~DrawableOp\28\29 6582:skgpu::ganesh::DrawableOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 6583:skgpu::ganesh::DrawableOp::name\28\29\20const 6584:skgpu::ganesh::DrawAtlasPathOp::~DrawAtlasPathOp\28\29.1 6585:skgpu::ganesh::DrawAtlasPathOp::~DrawAtlasPathOp\28\29 6586:skgpu::ganesh::DrawAtlasPathOp::visitProxies\28std::__2::function\20const&\29\20const 6587:skgpu::ganesh::DrawAtlasPathOp::onPrepare\28GrOpFlushState*\29 6588:skgpu::ganesh::DrawAtlasPathOp::onPrePrepare\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 6589:skgpu::ganesh::DrawAtlasPathOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 6590:skgpu::ganesh::DrawAtlasPathOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 6591:skgpu::ganesh::DrawAtlasPathOp::name\28\29\20const 6592:skgpu::ganesh::DrawAtlasPathOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 6593:skgpu::ganesh::Device::~Device\28\29.1 6594:skgpu::ganesh::Device::~Device\28\29 6595:skgpu::ganesh::Device::strikeDeviceInfo\28\29\20const 6596:skgpu::ganesh::Device::snapSpecial\28SkIRect\20const&\2c\20bool\29 6597:skgpu::ganesh::Device::snapSpecialScaled\28SkIRect\20const&\2c\20SkISize\20const&\29 6598:skgpu::ganesh::Device::replaceClip\28SkIRect\20const&\29 6599:skgpu::ganesh::Device::recordingContext\28\29\20const 6600:skgpu::ganesh::Device::pushClipStack\28\29 6601:skgpu::ganesh::Device::popClipStack\28\29 6602:skgpu::ganesh::Device::onWritePixels\28SkPixmap\20const&\2c\20int\2c\20int\29 6603:skgpu::ganesh::Device::onReadPixels\28SkPixmap\20const&\2c\20int\2c\20int\29 6604:skgpu::ganesh::Device::onDrawGlyphRunList\28SkCanvas*\2c\20sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\29 6605:skgpu::ganesh::Device::onClipShader\28sk_sp\29 6606:skgpu::ganesh::Device::makeSurface\28SkImageInfo\20const&\2c\20SkSurfaceProps\20const&\29 6607:skgpu::ganesh::Device::makeSpecial\28SkImage\20const*\29 6608:skgpu::ganesh::Device::isClipWideOpen\28\29\20const 6609:skgpu::ganesh::Device::isClipRect\28\29\20const 6610:skgpu::ganesh::Device::isClipEmpty\28\29\20const 6611:skgpu::ganesh::Device::isClipAntiAliased\28\29\20const 6612:skgpu::ganesh::Device::drawVertices\28SkVertices\20const*\2c\20sk_sp\2c\20SkPaint\20const&\2c\20bool\29 6613:skgpu::ganesh::Device::drawSpecial\28SkSpecialImage*\2c\20SkMatrix\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 6614:skgpu::ganesh::Device::drawSlug\28SkCanvas*\2c\20sktext::gpu::Slug\20const*\2c\20SkPaint\20const&\29 6615:skgpu::ganesh::Device::drawShadow\28SkPath\20const&\2c\20SkDrawShadowRec\20const&\29 6616:skgpu::ganesh::Device::drawRegion\28SkRegion\20const&\2c\20SkPaint\20const&\29 6617:skgpu::ganesh::Device::drawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 6618:skgpu::ganesh::Device::drawPoints\28SkCanvas::PointMode\2c\20unsigned\20long\2c\20SkPoint\20const*\2c\20SkPaint\20const&\29 6619:skgpu::ganesh::Device::drawPaint\28SkPaint\20const&\29 6620:skgpu::ganesh::Device::drawOval\28SkRect\20const&\2c\20SkPaint\20const&\29 6621:skgpu::ganesh::Device::drawMesh\28SkMesh\20const&\2c\20sk_sp\2c\20SkPaint\20const&\29 6622:skgpu::ganesh::Device::drawImageRect\28SkImage\20const*\2c\20SkRect\20const*\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 6623:skgpu::ganesh::Device::drawImageLattice\28SkImage\20const*\2c\20SkCanvas::Lattice\20const&\2c\20SkRect\20const&\2c\20SkFilterMode\2c\20SkPaint\20const&\29 6624:skgpu::ganesh::Device::drawEdgeAAQuad\28SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkBlendMode\29 6625:skgpu::ganesh::Device::drawEdgeAAImageSet\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 6626:skgpu::ganesh::Device::drawDrawable\28SkCanvas*\2c\20SkDrawable*\2c\20SkMatrix\20const*\29 6627:skgpu::ganesh::Device::drawDevice\28SkDevice*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\29 6628:skgpu::ganesh::Device::drawDRRect\28SkRRect\20const&\2c\20SkRRect\20const&\2c\20SkPaint\20const&\29 6629:skgpu::ganesh::Device::drawAtlas\28SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20sk_sp\2c\20SkPaint\20const&\29 6630:skgpu::ganesh::Device::drawAsTiledImageRect\28SkCanvas*\2c\20SkImage\20const*\2c\20SkRect\20const*\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 6631:skgpu::ganesh::Device::drawArc\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 6632:skgpu::ganesh::Device::devClipBounds\28\29\20const 6633:skgpu::ganesh::Device::createImageFilteringBackend\28SkSurfaceProps\20const&\2c\20SkColorType\29\20const 6634:skgpu::ganesh::Device::createDevice\28SkDevice::CreateInfo\20const&\2c\20SkPaint\20const*\29 6635:skgpu::ganesh::Device::convertGlyphRunListToSlug\28sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\29 6636:skgpu::ganesh::Device::clipRegion\28SkRegion\20const&\2c\20SkClipOp\29 6637:skgpu::ganesh::Device::clipRect\28SkRect\20const&\2c\20SkClipOp\2c\20bool\29 6638:skgpu::ganesh::Device::clipRRect\28SkRRect\20const&\2c\20SkClipOp\2c\20bool\29 6639:skgpu::ganesh::Device::clipPath\28SkPath\20const&\2c\20SkClipOp\2c\20bool\29 6640:skgpu::ganesh::Device::android_utils_clipWithStencil\28\29 6641:skgpu::ganesh::DefaultPathRenderer::onStencilPath\28skgpu::ganesh::PathRenderer::StencilPathArgs\20const&\29 6642:skgpu::ganesh::DefaultPathRenderer::onGetStencilSupport\28GrStyledShape\20const&\29\20const 6643:skgpu::ganesh::DefaultPathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 6644:skgpu::ganesh::DefaultPathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 6645:skgpu::ganesh::DefaultPathRenderer::name\28\29\20const 6646:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingLineEffect::name\28\29\20const 6647:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingLineEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const 6648:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingLineEffect::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 6649:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingLineEffect::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 6650:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingCircleEffect::name\28\29\20const 6651:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingCircleEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const 6652:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingCircleEffect::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 6653:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingCircleEffect::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 6654:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::~DashOpImpl\28\29.1 6655:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::~DashOpImpl\28\29 6656:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::visitProxies\28std::__2::function\20const&\29\20const 6657:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::programInfo\28\29 6658:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::onPrepareDraws\28GrMeshDrawTarget*\29 6659:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 6660:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 6661:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 6662:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::name\28\29\20const 6663:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::fixedFunctionFlags\28\29\20const 6664:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 6665:skgpu::ganesh::DashLinePathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 6666:skgpu::ganesh::DashLinePathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 6667:skgpu::ganesh::DashLinePathRenderer::name\28\29\20const 6668:skgpu::ganesh::ClipStack::~ClipStack\28\29.1 6669:skgpu::ganesh::ClipStack::preApply\28SkRect\20const&\2c\20GrAA\29\20const 6670:skgpu::ganesh::ClipStack::apply\28GrRecordingContext*\2c\20skgpu::ganesh::SurfaceDrawContext*\2c\20GrDrawOp*\2c\20GrAAType\2c\20GrAppliedClip*\2c\20SkRect*\29\20const 6671:skgpu::ganesh::ClearOp::~ClearOp\28\29 6672:skgpu::ganesh::ClearOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 6673:skgpu::ganesh::ClearOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 6674:skgpu::ganesh::ClearOp::name\28\29\20const 6675:skgpu::ganesh::AtlasTextOp::~AtlasTextOp\28\29.1 6676:skgpu::ganesh::AtlasTextOp::~AtlasTextOp\28\29 6677:skgpu::ganesh::AtlasTextOp::visitProxies\28std::__2::function\20const&\29\20const 6678:skgpu::ganesh::AtlasTextOp::onPrepareDraws\28GrMeshDrawTarget*\29 6679:skgpu::ganesh::AtlasTextOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 6680:skgpu::ganesh::AtlasTextOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 6681:skgpu::ganesh::AtlasTextOp::name\28\29\20const 6682:skgpu::ganesh::AtlasTextOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 6683:skgpu::ganesh::AtlasRenderTask::~AtlasRenderTask\28\29.1 6684:skgpu::ganesh::AtlasRenderTask::~AtlasRenderTask\28\29 6685:skgpu::ganesh::AtlasRenderTask::onMakeClosed\28GrRecordingContext*\2c\20SkIRect*\29 6686:skgpu::ganesh::AtlasRenderTask::onExecute\28GrOpFlushState*\29 6687:skgpu::ganesh::AtlasPathRenderer::~AtlasPathRenderer\28\29.1 6688:skgpu::ganesh::AtlasPathRenderer::~AtlasPathRenderer\28\29 6689:skgpu::ganesh::AtlasPathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 6690:skgpu::ganesh::AtlasPathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 6691:skgpu::ganesh::AtlasPathRenderer::name\28\29\20const 6692:skgpu::ganesh::AALinearizingConvexPathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 6693:skgpu::ganesh::AALinearizingConvexPathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 6694:skgpu::ganesh::AALinearizingConvexPathRenderer::name\28\29\20const 6695:skgpu::ganesh::AAHairLinePathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 6696:skgpu::ganesh::AAHairLinePathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 6697:skgpu::ganesh::AAHairLinePathRenderer::name\28\29\20const 6698:skgpu::ganesh::AAConvexPathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 6699:skgpu::ganesh::AAConvexPathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 6700:skgpu::ganesh::AAConvexPathRenderer::name\28\29\20const 6701:skgpu::TAsyncReadResult::~TAsyncReadResult\28\29.1 6702:skgpu::TAsyncReadResult::rowBytes\28int\29\20const 6703:skgpu::TAsyncReadResult::data\28int\29\20const 6704:skgpu::StringKeyBuilder::~StringKeyBuilder\28\29.1 6705:skgpu::StringKeyBuilder::~StringKeyBuilder\28\29 6706:skgpu::StringKeyBuilder::appendComment\28char\20const*\29 6707:skgpu::StringKeyBuilder::addBits\28unsigned\20int\2c\20unsigned\20int\2c\20std::__2::basic_string_view>\29 6708:skgpu::ShaderErrorHandler::compileError\28char\20const*\2c\20char\20const*\2c\20bool\29 6709:skgpu::RectanizerSkyline::~RectanizerSkyline\28\29.1 6710:skgpu::RectanizerSkyline::~RectanizerSkyline\28\29 6711:skgpu::RectanizerSkyline::reset\28\29 6712:skgpu::RectanizerSkyline::percentFull\28\29\20const 6713:skgpu::RectanizerPow2::reset\28\29 6714:skgpu::RectanizerPow2::percentFull\28\29\20const 6715:skgpu::RectanizerPow2::addRect\28int\2c\20int\2c\20SkIPoint16*\29 6716:skgpu::Plot::~Plot\28\29.1 6717:skgpu::Plot::~Plot\28\29 6718:skgpu::KeyBuilder::~KeyBuilder\28\29 6719:skgpu::KeyBuilder::addBits\28unsigned\20int\2c\20unsigned\20int\2c\20std::__2::basic_string_view>\29 6720:skgpu::DefaultShaderErrorHandler\28\29::DefaultShaderErrorHandler::compileError\28char\20const*\2c\20char\20const*\29 6721:sk_write_fn\28png_struct_def*\2c\20unsigned\20char*\2c\20unsigned\20long\29 6722:sk_sp*\20emscripten::internal::MemberAccess>::getWire\28sk_sp\20SimpleImageInfo::*\20const&\2c\20SimpleImageInfo\20const&\29 6723:sk_read_user_chunk\28png_struct_def*\2c\20png_unknown_chunk_t*\29 6724:sk_mmap_releaseproc\28void\20const*\2c\20void*\29 6725:sk_ft_stream_io\28FT_StreamRec_*\2c\20unsigned\20long\2c\20unsigned\20char*\2c\20unsigned\20long\29 6726:sk_ft_realloc\28FT_MemoryRec_*\2c\20long\2c\20long\2c\20void*\29 6727:sk_ft_free\28FT_MemoryRec_*\2c\20void*\29 6728:sk_ft_alloc\28FT_MemoryRec_*\2c\20long\29 6729:sk_dataref_releaseproc\28void\20const*\2c\20void*\29 6730:sfnt_table_info 6731:sfnt_stream_close 6732:sfnt_load_face 6733:sfnt_is_postscript 6734:sfnt_is_alphanumeric 6735:sfnt_init_face 6736:sfnt_get_ps_name 6737:sfnt_get_name_index 6738:sfnt_get_name_id 6739:sfnt_get_interface 6740:sfnt_get_glyph_name 6741:sfnt_get_charset_id 6742:sfnt_done_face 6743:setup_syllables_use\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 6744:setup_syllables_myanmar\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 6745:setup_syllables_khmer\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 6746:setup_syllables_indic\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 6747:setup_masks_use\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 6748:setup_masks_myanmar\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 6749:setup_masks_khmer\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 6750:setup_masks_indic\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 6751:setup_masks_hangul\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 6752:setup_masks_arabic\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 6753:sep_upsample 6754:self_destruct 6755:save_marker 6756:sample8\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6757:sample6\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6758:sample4\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6759:sample2\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6760:sample1\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 6761:rgb_rgb_convert 6762:rgb_rgb565_convert 6763:rgb_rgb565D_convert 6764:rgb_gray_convert 6765:reverse_hit_compare_y\28SkOpRayHit\20const*\2c\20SkOpRayHit\20const*\29 6766:reverse_hit_compare_x\28SkOpRayHit\20const*\2c\20SkOpRayHit\20const*\29 6767:reset_marker_reader 6768:reset_input_controller 6769:reset_error_mgr 6770:request_virt_sarray 6771:request_virt_barray 6772:reorder_use\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 6773:reorder_myanmar\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 6774:reorder_marks_hebrew\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20unsigned\20int\2c\20unsigned\20int\29 6775:reorder_marks_arabic\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20unsigned\20int\2c\20unsigned\20int\29 6776:reorder_khmer\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 6777:release_data\28void*\2c\20void*\29 6778:record_stch\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 6779:record_rphf_use\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 6780:record_pref_use\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 6781:realize_virt_arrays 6782:read_restart_marker 6783:read_markers 6784:read_data_from_FT_Stream 6785:quantize_ord_dither 6786:quantize_fs_dither 6787:quantize3_ord_dither 6788:psnames_get_service 6789:pshinter_get_t2_funcs 6790:pshinter_get_t1_funcs 6791:pshinter_get_globals_funcs 6792:psh_globals_new 6793:psh_globals_destroy 6794:psaux_get_glyph_name 6795:ps_table_release 6796:ps_table_new 6797:ps_table_done 6798:ps_table_add 6799:ps_property_set 6800:ps_property_get 6801:ps_parser_to_token_array 6802:ps_parser_to_int 6803:ps_parser_to_fixed_array 6804:ps_parser_to_fixed 6805:ps_parser_to_coord_array 6806:ps_parser_to_bytes 6807:ps_parser_skip_spaces 6808:ps_parser_load_field_table 6809:ps_parser_init 6810:ps_hints_t2mask 6811:ps_hints_t2counter 6812:ps_hints_t1stem3 6813:ps_hints_t1reset 6814:ps_hints_close 6815:ps_hints_apply 6816:ps_hinter_init 6817:ps_hinter_done 6818:ps_get_standard_strings 6819:ps_get_macintosh_name 6820:ps_decoder_init 6821:ps_builder_init 6822:progress_monitor\28jpeg_common_struct*\29 6823:process_data_simple_main 6824:process_data_crank_post 6825:process_data_context_main 6826:prescan_quantize 6827:preprocess_text_use\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 6828:preprocess_text_thai\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 6829:preprocess_text_indic\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 6830:preprocess_text_hangul\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 6831:prepare_for_output_pass 6832:premultiply_data 6833:premul_rgb\28SkRGBA4f<\28SkAlphaType\292>\29 6834:premul_polar\28SkRGBA4f<\28SkAlphaType\292>\29 6835:postprocess_glyphs_arabic\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 6836:post_process_prepass 6837:post_process_2pass 6838:post_process_1pass 6839:portable::xy_to_unit_angle\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6840:portable::xy_to_radius\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6841:portable::xy_to_2pt_conical_well_behaved\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6842:portable::xy_to_2pt_conical_strip\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6843:portable::xy_to_2pt_conical_smaller\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6844:portable::xy_to_2pt_conical_greater\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6845:portable::xy_to_2pt_conical_focal_on_circle\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6846:portable::xor_\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6847:portable::white_color\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6848:portable::unpremul_polar\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6849:portable::unpremul\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6850:portable::trace_var\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6851:portable::trace_scope\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6852:portable::trace_line\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6853:portable::trace_exit\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6854:portable::trace_enter\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6855:portable::tan_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6856:portable::swizzle_copy_to_indirect_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6857:portable::swizzle_copy_slot_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6858:portable::swizzle_copy_4_slots_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6859:portable::swizzle_copy_3_slots_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6860:portable::swizzle_copy_2_slots_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6861:portable::swizzle_4\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6862:portable::swizzle_3\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6863:portable::swizzle_2\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6864:portable::swizzle_1\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6865:portable::swizzle\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6866:portable::swap_src_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6867:portable::swap_rb_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6868:portable::swap_rb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6869:portable::sub_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6870:portable::sub_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6871:portable::sub_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6872:portable::sub_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6873:portable::sub_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6874:portable::sub_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6875:portable::sub_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6876:portable::sub_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6877:portable::sub_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6878:portable::sub_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6879:portable::store_src_rg\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6880:portable::store_src_a\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6881:portable::store_src\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6882:portable::store_rgf16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6883:portable::store_rg88\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6884:portable::store_rg1616\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6885:portable::store_return_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6886:portable::store_r8\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6887:portable::store_loop_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6888:portable::store_f32\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6889:portable::store_f16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6890:portable::store_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6891:portable::store_device_xy01\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6892:portable::store_condition_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6893:portable::store_af16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6894:portable::store_a8\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6895:portable::store_a16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6896:portable::store_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6897:portable::store_565\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6898:portable::store_4444\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6899:portable::store_16161616\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6900:portable::store_10x6\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6901:portable::store_1010102_xr\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6902:portable::store_1010102\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6903:portable::start_pipeline\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkRasterPipelineStage*\2c\20SkSpan\2c\20unsigned\20char*\29 6904:portable::stack_rewind\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6905:portable::stack_checkpoint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6906:portable::srcover_rgba_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6907:portable::srcover\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6908:portable::srcout\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6909:portable::srcin\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6910:portable::srcatop\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6911:portable::sqrt_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6912:portable::splat_4_constants\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6913:portable::splat_3_constants\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6914:portable::splat_2_constants\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6915:portable::softlight\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6916:portable::smoothstep_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6917:portable::sin_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6918:portable::shuffle\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6919:portable::set_base_pointer\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6920:portable::seed_shader\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6921:portable::screen\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6922:portable::scale_u8\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6923:portable::scale_565\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6924:portable::saturation\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6925:portable::rgb_to_hsl\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6926:portable::repeat_y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6927:portable::repeat_x_1\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6928:portable::repeat_x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6929:portable::refract_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6930:portable::reenable_loop_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6931:portable::rect_memset64\28unsigned\20long\20long*\2c\20unsigned\20long\20long\2c\20int\2c\20unsigned\20long\2c\20int\29 6932:portable::rect_memset32\28unsigned\20int*\2c\20unsigned\20int\2c\20int\2c\20unsigned\20long\2c\20int\29 6933:portable::rect_memset16\28unsigned\20short*\2c\20unsigned\20short\2c\20int\2c\20unsigned\20long\2c\20int\29 6934:portable::premul_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6935:portable::premul\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6936:portable::pow_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6937:portable::plus_\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6938:portable::perlin_noise\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6939:portable::parametric\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6940:portable::overlay\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6941:portable::negate_x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6942:portable::multiply\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6943:portable::mul_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6944:portable::mul_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6945:portable::mul_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6946:portable::mul_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6947:portable::mul_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6948:portable::mul_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6949:portable::mul_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6950:portable::mul_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6951:portable::mul_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6952:portable::mul_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6953:portable::mul_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6954:portable::mul_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6955:portable::move_src_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6956:portable::move_dst_src\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6957:portable::modulate\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6958:portable::mod_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6959:portable::mod_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6960:portable::mod_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6961:portable::mod_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6962:portable::mod_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6963:portable::mix_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6964:portable::mix_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6965:portable::mix_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6966:portable::mix_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6967:portable::mix_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6968:portable::mix_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6969:portable::mix_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6970:portable::mix_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6971:portable::mix_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6972:portable::mix_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6973:portable::mirror_y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6974:portable::mirror_x_1\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6975:portable::mirror_x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6976:portable::mipmap_linear_update\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6977:portable::mipmap_linear_init\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6978:portable::mipmap_linear_finish\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6979:portable::min_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6980:portable::min_n_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6981:portable::min_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6982:portable::min_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6983:portable::min_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6984:portable::min_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6985:portable::min_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6986:portable::min_4_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6987:portable::min_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6988:portable::min_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6989:portable::min_3_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6990:portable::min_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6991:portable::min_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6992:portable::min_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6993:portable::min_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6994:portable::min_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6995:portable::merge_loop_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6996:portable::merge_inv_condition_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6997:portable::merge_condition_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 6998:portable::memset32\28unsigned\20int*\2c\20unsigned\20int\2c\20int\29 6999:portable::memset16\28unsigned\20short*\2c\20unsigned\20short\2c\20int\29 7000:portable::max_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7001:portable::max_n_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7002:portable::max_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7003:portable::max_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7004:portable::max_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7005:portable::max_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7006:portable::max_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7007:portable::max_4_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7008:portable::max_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7009:portable::max_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7010:portable::max_3_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7011:portable::max_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7012:portable::max_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7013:portable::max_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7014:portable::max_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7015:portable::max_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7016:portable::matrix_translate\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7017:portable::matrix_scale_translate\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7018:portable::matrix_perspective\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7019:portable::matrix_multiply_4\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7020:portable::matrix_multiply_3\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7021:portable::matrix_multiply_2\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7022:portable::matrix_4x5\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7023:portable::matrix_4x3\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7024:portable::matrix_3x4\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7025:portable::matrix_3x3\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7026:portable::matrix_2x3\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7027:portable::mask_off_return_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7028:portable::mask_off_loop_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7029:portable::mask_2pt_conical_nan\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7030:portable::mask_2pt_conical_degenerates\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7031:portable::luminosity\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7032:portable::log_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7033:portable::log2_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7034:portable::load_src_rg\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7035:portable::load_rgf16_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7036:portable::load_rgf16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7037:portable::load_rg88_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7038:portable::load_rg88\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7039:portable::load_rg1616_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7040:portable::load_rg1616\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7041:portable::load_return_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7042:portable::load_loop_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7043:portable::load_f32_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7044:portable::load_f32\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7045:portable::load_f16_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7046:portable::load_f16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7047:portable::load_condition_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7048:portable::load_af16_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7049:portable::load_af16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7050:portable::load_a8_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7051:portable::load_a8\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7052:portable::load_a16_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7053:portable::load_a16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7054:portable::load_8888_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7055:portable::load_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7056:portable::load_565_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7057:portable::load_565\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7058:portable::load_4444_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7059:portable::load_4444\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7060:portable::load_16161616_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7061:portable::load_16161616\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7062:portable::load_10x6_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7063:portable::load_10x6\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7064:portable::load_1010102_xr_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7065:portable::load_1010102_xr\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7066:portable::load_1010102_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7067:portable::load_1010102\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7068:portable::lighten\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7069:portable::lerp_u8\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7070:portable::lerp_565\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7071:portable::just_return\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7072:portable::jump\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7073:portable::invsqrt_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7074:portable::invsqrt_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7075:portable::invsqrt_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7076:portable::invsqrt_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7077:portable::inverted_CMYK_to_RGB1\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\29 7078:portable::inverted_CMYK_to_BGR1\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\29 7079:portable::inverse_mat4\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7080:portable::inverse_mat3\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7081:portable::inverse_mat2\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7082:portable::init_lane_masks\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7083:portable::hue\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7084:portable::hsl_to_rgb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7085:portable::hardlight\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7086:portable::gray_to_RGB1\28unsigned\20int*\2c\20unsigned\20char\20const*\2c\20int\29 7087:portable::grayA_to_rgbA\28unsigned\20int*\2c\20unsigned\20char\20const*\2c\20int\29 7088:portable::grayA_to_RGBA\28unsigned\20int*\2c\20unsigned\20char\20const*\2c\20int\29 7089:portable::gradient\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7090:portable::gauss_a_to_rgba\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7091:portable::gather_rgf16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7092:portable::gather_rg88\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7093:portable::gather_rg1616\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7094:portable::gather_f32\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7095:portable::gather_f16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7096:portable::gather_af16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7097:portable::gather_a8\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7098:portable::gather_a16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7099:portable::gather_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7100:portable::gather_565\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7101:portable::gather_4444\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7102:portable::gather_16161616\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7103:portable::gather_10x6\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7104:portable::gather_1010102_xr\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7105:portable::gather_1010102\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7106:portable::gamma_\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7107:portable::force_opaque_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7108:portable::force_opaque\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7109:portable::floor_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7110:portable::floor_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7111:portable::floor_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7112:portable::floor_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7113:portable::exp_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7114:portable::exp2_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7115:portable::exclusion\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7116:portable::exchange_src\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7117:portable::evenly_spaced_gradient\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7118:portable::evenly_spaced_2_stop_gradient\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7119:portable::emboss\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7120:portable::dstover\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7121:portable::dstout\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7122:portable::dstin\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7123:portable::dstatop\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7124:portable::dot_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7125:portable::dot_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7126:portable::dot_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7127:portable::div_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7128:portable::div_n_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7129:portable::div_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7130:portable::div_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7131:portable::div_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7132:portable::div_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7133:portable::div_4_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7134:portable::div_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7135:portable::div_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7136:portable::div_3_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7137:portable::div_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7138:portable::div_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7139:portable::div_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7140:portable::div_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7141:portable::div_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7142:portable::dither\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7143:portable::difference\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7144:portable::decal_y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7145:portable::decal_x_and_y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7146:portable::decal_x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7147:portable::darken\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7148:portable::css_oklab_to_linear_srgb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7149:portable::css_oklab_gamut_map_to_linear_srgb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7150:portable::css_lab_to_xyz\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7151:portable::css_hwb_to_srgb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7152:portable::css_hsl_to_srgb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7153:portable::css_hcl_to_lab\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7154:portable::cos_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7155:portable::copy_uniform\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7156:portable::copy_to_indirect_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7157:portable::copy_slot_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7158:portable::copy_slot_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7159:portable::copy_immutable_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7160:portable::copy_constant\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7161:portable::copy_4_uniforms\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7162:portable::copy_4_slots_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7163:portable::copy_4_slots_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7164:portable::copy_4_immutables_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7165:portable::copy_3_uniforms\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7166:portable::copy_3_slots_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7167:portable::copy_3_slots_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7168:portable::copy_3_immutables_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7169:portable::copy_2_uniforms\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7170:portable::copy_2_slots_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7171:portable::continue_op\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7172:portable::colordodge\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7173:portable::colorburn\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7174:portable::color\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7175:portable::cmpne_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7176:portable::cmpne_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7177:portable::cmpne_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7178:portable::cmpne_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7179:portable::cmpne_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7180:portable::cmpne_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7181:portable::cmpne_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7182:portable::cmpne_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7183:portable::cmpne_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7184:portable::cmpne_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7185:portable::cmpne_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7186:portable::cmpne_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7187:portable::cmplt_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7188:portable::cmplt_n_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7189:portable::cmplt_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7190:portable::cmplt_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7191:portable::cmplt_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7192:portable::cmplt_imm_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7193:portable::cmplt_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7194:portable::cmplt_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7195:portable::cmplt_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7196:portable::cmplt_4_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7197:portable::cmplt_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7198:portable::cmplt_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7199:portable::cmplt_3_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7200:portable::cmplt_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7201:portable::cmplt_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7202:portable::cmplt_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7203:portable::cmplt_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7204:portable::cmplt_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7205:portable::cmple_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7206:portable::cmple_n_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7207:portable::cmple_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7208:portable::cmple_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7209:portable::cmple_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7210:portable::cmple_imm_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7211:portable::cmple_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7212:portable::cmple_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7213:portable::cmple_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7214:portable::cmple_4_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7215:portable::cmple_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7216:portable::cmple_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7217:portable::cmple_3_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7218:portable::cmple_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7219:portable::cmple_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7220:portable::cmple_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7221:portable::cmple_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7222:portable::cmple_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7223:portable::cmpeq_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7224:portable::cmpeq_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7225:portable::cmpeq_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7226:portable::cmpeq_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7227:portable::cmpeq_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7228:portable::cmpeq_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7229:portable::cmpeq_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7230:portable::cmpeq_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7231:portable::cmpeq_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7232:portable::cmpeq_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7233:portable::cmpeq_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7234:portable::cmpeq_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7235:portable::clear\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7236:portable::clamp_x_and_y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7237:portable::clamp_x_1\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7238:portable::clamp_gamut\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7239:portable::clamp_01\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7240:portable::ceil_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7241:portable::ceil_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7242:portable::ceil_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7243:portable::ceil_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7244:portable::cast_to_uint_from_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7245:portable::cast_to_uint_from_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7246:portable::cast_to_uint_from_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7247:portable::cast_to_uint_from_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7248:portable::cast_to_int_from_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7249:portable::cast_to_int_from_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7250:portable::cast_to_int_from_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7251:portable::cast_to_int_from_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7252:portable::cast_to_float_from_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7253:portable::cast_to_float_from_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7254:portable::cast_to_float_from_4_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7255:portable::cast_to_float_from_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7256:portable::cast_to_float_from_3_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7257:portable::cast_to_float_from_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7258:portable::cast_to_float_from_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7259:portable::cast_to_float_from_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7260:portable::case_op\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7261:portable::callback\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7262:portable::byte_tables\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7263:portable::bt709_luminance_or_luma_to_rgb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7264:portable::bt709_luminance_or_luma_to_alpha\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7265:portable::branch_if_no_lanes_active\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7266:portable::branch_if_no_active_lanes_eq\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7267:portable::branch_if_any_lanes_active\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7268:portable::branch_if_all_lanes_active\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7269:portable::blit_row_s32a_opaque\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int\29 7270:portable::black_color\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7271:portable::bitwise_xor_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7272:portable::bitwise_xor_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7273:portable::bitwise_xor_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7274:portable::bitwise_xor_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7275:portable::bitwise_xor_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7276:portable::bitwise_xor_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7277:portable::bitwise_or_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7278:portable::bitwise_or_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7279:portable::bitwise_or_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7280:portable::bitwise_or_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7281:portable::bitwise_or_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7282:portable::bitwise_and_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7283:portable::bitwise_and_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7284:portable::bitwise_and_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7285:portable::bitwise_and_imm_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7286:portable::bitwise_and_imm_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7287:portable::bitwise_and_imm_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7288:portable::bitwise_and_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7289:portable::bitwise_and_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7290:portable::bitwise_and_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7291:portable::bilinear_setup\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7292:portable::bilinear_py\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7293:portable::bilinear_px\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7294:portable::bilinear_ny\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7295:portable::bilinear_nx\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7296:portable::bilerp_clamp_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7297:portable::bicubic_setup\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7298:portable::bicubic_p3y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7299:portable::bicubic_p3x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7300:portable::bicubic_p1y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7301:portable::bicubic_p1x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7302:portable::bicubic_n3y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7303:portable::bicubic_n3x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7304:portable::bicubic_n1y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7305:portable::bicubic_n1x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7306:portable::bicubic_clamp_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7307:portable::atan_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7308:portable::atan2_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7309:portable::asin_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7310:portable::alter_2pt_conical_unswap\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7311:portable::alter_2pt_conical_compensate_focal\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7312:portable::alpha_to_red_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7313:portable::alpha_to_red\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7314:portable::alpha_to_gray_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7315:portable::alpha_to_gray\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7316:portable::add_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7317:portable::add_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7318:portable::add_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7319:portable::add_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7320:portable::add_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7321:portable::add_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7322:portable::add_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7323:portable::add_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7324:portable::add_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7325:portable::add_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7326:portable::add_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7327:portable::add_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7328:portable::acos_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7329:portable::accumulate\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7330:portable::abs_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7331:portable::abs_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7332:portable::abs_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7333:portable::abs_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7334:portable::RGB_to_RGB1\28unsigned\20int*\2c\20unsigned\20char\20const*\2c\20int\29 7335:portable::RGB_to_BGR1\28unsigned\20int*\2c\20unsigned\20char\20const*\2c\20int\29 7336:portable::RGBA_to_rgbA\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\29 7337:portable::RGBA_to_bgrA\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\29 7338:portable::RGBA_to_BGRA\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\29 7339:portable::PQish\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7340:portable::HLGish\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7341:portable::HLGinvish\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 7342:pop_arg_long_double 7343:png_read_filter_row_up 7344:png_read_filter_row_sub 7345:png_read_filter_row_paeth_multibyte_pixel 7346:png_read_filter_row_paeth_1byte_pixel 7347:png_read_filter_row_avg 7348:pass2_no_dither 7349:pass2_fs_dither 7350:override_features_khmer\28hb_ot_shape_planner_t*\29 7351:override_features_indic\28hb_ot_shape_planner_t*\29 7352:override_features_hangul\28hb_ot_shape_planner_t*\29 7353:output_message\28jpeg_common_struct*\29 7354:output_message 7355:null_convert 7356:noop_upsample 7357:non-virtual\20thunk\20to\20std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29.1 7358:non-virtual\20thunk\20to\20std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29 7359:non-virtual\20thunk\20to\20std::__2::basic_iostream>::~basic_iostream\28\29.1 7360:non-virtual\20thunk\20to\20std::__2::basic_iostream>::~basic_iostream\28\29 7361:non-virtual\20thunk\20to\20skif::\28anonymous\20namespace\29::GaneshBackend::~GaneshBackend\28\29.3 7362:non-virtual\20thunk\20to\20skif::\28anonymous\20namespace\29::GaneshBackend::~GaneshBackend\28\29.2 7363:non-virtual\20thunk\20to\20skif::\28anonymous\20namespace\29::GaneshBackend::~GaneshBackend\28\29.1 7364:non-virtual\20thunk\20to\20skif::\28anonymous\20namespace\29::GaneshBackend::~GaneshBackend\28\29 7365:non-virtual\20thunk\20to\20skif::\28anonymous\20namespace\29::GaneshBackend::findAlgorithm\28SkSize\2c\20SkColorType\29\20const 7366:non-virtual\20thunk\20to\20skif::\28anonymous\20namespace\29::GaneshBackend::blur\28SkSize\2c\20sk_sp\2c\20SkIRect\20const&\2c\20SkTileMode\2c\20SkIRect\20const&\29\20const 7367:non-virtual\20thunk\20to\20skgpu::ganesh::SmallPathAtlasMgr::~SmallPathAtlasMgr\28\29.1 7368:non-virtual\20thunk\20to\20skgpu::ganesh::SmallPathAtlasMgr::~SmallPathAtlasMgr\28\29 7369:non-virtual\20thunk\20to\20skgpu::ganesh::SmallPathAtlasMgr::evict\28skgpu::PlotLocator\29 7370:non-virtual\20thunk\20to\20skgpu::ganesh::AtlasPathRenderer::~AtlasPathRenderer\28\29.1 7371:non-virtual\20thunk\20to\20skgpu::ganesh::AtlasPathRenderer::~AtlasPathRenderer\28\29 7372:non-virtual\20thunk\20to\20skgpu::ganesh::AtlasPathRenderer::preFlush\28GrOnFlushResourceProvider*\29 7373:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::TransformedMaskSubRun::vertexStride\28SkMatrix\20const&\29\20const 7374:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::TransformedMaskSubRun::regenerateAtlas\28int\2c\20int\2c\20std::__2::function\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>\29\20const 7375:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::TransformedMaskSubRun::makeAtlasTextOp\28GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20skgpu::ganesh::SurfaceDrawContext*\29\20const 7376:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::TransformedMaskSubRun::instanceFlags\28\29\20const 7377:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::TransformedMaskSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 7378:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::SDFTSubRun::~SDFTSubRun\28\29.1 7379:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::SDFTSubRun::~SDFTSubRun\28\29 7380:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::SDFTSubRun::regenerateAtlas\28int\2c\20int\2c\20std::__2::function\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>\29\20const 7381:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::SDFTSubRun::makeAtlasTextOp\28GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20skgpu::ganesh::SurfaceDrawContext*\29\20const 7382:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::SDFTSubRun::glyphCount\28\29\20const 7383:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::SDFTSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 7384:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::vertexStride\28SkMatrix\20const&\29\20const 7385:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::regenerateAtlas\28int\2c\20int\2c\20std::__2::function\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>\29\20const 7386:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::makeAtlasTextOp\28GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20skgpu::ganesh::SurfaceDrawContext*\29\20const 7387:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::instanceFlags\28\29\20const 7388:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 7389:non-virtual\20thunk\20to\20GrTextureRenderTargetProxy::~GrTextureRenderTargetProxy\28\29.1 7390:non-virtual\20thunk\20to\20GrTextureRenderTargetProxy::~GrTextureRenderTargetProxy\28\29 7391:non-virtual\20thunk\20to\20GrTextureRenderTargetProxy::onUninstantiatedGpuMemorySize\28\29\20const 7392:non-virtual\20thunk\20to\20GrTextureRenderTargetProxy::instantiate\28GrResourceProvider*\29 7393:non-virtual\20thunk\20to\20GrTextureRenderTargetProxy::createSurface\28GrResourceProvider*\29\20const 7394:non-virtual\20thunk\20to\20GrTextureRenderTargetProxy::callbackDesc\28\29\20const 7395:non-virtual\20thunk\20to\20GrOpFlushState::~GrOpFlushState\28\29.1 7396:non-virtual\20thunk\20to\20GrOpFlushState::~GrOpFlushState\28\29 7397:non-virtual\20thunk\20to\20GrOpFlushState::writeView\28\29\20const 7398:non-virtual\20thunk\20to\20GrOpFlushState::usesMSAASurface\28\29\20const 7399:non-virtual\20thunk\20to\20GrOpFlushState::threadSafeCache\28\29\20const 7400:non-virtual\20thunk\20to\20GrOpFlushState::strikeCache\28\29\20const 7401:non-virtual\20thunk\20to\20GrOpFlushState::smallPathAtlasManager\28\29\20const 7402:non-virtual\20thunk\20to\20GrOpFlushState::sampledProxyArray\28\29 7403:non-virtual\20thunk\20to\20GrOpFlushState::rtProxy\28\29\20const 7404:non-virtual\20thunk\20to\20GrOpFlushState::resourceProvider\28\29\20const 7405:non-virtual\20thunk\20to\20GrOpFlushState::renderPassBarriers\28\29\20const 7406:non-virtual\20thunk\20to\20GrOpFlushState::recordDraw\28GrGeometryProcessor\20const*\2c\20GrSimpleMesh\20const*\2c\20int\2c\20GrSurfaceProxy\20const*\20const*\2c\20GrPrimitiveType\29 7407:non-virtual\20thunk\20to\20GrOpFlushState::putBackVertices\28int\2c\20unsigned\20long\29 7408:non-virtual\20thunk\20to\20GrOpFlushState::putBackIndirectDraws\28int\29 7409:non-virtual\20thunk\20to\20GrOpFlushState::putBackIndices\28int\29 7410:non-virtual\20thunk\20to\20GrOpFlushState::putBackIndexedIndirectDraws\28int\29 7411:non-virtual\20thunk\20to\20GrOpFlushState::makeVertexSpace\28unsigned\20long\2c\20int\2c\20sk_sp*\2c\20int*\29 7412:non-virtual\20thunk\20to\20GrOpFlushState::makeVertexSpaceAtLeast\28unsigned\20long\2c\20int\2c\20int\2c\20sk_sp*\2c\20int*\2c\20int*\29 7413:non-virtual\20thunk\20to\20GrOpFlushState::makeIndexSpace\28int\2c\20sk_sp*\2c\20int*\29 7414:non-virtual\20thunk\20to\20GrOpFlushState::makeIndexSpaceAtLeast\28int\2c\20int\2c\20sk_sp*\2c\20int*\2c\20int*\29 7415:non-virtual\20thunk\20to\20GrOpFlushState::makeDrawIndirectSpace\28int\2c\20sk_sp*\2c\20unsigned\20long*\29 7416:non-virtual\20thunk\20to\20GrOpFlushState::makeDrawIndexedIndirectSpace\28int\2c\20sk_sp*\2c\20unsigned\20long*\29 7417:non-virtual\20thunk\20to\20GrOpFlushState::dstProxyView\28\29\20const 7418:non-virtual\20thunk\20to\20GrOpFlushState::detachAppliedClip\28\29 7419:non-virtual\20thunk\20to\20GrOpFlushState::deferredUploadTarget\28\29 7420:non-virtual\20thunk\20to\20GrOpFlushState::colorLoadOp\28\29\20const 7421:non-virtual\20thunk\20to\20GrOpFlushState::caps\28\29\20const 7422:non-virtual\20thunk\20to\20GrOpFlushState::atlasManager\28\29\20const 7423:non-virtual\20thunk\20to\20GrOpFlushState::appliedClip\28\29\20const 7424:non-virtual\20thunk\20to\20GrGpuBuffer::~GrGpuBuffer\28\29 7425:non-virtual\20thunk\20to\20GrGpuBuffer::unref\28\29\20const 7426:non-virtual\20thunk\20to\20GrGpuBuffer::ref\28\29\20const 7427:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::~GrGLTextureRenderTarget\28\29.1 7428:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::~GrGLTextureRenderTarget\28\29 7429:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::onSetLabel\28\29 7430:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::onRelease\28\29 7431:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::onGpuMemorySize\28\29\20const 7432:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::onAbandon\28\29 7433:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 7434:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::backendFormat\28\29\20const 7435:non-virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::~GrGLSLFragmentShaderBuilder\28\29.1 7436:non-virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::~GrGLSLFragmentShaderBuilder\28\29 7437:non-virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::hasSecondaryOutput\28\29\20const 7438:non-virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::enableAdvancedBlendEquationIfNeeded\28skgpu::BlendEquation\29 7439:non-virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::dstColor\28\29 7440:non-virtual\20thunk\20to\20GrGLBuffer::~GrGLBuffer\28\29.1 7441:non-virtual\20thunk\20to\20GrGLBuffer::~GrGLBuffer\28\29 7442:new_color_map_2_quant 7443:new_color_map_1_quant 7444:merged_2v_upsample 7445:merged_1v_upsample 7446:lin_srgb_to_oklab\28SkRGBA4f<\28SkAlphaType\292>\2c\20bool*\29 7447:lin_srgb_to_okhcl\28SkRGBA4f<\28SkAlphaType\292>\2c\20bool*\29 7448:legalstub$dynCall_vijiii 7449:legalstub$dynCall_viji 7450:legalstub$dynCall_vij 7451:legalstub$dynCall_viijii 7452:legalstub$dynCall_viij 7453:legalstub$dynCall_viiij 7454:legalstub$dynCall_viiiiij 7455:legalstub$dynCall_jiji 7456:legalstub$dynCall_jiiiiji 7457:legalstub$dynCall_jiiiiii 7458:legalstub$dynCall_jii 7459:legalstub$dynCall_ji 7460:legalstub$dynCall_iijj 7461:legalstub$dynCall_iiij 7462:legalstub$dynCall_iiiij 7463:legalstub$dynCall_iiiiijj 7464:legalstub$dynCall_iiiiij 7465:legalstub$dynCall_iiiiiijj 7466:legalfunc$glWaitSync 7467:legalfunc$glClientWaitSync 7468:lcd_to_a8\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29 7469:jpeg_start_decompress 7470:jpeg_skip_scanlines 7471:jpeg_save_markers 7472:jpeg_resync_to_restart 7473:jpeg_read_scanlines 7474:jpeg_read_raw_data 7475:jpeg_read_header 7476:jpeg_idct_islow 7477:jpeg_idct_ifast 7478:jpeg_idct_float 7479:jpeg_idct_9x9 7480:jpeg_idct_7x7 7481:jpeg_idct_6x6 7482:jpeg_idct_5x5 7483:jpeg_idct_4x4 7484:jpeg_idct_3x3 7485:jpeg_idct_2x2 7486:jpeg_idct_1x1 7487:jpeg_idct_16x16 7488:jpeg_idct_15x15 7489:jpeg_idct_14x14 7490:jpeg_idct_13x13 7491:jpeg_idct_12x12 7492:jpeg_idct_11x11 7493:jpeg_idct_10x10 7494:jpeg_crop_scanline 7495:is_deleted_glyph\28hb_glyph_info_t\20const*\29 7496:internal_memalign 7497:int_upsample 7498:initial_reordering_indic\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 7499:hit_compare_y\28SkOpRayHit\20const*\2c\20SkOpRayHit\20const*\29 7500:hit_compare_x\28SkOpRayHit\20const*\2c\20SkOpRayHit\20const*\29 7501:hb_unicode_script_nil\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20void*\29 7502:hb_unicode_general_category_nil\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20void*\29 7503:hb_ucd_script\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20void*\29 7504:hb_ucd_mirroring\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20void*\29 7505:hb_ucd_general_category\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20void*\29 7506:hb_ucd_decompose\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int*\2c\20void*\29 7507:hb_ucd_compose\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 7508:hb_ucd_combining_class\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20void*\29 7509:hb_syllabic_clear_var\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 7510:hb_paint_sweep_gradient_nil\28hb_paint_funcs_t*\2c\20void*\2c\20hb_color_line_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 7511:hb_paint_push_transform_nil\28hb_paint_funcs_t*\2c\20void*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 7512:hb_paint_push_clip_rectangle_nil\28hb_paint_funcs_t*\2c\20void*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 7513:hb_paint_image_nil\28hb_paint_funcs_t*\2c\20void*\2c\20hb_blob_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20float\2c\20hb_glyph_extents_t*\2c\20void*\29 7514:hb_paint_extents_push_transform\28hb_paint_funcs_t*\2c\20void*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 7515:hb_paint_extents_push_group\28hb_paint_funcs_t*\2c\20void*\2c\20void*\29 7516:hb_paint_extents_push_clip_rectangle\28hb_paint_funcs_t*\2c\20void*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 7517:hb_paint_extents_push_clip_glyph\28hb_paint_funcs_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_font_t*\2c\20void*\29 7518:hb_paint_extents_pop_transform\28hb_paint_funcs_t*\2c\20void*\2c\20void*\29 7519:hb_paint_extents_pop_group\28hb_paint_funcs_t*\2c\20void*\2c\20hb_paint_composite_mode_t\2c\20void*\29 7520:hb_paint_extents_pop_clip\28hb_paint_funcs_t*\2c\20void*\2c\20void*\29 7521:hb_paint_extents_paint_sweep_gradient\28hb_paint_funcs_t*\2c\20void*\2c\20hb_color_line_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 7522:hb_paint_extents_paint_image\28hb_paint_funcs_t*\2c\20void*\2c\20hb_blob_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20float\2c\20hb_glyph_extents_t*\2c\20void*\29 7523:hb_paint_extents_paint_color\28hb_paint_funcs_t*\2c\20void*\2c\20int\2c\20unsigned\20int\2c\20void*\29 7524:hb_outline_recording_pen_quadratic_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 7525:hb_outline_recording_pen_move_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20void*\29 7526:hb_outline_recording_pen_line_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20void*\29 7527:hb_outline_recording_pen_cubic_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 7528:hb_outline_recording_pen_close_path\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20void*\29 7529:hb_ot_paint_glyph\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_paint_funcs_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void*\29 7530:hb_ot_map_t::lookup_map_t::cmp\28void\20const*\2c\20void\20const*\29 7531:hb_ot_map_t::feature_map_t::cmp\28void\20const*\2c\20void\20const*\29 7532:hb_ot_map_builder_t::feature_info_t::cmp\28void\20const*\2c\20void\20const*\29 7533:hb_ot_get_variation_glyph\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 7534:hb_ot_get_nominal_glyphs\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int\2c\20void*\29 7535:hb_ot_get_nominal_glyph\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 7536:hb_ot_get_glyph_v_origin\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20void*\29 7537:hb_ot_get_glyph_v_advances\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20int*\2c\20unsigned\20int\2c\20void*\29 7538:hb_ot_get_glyph_name\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20char*\2c\20unsigned\20int\2c\20void*\29 7539:hb_ot_get_glyph_h_advances\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20int*\2c\20unsigned\20int\2c\20void*\29 7540:hb_ot_get_glyph_from_name\28hb_font_t*\2c\20void*\2c\20char\20const*\2c\20int\2c\20unsigned\20int*\2c\20void*\29 7541:hb_ot_get_glyph_extents\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_glyph_extents_t*\2c\20void*\29 7542:hb_ot_get_font_v_extents\28hb_font_t*\2c\20void*\2c\20hb_font_extents_t*\2c\20void*\29 7543:hb_ot_get_font_h_extents\28hb_font_t*\2c\20void*\2c\20hb_font_extents_t*\2c\20void*\29 7544:hb_ot_draw_glyph\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_draw_funcs_t*\2c\20void*\2c\20void*\29 7545:hb_font_paint_glyph_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_paint_funcs_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void*\29 7546:hb_font_get_variation_glyph_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 7547:hb_font_get_nominal_glyphs_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int\2c\20void*\29 7548:hb_font_get_nominal_glyph_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 7549:hb_font_get_nominal_glyph_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 7550:hb_font_get_glyph_v_origin_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20void*\29 7551:hb_font_get_glyph_v_origin_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20void*\29 7552:hb_font_get_glyph_v_kerning_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void*\29 7553:hb_font_get_glyph_v_advances_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20int*\2c\20unsigned\20int\2c\20void*\29 7554:hb_font_get_glyph_v_advance_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20void*\29 7555:hb_font_get_glyph_v_advance_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20void*\29 7556:hb_font_get_glyph_name_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20char*\2c\20unsigned\20int\2c\20void*\29 7557:hb_font_get_glyph_name_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20char*\2c\20unsigned\20int\2c\20void*\29 7558:hb_font_get_glyph_h_origin_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20void*\29 7559:hb_font_get_glyph_h_origin_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20void*\29 7560:hb_font_get_glyph_h_kerning_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void*\29 7561:hb_font_get_glyph_h_advances_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20int*\2c\20unsigned\20int\2c\20void*\29 7562:hb_font_get_glyph_h_advance_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20void*\29 7563:hb_font_get_glyph_h_advance_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20void*\29 7564:hb_font_get_glyph_from_name_default\28hb_font_t*\2c\20void*\2c\20char\20const*\2c\20int\2c\20unsigned\20int*\2c\20void*\29 7565:hb_font_get_glyph_extents_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_glyph_extents_t*\2c\20void*\29 7566:hb_font_get_glyph_extents_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_glyph_extents_t*\2c\20void*\29 7567:hb_font_get_glyph_contour_point_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20void*\29 7568:hb_font_get_glyph_contour_point_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20void*\29 7569:hb_font_get_font_v_extents_default\28hb_font_t*\2c\20void*\2c\20hb_font_extents_t*\2c\20void*\29 7570:hb_font_get_font_h_extents_default\28hb_font_t*\2c\20void*\2c\20hb_font_extents_t*\2c\20void*\29 7571:hb_font_draw_glyph_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_draw_funcs_t*\2c\20void*\2c\20void*\29 7572:hb_draw_quadratic_to_nil\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 7573:hb_draw_quadratic_to_default\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 7574:hb_draw_move_to_default\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20void*\29 7575:hb_draw_line_to_default\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20void*\29 7576:hb_draw_extents_quadratic_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 7577:hb_draw_extents_cubic_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 7578:hb_draw_cubic_to_default\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 7579:hb_draw_close_path_default\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20void*\29 7580:hb_blob_t*\20hb_sanitize_context_t::sanitize_blob\28hb_blob_t*\29 7581:hb_aat_map_builder_t::feature_info_t::cmp\28void\20const*\2c\20void\20const*\29 7582:hb_aat_map_builder_t::feature_event_t::cmp\28void\20const*\2c\20void\20const*\29 7583:h2v2_upsample 7584:h2v2_merged_upsample_565D 7585:h2v2_merged_upsample_565 7586:h2v2_merged_upsample 7587:h2v2_fancy_upsample 7588:h2v1_upsample 7589:h2v1_merged_upsample_565D 7590:h2v1_merged_upsample_565 7591:h2v1_merged_upsample 7592:h2v1_fancy_upsample 7593:grayscale_convert 7594:gray_rgb_convert 7595:gray_rgb565_convert 7596:gray_rgb565D_convert 7597:gray_raster_render 7598:gray_raster_new 7599:gray_raster_done 7600:gray_move_to 7601:gray_line_to 7602:gray_cubic_to 7603:gray_conic_to 7604:get_sk_marker_list\28jpeg_decompress_struct*\29 7605:get_sfnt_table 7606:get_interesting_appn 7607:fullsize_upsample 7608:ft_smooth_transform 7609:ft_smooth_set_mode 7610:ft_smooth_render 7611:ft_smooth_overlap_spans 7612:ft_smooth_lcd_spans 7613:ft_smooth_init 7614:ft_smooth_get_cbox 7615:ft_gzip_free 7616:ft_gzip_alloc 7617:ft_ansi_stream_io 7618:ft_ansi_stream_close 7619:fquad_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 7620:format_message 7621:fmt_fp 7622:fline_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 7623:first_axis_intersection\28double\20const*\2c\20bool\2c\20double\2c\20double*\29 7624:finish_pass1 7625:finish_output_pass 7626:finish_input_pass 7627:final_reordering_indic\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 7628:fcubic_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 7629:fconic_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 7630:fast_swizzle_rgba_to_rgba_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 7631:fast_swizzle_rgba_to_bgra_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 7632:fast_swizzle_rgba_to_bgra_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 7633:fast_swizzle_rgb_to_rgba\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 7634:fast_swizzle_rgb_to_bgra\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 7635:fast_swizzle_grayalpha_to_n32_unpremul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 7636:fast_swizzle_grayalpha_to_n32_premul\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 7637:fast_swizzle_gray_to_n32\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 7638:fast_swizzle_cmyk_to_rgba\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 7639:fast_swizzle_cmyk_to_bgra\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 7640:error_exit 7641:error_callback 7642:emscripten::internal::MethodInvoker\20const&\2c\20float\2c\20float\2c\20SkPaint\20const&\29\2c\20void\2c\20SkCanvas*\2c\20sk_sp\20const&\2c\20float\2c\20float\2c\20SkPaint\20const&>::invoke\28void\20\28SkCanvas::*\20const&\29\28sk_sp\20const&\2c\20float\2c\20float\2c\20SkPaint\20const&\29\2c\20SkCanvas*\2c\20sk_sp*\2c\20float\2c\20float\2c\20SkPaint*\29 7643:emscripten::internal::MethodInvoker::invoke\28void\20\28SkCanvas::*\20const&\29\28float\2c\20float\2c\20float\2c\20float\2c\20SkPaint\20const&\29\2c\20SkCanvas*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20SkPaint*\29 7644:emscripten::internal::MethodInvoker::invoke\28void\20\28SkCanvas::*\20const&\29\28float\2c\20float\2c\20float\2c\20SkPaint\20const&\29\2c\20SkCanvas*\2c\20float\2c\20float\2c\20float\2c\20SkPaint*\29 7645:emscripten::internal::MethodInvoker::invoke\28void\20\28SkCanvas::*\20const&\29\28float\2c\20float\2c\20float\29\2c\20SkCanvas*\2c\20float\2c\20float\2c\20float\29 7646:emscripten::internal::MethodInvoker::invoke\28void\20\28SkCanvas::*\20const&\29\28float\2c\20float\29\2c\20SkCanvas*\2c\20float\2c\20float\29 7647:emscripten::internal::MethodInvoker::invoke\28void\20\28SkCanvas::*\20const&\29\28SkPath\20const&\2c\20SkPaint\20const&\29\2c\20SkCanvas*\2c\20SkPath*\2c\20SkPaint*\29 7648:emscripten::internal::MethodInvoker\20\28skia::textlayout::Paragraph::*\29\28unsigned\20int\29\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::Paragraph*\2c\20unsigned\20int>::invoke\28skia::textlayout::SkRange\20\28skia::textlayout::Paragraph::*\20const&\29\28unsigned\20int\29\2c\20skia::textlayout::Paragraph*\2c\20unsigned\20int\29 7649:emscripten::internal::MethodInvoker::invoke\28skia::textlayout::PositionWithAffinity\20\28skia::textlayout::Paragraph::*\20const&\29\28float\2c\20float\29\2c\20skia::textlayout::Paragraph*\2c\20float\2c\20float\29 7650:emscripten::internal::MethodInvoker::invoke\28int\20\28skia::textlayout::Paragraph::*\20const&\29\28unsigned\20long\29\20const\2c\20skia::textlayout::Paragraph\20const*\2c\20unsigned\20long\29 7651:emscripten::internal::MethodInvoker::invoke\28bool\20\28SkPath::*\20const&\29\28float\2c\20float\29\20const\2c\20SkPath\20const*\2c\20float\2c\20float\29 7652:emscripten::internal::MethodInvoker::invoke\28SkPath&\20\28SkPath::*\20const&\29\28bool\29\2c\20SkPath*\2c\20bool\29 7653:emscripten::internal::Invoker::invoke\28void\20\28*\29\28unsigned\20long\2c\20unsigned\20long\29\2c\20unsigned\20long\2c\20unsigned\20long\29 7654:emscripten::internal::Invoker::invoke\28void\20\28*\29\28emscripten::val\29\2c\20emscripten::_EM_VAL*\29 7655:emscripten::internal::Invoker::invoke\28unsigned\20long\20\28*\29\28unsigned\20long\29\2c\20unsigned\20long\29 7656:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFont\20const&>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFont\20const&\29\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFont*\29 7657:emscripten::internal::Invoker\2c\20sk_sp\2c\20int\2c\20int\2c\20sk_sp\2c\20int\2c\20int>::invoke\28sk_sp\20\28*\29\28sk_sp\2c\20int\2c\20int\2c\20sk_sp\2c\20int\2c\20int\29\2c\20sk_sp*\2c\20int\2c\20int\2c\20sk_sp*\2c\20int\2c\20int\29 7658:emscripten::internal::Invoker\2c\20sk_sp\2c\20int\2c\20int\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28sk_sp\2c\20int\2c\20int\2c\20sk_sp\29\2c\20sk_sp*\2c\20int\2c\20int\2c\20sk_sp*\29 7659:emscripten::internal::Invoker\2c\20sk_sp\2c\20int\2c\20int>::invoke\28sk_sp\20\28*\29\28sk_sp\2c\20int\2c\20int\29\2c\20sk_sp*\2c\20int\2c\20int\29 7660:emscripten::internal::Invoker\2c\20sk_sp\2c\20SimpleImageInfo>::invoke\28sk_sp\20\28*\29\28sk_sp\2c\20SimpleImageInfo\29\2c\20sk_sp*\2c\20SimpleImageInfo*\29 7661:emscripten::internal::Invoker\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long>::invoke\28sk_sp\20\28*\29\28SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\29\2c\20SimpleImageInfo*\2c\20unsigned\20long\2c\20unsigned\20long\29 7662:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp\29\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp*\29 7663:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20sk_sp\29\2c\20unsigned\20long\2c\20sk_sp*\29 7664:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp\29\2c\20unsigned\20long\2c\20float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp*\29 7665:emscripten::internal::Invoker\2c\20float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20float\2c\20float\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20float\2c\20float\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp\29\2c\20float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20float\2c\20float\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp*\29 7666:emscripten::internal::Invoker\2c\20float\2c\20float\2c\20int\2c\20float\2c\20int\2c\20int>::invoke\28sk_sp\20\28*\29\28float\2c\20float\2c\20int\2c\20float\2c\20int\2c\20int\29\2c\20float\2c\20float\2c\20int\2c\20float\2c\20int\2c\20int\29 7667:emscripten::internal::Invoker\2c\20float\2c\20float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28float\2c\20float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp\29\2c\20float\2c\20float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp*\29 7668:emscripten::internal::Invoker\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20emscripten::val>::invoke\28sk_sp\20\28*\29\28std::__2::basic_string\2c\20std::__2::allocator>\2c\20emscripten::val\29\2c\20emscripten::internal::BindingType\2c\20std::__2::allocator>\2c\20void>::'unnamed'*\2c\20emscripten::_EM_VAL*\29 7669:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20int\2c\20float>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20int\2c\20float\29\2c\20unsigned\20long\2c\20int\2c\20float\29 7670:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20SkPath>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20SkPath\29\2c\20unsigned\20long\2c\20SkPath*\29 7671:emscripten::internal::Invoker\2c\20float\2c\20unsigned\20long>::invoke\28sk_sp\20\28*\29\28float\2c\20unsigned\20long\29\2c\20float\2c\20unsigned\20long\29 7672:emscripten::internal::Invoker\2c\20float\2c\20float\2c\20unsigned\20int>::invoke\28sk_sp\20\28*\29\28float\2c\20float\2c\20unsigned\20int\29\2c\20float\2c\20float\2c\20unsigned\20int\29 7673:emscripten::internal::Invoker\2c\20float>::invoke\28sk_sp\20\28*\29\28float\29\2c\20float\29 7674:emscripten::internal::Invoker\2c\20SkPath\20const&\2c\20float\2c\20float\2c\20SkPath1DPathEffect::Style>::invoke\28sk_sp\20\28*\29\28SkPath\20const&\2c\20float\2c\20float\2c\20SkPath1DPathEffect::Style\29\2c\20SkPath*\2c\20float\2c\20float\2c\20SkPath1DPathEffect::Style\29 7675:emscripten::internal::Invoker\2c\20SkBlurStyle\2c\20float\2c\20bool>::invoke\28sk_sp\20\28*\29\28SkBlurStyle\2c\20float\2c\20bool\29\2c\20SkBlurStyle\2c\20float\2c\20bool\29 7676:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20float\2c\20float\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20float\2c\20float\2c\20sk_sp\29\2c\20unsigned\20long\2c\20float\2c\20float\2c\20sk_sp*\29 7677:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20sk_sp\29\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20sk_sp*\29 7678:emscripten::internal::Invoker\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28sk_sp\29\2c\20sk_sp*\29 7679:emscripten::internal::Invoker\2c\20sk_sp\2c\20float\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long>::invoke\28sk_sp\20\28*\29\28sk_sp\2c\20float\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\29\2c\20sk_sp*\2c\20float\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\29 7680:emscripten::internal::Invoker\2c\20sk_sp\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20unsigned\20long\2c\20unsigned\20long>::invoke\28sk_sp\20\28*\29\28sk_sp\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20unsigned\20long\2c\20unsigned\20long\29\2c\20sk_sp*\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20unsigned\20long\2c\20unsigned\20long\29 7681:emscripten::internal::Invoker\2c\20float\2c\20float\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28float\2c\20float\2c\20sk_sp\29\2c\20float\2c\20float\2c\20sk_sp*\29 7682:emscripten::internal::Invoker\2c\20float\2c\20float\2c\20float\2c\20float\2c\20unsigned\20long\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28float\2c\20float\2c\20float\2c\20float\2c\20unsigned\20long\2c\20sk_sp\29\2c\20float\2c\20float\2c\20float\2c\20float\2c\20unsigned\20long\2c\20sk_sp*\29 7683:emscripten::internal::Invoker\2c\20float\2c\20float\2c\20SkTileMode\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28float\2c\20float\2c\20SkTileMode\2c\20sk_sp\29\2c\20float\2c\20float\2c\20SkTileMode\2c\20sk_sp*\29 7684:emscripten::internal::Invoker\2c\20SkColorChannel\2c\20SkColorChannel\2c\20float\2c\20sk_sp\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28SkColorChannel\2c\20SkColorChannel\2c\20float\2c\20sk_sp\2c\20sk_sp\29\2c\20SkColorChannel\2c\20SkColorChannel\2c\20float\2c\20sk_sp*\2c\20sk_sp*\29 7685:emscripten::internal::Invoker\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long>::invoke\28sk_sp\20\28*\29\28SimpleImageInfo\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long\29\2c\20SimpleImageInfo*\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long\29 7686:emscripten::internal::Invoker\2c\20SimpleImageInfo\2c\20emscripten::val>::invoke\28sk_sp\20\28*\29\28SimpleImageInfo\2c\20emscripten::val\29\2c\20SimpleImageInfo*\2c\20emscripten::_EM_VAL*\29 7687:emscripten::internal::Invoker\2c\20unsigned\20long\2c\20SkBlendMode\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28unsigned\20long\2c\20SkBlendMode\2c\20sk_sp\29\2c\20unsigned\20long\2c\20SkBlendMode\2c\20sk_sp*\29 7688:emscripten::internal::Invoker\2c\20sk_sp\20const&\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28sk_sp\20const&\2c\20sk_sp\29\2c\20sk_sp*\2c\20sk_sp*\29 7689:emscripten::internal::Invoker\2c\20float\2c\20sk_sp\2c\20sk_sp>::invoke\28sk_sp\20\28*\29\28float\2c\20sk_sp\2c\20sk_sp\29\2c\20float\2c\20sk_sp*\2c\20sk_sp*\29 7690:emscripten::internal::Invoker::invoke\28emscripten::val\20\28*\29\28unsigned\20long\2c\20int\29\2c\20unsigned\20long\2c\20int\29 7691:emscripten::internal::Invoker\2c\20std::__2::allocator>>::invoke\28emscripten::val\20\28*\29\28std::__2::basic_string\2c\20std::__2::allocator>\29\2c\20emscripten::internal::BindingType\2c\20std::__2::allocator>\2c\20void>::'unnamed'*\29 7692:emscripten::internal::Invoker::invoke\28emscripten::val\20\28*\29\28emscripten::val\2c\20emscripten::val\2c\20float\29\2c\20emscripten::_EM_VAL*\2c\20emscripten::_EM_VAL*\2c\20float\29 7693:emscripten::internal::Invoker::invoke\28emscripten::val\20\28*\29\28SkPath\20const&\2c\20SkPath\20const&\2c\20float\29\2c\20SkPath*\2c\20SkPath*\2c\20float\29 7694:emscripten::internal::Invoker::invoke\28emscripten::val\20\28*\29\28SkPath\20const&\2c\20SkPath\20const&\2c\20SkPathOp\29\2c\20SkPath*\2c\20SkPath*\2c\20SkPathOp\29 7695:emscripten::internal::Invoker::invoke\28bool\20\28*\29\28unsigned\20long\2c\20SkPath\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20unsigned\20int\2c\20unsigned\20long\29\2c\20unsigned\20long\2c\20SkPath*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20unsigned\20int\2c\20unsigned\20long\29 7696:emscripten::internal::Invoker\2c\20sk_sp>::invoke\28bool\20\28*\29\28sk_sp\2c\20sk_sp\29\2c\20sk_sp*\2c\20sk_sp*\29 7697:emscripten::internal::Invoker::invoke\28bool\20\28*\29\28SkPath\20const&\2c\20SkPath\20const&\29\2c\20SkPath*\2c\20SkPath*\29 7698:emscripten::internal::Invoker::invoke\28SkVertices::Builder*\20\28*\29\28SkVertices::VertexMode&&\2c\20int&&\2c\20int&&\2c\20unsigned\20int&&\29\2c\20SkVertices::VertexMode\2c\20int\2c\20int\2c\20unsigned\20int\29 7699:emscripten::internal::Invoker\2c\20int\2c\20int>::invoke\28SkRuntimeEffect::TracedShader\20\28*\29\28sk_sp\2c\20int\2c\20int\29\2c\20sk_sp*\2c\20int\2c\20int\29 7700:emscripten::internal::Invoker::invoke\28SkPath\20\28*\29\28unsigned\20long\2c\20int\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long\2c\20int\29\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long\2c\20int\29 7701:emscripten::internal::Invoker&&\2c\20float&&\2c\20float&&\2c\20float&&>::invoke\28SkFont*\20\28*\29\28sk_sp&&\2c\20float&&\2c\20float&&\2c\20float&&\29\2c\20sk_sp*\2c\20float\2c\20float\2c\20float\29 7702:emscripten::internal::Invoker&&\2c\20float&&>::invoke\28SkFont*\20\28*\29\28sk_sp&&\2c\20float&&\29\2c\20sk_sp*\2c\20float\29 7703:emscripten::internal::Invoker&&>::invoke\28SkFont*\20\28*\29\28sk_sp&&\29\2c\20sk_sp*\29 7704:emscripten::internal::Invoker::invoke\28SkContourMeasureIter*\20\28*\29\28SkPath\20const&\2c\20bool&&\2c\20float&&\29\2c\20SkPath*\2c\20bool\2c\20float\29 7705:emscripten::internal::Invoker::invoke\28SkCanvas*\20\28*\29\28float&&\2c\20float&&\29\2c\20float\2c\20float\29 7706:emscripten::internal::FunctionInvoker\2c\20unsigned\20long\29\2c\20void\2c\20skia::textlayout::TypefaceFontProvider&\2c\20sk_sp\2c\20unsigned\20long>::invoke\28void\20\28**\29\28skia::textlayout::TypefaceFontProvider&\2c\20sk_sp\2c\20unsigned\20long\29\2c\20skia::textlayout::TypefaceFontProvider*\2c\20sk_sp*\2c\20unsigned\20long\29 7707:emscripten::internal::FunctionInvoker\2c\20std::__2::allocator>\29\2c\20void\2c\20skia::textlayout::ParagraphBuilderImpl&\2c\20std::__2::basic_string\2c\20std::__2::allocator>>::invoke\28void\20\28**\29\28skia::textlayout::ParagraphBuilderImpl&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29\2c\20skia::textlayout::ParagraphBuilderImpl*\2c\20emscripten::internal::BindingType\2c\20std::__2::allocator>\2c\20void>::'unnamed'*\29 7708:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28skia::textlayout::ParagraphBuilderImpl&\2c\20float\2c\20float\2c\20skia::textlayout::PlaceholderAlignment\2c\20skia::textlayout::TextBaseline\2c\20float\29\2c\20skia::textlayout::ParagraphBuilderImpl*\2c\20float\2c\20float\2c\20skia::textlayout::PlaceholderAlignment\2c\20skia::textlayout::TextBaseline\2c\20float\29 7709:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28skia::textlayout::ParagraphBuilderImpl&\2c\20SimpleTextStyle\2c\20SkPaint\2c\20SkPaint\29\2c\20skia::textlayout::ParagraphBuilderImpl*\2c\20SimpleTextStyle*\2c\20SkPaint*\2c\20SkPaint*\29 7710:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28skia::textlayout::ParagraphBuilderImpl&\2c\20SimpleTextStyle\29\2c\20skia::textlayout::ParagraphBuilderImpl*\2c\20SimpleTextStyle*\29 7711:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29\2c\20SkPath*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 7712:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29\2c\20SkPath*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 7713:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29\2c\20SkPath*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 7714:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20bool\2c\20bool\2c\20float\2c\20float\29\2c\20SkPath*\2c\20float\2c\20float\2c\20float\2c\20bool\2c\20bool\2c\20float\2c\20float\29 7715:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20bool\29\2c\20SkPath*\2c\20float\2c\20float\2c\20float\2c\20bool\29 7716:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkPath&\2c\20SkPath\20const&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20bool\29\2c\20SkPath*\2c\20SkPath*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20bool\29 7717:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkContourMeasure&\2c\20float\2c\20unsigned\20long\29\2c\20SkContourMeasure*\2c\20float\2c\20unsigned\20long\29 7718:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkCanvas&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkFont\20const&\2c\20SkPaint\20const&\29\2c\20SkCanvas*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkFont*\2c\20SkPaint*\29 7719:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkCanvas&\2c\20unsigned\20long\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29\2c\20SkCanvas*\2c\20unsigned\20long\2c\20float\2c\20float\2c\20bool\2c\20SkPaint*\29 7720:emscripten::internal::FunctionInvoker\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20SkBlendMode\2c\20float\2c\20float\2c\20SkPaint\20const*\29\2c\20void\2c\20SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20SkBlendMode\2c\20float\2c\20float\2c\20SkPaint\20const*>::invoke\28void\20\28**\29\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20SkBlendMode\2c\20float\2c\20float\2c\20SkPaint\20const*\29\2c\20SkCanvas*\2c\20sk_sp*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20SkBlendMode\2c\20float\2c\20float\2c\20SkPaint\20const*\29 7721:emscripten::internal::FunctionInvoker\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkPaint\20const*\29\2c\20void\2c\20SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkPaint\20const*>::invoke\28void\20\28**\29\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkPaint\20const*\29\2c\20SkCanvas*\2c\20sk_sp*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkPaint\20const*\29 7722:emscripten::internal::FunctionInvoker\20const&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20SkPaint\20const*\29\2c\20void\2c\20SkCanvas&\2c\20sk_sp\20const&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20SkPaint\20const*>::invoke\28void\20\28**\29\28SkCanvas&\2c\20sk_sp\20const&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20SkPaint\20const*\29\2c\20SkCanvas*\2c\20sk_sp*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20SkPaint\20const*\29 7723:emscripten::internal::FunctionInvoker\20const&\2c\20float\2c\20float\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29\2c\20void\2c\20SkCanvas&\2c\20sk_sp\20const&\2c\20float\2c\20float\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*>::invoke\28void\20\28**\29\28SkCanvas&\2c\20sk_sp\20const&\2c\20float\2c\20float\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29\2c\20SkCanvas*\2c\20sk_sp*\2c\20float\2c\20float\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29 7724:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkCanvas&\2c\20int\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkFont\20const&\2c\20SkPaint\20const&\29\2c\20SkCanvas*\2c\20int\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkFont*\2c\20SkPaint*\29 7725:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkCanvas&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20SkPaint\20const&\29\2c\20SkCanvas*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20SkPaint*\29 7726:emscripten::internal::FunctionInvoker::invoke\28void\20\28**\29\28SkCanvas&\2c\20SkPath\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20int\29\2c\20SkCanvas*\2c\20SkPath*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20int\29 7727:emscripten::internal::FunctionInvoker\2c\20std::__2::allocator>\20\28*\29\28SkSL::DebugTrace&\29\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20SkSL::DebugTrace&>::invoke\28std::__2::basic_string\2c\20std::__2::allocator>\20\28**\29\28SkSL::DebugTrace&\29\2c\20SkSL::DebugTrace*\29 7728:emscripten::internal::FunctionInvoker\20\28*\29\28SkFontMgr&\2c\20unsigned\20long\2c\20int\29\2c\20sk_sp\2c\20SkFontMgr&\2c\20unsigned\20long\2c\20int>::invoke\28sk_sp\20\28**\29\28SkFontMgr&\2c\20unsigned\20long\2c\20int\29\2c\20SkFontMgr*\2c\20unsigned\20long\2c\20int\29 7729:emscripten::internal::FunctionInvoker\20\28*\29\28SkFontMgr&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20emscripten::val\29\2c\20sk_sp\2c\20SkFontMgr&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20emscripten::val>::invoke\28sk_sp\20\28**\29\28SkFontMgr&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20emscripten::val\29\2c\20SkFontMgr*\2c\20emscripten::internal::BindingType\2c\20std::__2::allocator>\2c\20void>::'unnamed'*\2c\20emscripten::_EM_VAL*\29 7730:emscripten::internal::FunctionInvoker\20\28*\29\28sk_sp\2c\20SkTileMode\2c\20SkTileMode\2c\20float\2c\20float\2c\20unsigned\20long\29\2c\20sk_sp\2c\20sk_sp\2c\20SkTileMode\2c\20SkTileMode\2c\20float\2c\20float\2c\20unsigned\20long>::invoke\28sk_sp\20\28**\29\28sk_sp\2c\20SkTileMode\2c\20SkTileMode\2c\20float\2c\20float\2c\20unsigned\20long\29\2c\20sk_sp*\2c\20SkTileMode\2c\20SkTileMode\2c\20float\2c\20float\2c\20unsigned\20long\29 7731:emscripten::internal::FunctionInvoker\20\28*\29\28sk_sp\2c\20SkTileMode\2c\20SkTileMode\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20unsigned\20long\29\2c\20sk_sp\2c\20sk_sp\2c\20SkTileMode\2c\20SkTileMode\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20unsigned\20long>::invoke\28sk_sp\20\28**\29\28sk_sp\2c\20SkTileMode\2c\20SkTileMode\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20unsigned\20long\29\2c\20sk_sp*\2c\20SkTileMode\2c\20SkTileMode\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20unsigned\20long\29 7732:emscripten::internal::FunctionInvoker\20\28*\29\28SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29\2c\20sk_sp\2c\20SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long>::invoke\28sk_sp\20\28**\29\28SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29\2c\20SkRuntimeEffect*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29 7733:emscripten::internal::FunctionInvoker\20\28*\29\28SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\29\2c\20sk_sp\2c\20SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long>::invoke\28sk_sp\20\28**\29\28SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\29\2c\20SkRuntimeEffect*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\29 7734:emscripten::internal::FunctionInvoker\20\28*\29\28SkPicture&\2c\20SkTileMode\2c\20SkTileMode\2c\20SkFilterMode\2c\20unsigned\20long\2c\20unsigned\20long\29\2c\20sk_sp\2c\20SkPicture&\2c\20SkTileMode\2c\20SkTileMode\2c\20SkFilterMode\2c\20unsigned\20long\2c\20unsigned\20long>::invoke\28sk_sp\20\28**\29\28SkPicture&\2c\20SkTileMode\2c\20SkTileMode\2c\20SkFilterMode\2c\20unsigned\20long\2c\20unsigned\20long\29\2c\20SkPicture*\2c\20SkTileMode\2c\20SkTileMode\2c\20SkFilterMode\2c\20unsigned\20long\2c\20unsigned\20long\29 7735:emscripten::internal::FunctionInvoker\20\28*\29\28SkPictureRecorder&\29\2c\20sk_sp\2c\20SkPictureRecorder&>::invoke\28sk_sp\20\28**\29\28SkPictureRecorder&\29\2c\20SkPictureRecorder*\29 7736:emscripten::internal::FunctionInvoker\20\28*\29\28SkSurface&\2c\20unsigned\20long\29\2c\20sk_sp\2c\20SkSurface&\2c\20unsigned\20long>::invoke\28sk_sp\20\28**\29\28SkSurface&\2c\20unsigned\20long\29\2c\20SkSurface*\2c\20unsigned\20long\29 7737:emscripten::internal::FunctionInvoker\20\28*\29\28SkSurface&\2c\20unsigned\20int\2c\20unsigned\20int\2c\20SimpleImageInfo\29\2c\20sk_sp\2c\20SkSurface&\2c\20unsigned\20int\2c\20unsigned\20int\2c\20SimpleImageInfo>::invoke\28sk_sp\20\28**\29\28SkSurface&\2c\20unsigned\20int\2c\20unsigned\20int\2c\20SimpleImageInfo\29\2c\20SkSurface*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20SimpleImageInfo*\29 7738:emscripten::internal::FunctionInvoker\20\28*\29\28SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\29\2c\20sk_sp\2c\20SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool>::invoke\28sk_sp\20\28**\29\28SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\29\2c\20SkRuntimeEffect*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\29 7739:emscripten::internal::FunctionInvoker::invoke\28int\20\28**\29\28SkCanvas&\2c\20SkPaint\29\2c\20SkCanvas*\2c\20SkPaint*\29 7740:emscripten::internal::FunctionInvoker::invoke\28emscripten::val\20\28**\29\28skia::textlayout::Paragraph&\2c\20unsigned\20int\2c\20unsigned\20int\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\29\2c\20skia::textlayout::Paragraph*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\29 7741:emscripten::internal::FunctionInvoker::invoke\28emscripten::val\20\28**\29\28skia::textlayout::Paragraph&\2c\20float\2c\20float\29\2c\20skia::textlayout::Paragraph*\2c\20float\2c\20float\29 7742:emscripten::internal::FunctionInvoker\2c\20SkEncodedImageFormat\2c\20int\2c\20GrDirectContext*\29\2c\20emscripten::val\2c\20sk_sp\2c\20SkEncodedImageFormat\2c\20int\2c\20GrDirectContext*>::invoke\28emscripten::val\20\28**\29\28sk_sp\2c\20SkEncodedImageFormat\2c\20int\2c\20GrDirectContext*\29\2c\20sk_sp*\2c\20SkEncodedImageFormat\2c\20int\2c\20GrDirectContext*\29 7743:emscripten::internal::FunctionInvoker\2c\20SkEncodedImageFormat\2c\20int\29\2c\20emscripten::val\2c\20sk_sp\2c\20SkEncodedImageFormat\2c\20int>::invoke\28emscripten::val\20\28**\29\28sk_sp\2c\20SkEncodedImageFormat\2c\20int\29\2c\20sk_sp*\2c\20SkEncodedImageFormat\2c\20int\29 7744:emscripten::internal::FunctionInvoker\29\2c\20emscripten::val\2c\20sk_sp>::invoke\28emscripten::val\20\28**\29\28sk_sp\29\2c\20sk_sp*\29 7745:emscripten::internal::FunctionInvoker::invoke\28emscripten::val\20\28**\29\28SkFont&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20float\2c\20float\29\2c\20SkFont*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20float\2c\20float\29 7746:emscripten::internal::FunctionInvoker\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\2c\20GrDirectContext*\29\2c\20bool\2c\20sk_sp\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\2c\20GrDirectContext*>::invoke\28bool\20\28**\29\28sk_sp\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\2c\20GrDirectContext*\29\2c\20sk_sp*\2c\20SimpleImageInfo*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\2c\20GrDirectContext*\29 7747:emscripten::internal::FunctionInvoker\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\29\2c\20bool\2c\20sk_sp\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int>::invoke\28bool\20\28**\29\28sk_sp\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\29\2c\20sk_sp*\2c\20SimpleImageInfo*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\29 7748:emscripten::internal::FunctionInvoker::invoke\28bool\20\28**\29\28SkPath&\2c\20float\2c\20float\2c\20float\29\2c\20SkPath*\2c\20float\2c\20float\2c\20float\29 7749:emscripten::internal::FunctionInvoker::invoke\28bool\20\28**\29\28SkPath&\2c\20float\2c\20float\2c\20bool\29\2c\20SkPath*\2c\20float\2c\20float\2c\20bool\29 7750:emscripten::internal::FunctionInvoker::invoke\28bool\20\28**\29\28SkPath&\2c\20StrokeOpts\29\2c\20SkPath*\2c\20StrokeOpts*\29 7751:emscripten::internal::FunctionInvoker::invoke\28bool\20\28**\29\28SkCanvas&\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\29\2c\20SkCanvas*\2c\20SimpleImageInfo*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\29 7752:emscripten::internal::FunctionInvoker::invoke\28SkPath\20\28**\29\28SkPath\20const&\29\2c\20SkPath*\29 7753:emscripten::internal::FunctionInvoker::invoke\28SkPath\20\28**\29\28SkContourMeasure&\2c\20float\2c\20float\2c\20bool\29\2c\20SkContourMeasure*\2c\20float\2c\20float\2c\20bool\29 7754:emscripten::internal::FunctionInvoker::invoke\28SkPaint\20\28**\29\28SkPaint\20const&\29\2c\20SkPaint*\29 7755:emscripten::internal::FunctionInvoker::invoke\28SimpleImageInfo\20\28**\29\28SkSurface&\29\2c\20SkSurface*\29 7756:emscripten::internal::FunctionInvoker::invoke\28RuntimeEffectUniform\20\28**\29\28SkRuntimeEffect&\2c\20int\29\2c\20SkRuntimeEffect*\2c\20int\29 7757:emit_message 7758:embind_init_Skia\28\29::$_9::__invoke\28SkAnimatedImage&\29 7759:embind_init_Skia\28\29::$_99::__invoke\28SkPath&\2c\20unsigned\20long\2c\20bool\29 7760:embind_init_Skia\28\29::$_98::__invoke\28SkPath&\2c\20unsigned\20long\2c\20int\2c\20bool\29 7761:embind_init_Skia\28\29::$_97::__invoke\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20bool\29 7762:embind_init_Skia\28\29::$_96::__invoke\28SkPath&\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20int\29 7763:embind_init_Skia\28\29::$_95::__invoke\28SkPath&\2c\20unsigned\20long\2c\20float\2c\20float\29 7764:embind_init_Skia\28\29::$_94::__invoke\28unsigned\20long\2c\20SkPath\29 7765:embind_init_Skia\28\29::$_93::__invoke\28float\2c\20unsigned\20long\29 7766:embind_init_Skia\28\29::$_92::__invoke\28unsigned\20long\2c\20int\2c\20float\29 7767:embind_init_Skia\28\29::$_91::__invoke\28\29 7768:embind_init_Skia\28\29::$_90::__invoke\28\29 7769:embind_init_Skia\28\29::$_8::__invoke\28emscripten::val\29 7770:embind_init_Skia\28\29::$_89::__invoke\28sk_sp\2c\20sk_sp\29 7771:embind_init_Skia\28\29::$_88::__invoke\28SkPaint&\2c\20unsigned\20int\2c\20sk_sp\29 7772:embind_init_Skia\28\29::$_87::__invoke\28SkPaint&\2c\20unsigned\20int\29 7773:embind_init_Skia\28\29::$_86::__invoke\28SkPaint&\2c\20unsigned\20long\2c\20sk_sp\29 7774:embind_init_Skia\28\29::$_85::__invoke\28SkPaint&\2c\20unsigned\20long\29 7775:embind_init_Skia\28\29::$_84::__invoke\28SkPaint\20const&\29 7776:embind_init_Skia\28\29::$_83::__invoke\28SkBlurStyle\2c\20float\2c\20bool\29 7777:embind_init_Skia\28\29::$_82::__invoke\28float\2c\20float\2c\20sk_sp\29 7778:embind_init_Skia\28\29::$_81::__invoke\28unsigned\20long\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20sk_sp\29 7779:embind_init_Skia\28\29::$_80::__invoke\28unsigned\20long\2c\20float\2c\20float\2c\20sk_sp\29 7780:embind_init_Skia\28\29::$_7::__invoke\28GrDirectContext&\2c\20unsigned\20long\29 7781:embind_init_Skia\28\29::$_79::__invoke\28sk_sp\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20unsigned\20long\2c\20unsigned\20long\29 7782:embind_init_Skia\28\29::$_78::__invoke\28sk_sp\2c\20float\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\29 7783:embind_init_Skia\28\29::$_77::__invoke\28float\2c\20float\2c\20sk_sp\29 7784:embind_init_Skia\28\29::$_76::__invoke\28float\2c\20float\2c\20float\2c\20float\2c\20unsigned\20long\2c\20sk_sp\29 7785:embind_init_Skia\28\29::$_75::__invoke\28float\2c\20float\2c\20float\2c\20float\2c\20unsigned\20long\2c\20sk_sp\29 7786:embind_init_Skia\28\29::$_74::__invoke\28sk_sp\29 7787:embind_init_Skia\28\29::$_73::__invoke\28SkColorChannel\2c\20SkColorChannel\2c\20float\2c\20sk_sp\2c\20sk_sp\29 7788:embind_init_Skia\28\29::$_72::__invoke\28float\2c\20float\2c\20sk_sp\29 7789:embind_init_Skia\28\29::$_71::__invoke\28sk_sp\2c\20sk_sp\29 7790:embind_init_Skia\28\29::$_70::__invoke\28float\2c\20float\2c\20SkTileMode\2c\20sk_sp\29 7791:embind_init_Skia\28\29::$_6::__invoke\28GrDirectContext&\29 7792:embind_init_Skia\28\29::$_69::__invoke\28SkBlendMode\2c\20sk_sp\2c\20sk_sp\29 7793:embind_init_Skia\28\29::$_68::__invoke\28SkImageFilter\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29 7794:embind_init_Skia\28\29::$_67::__invoke\28sk_sp\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\29 7795:embind_init_Skia\28\29::$_66::__invoke\28sk_sp\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\2c\20GrDirectContext*\29 7796:embind_init_Skia\28\29::$_65::__invoke\28sk_sp\2c\20SkTileMode\2c\20SkTileMode\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20unsigned\20long\29 7797:embind_init_Skia\28\29::$_64::__invoke\28sk_sp\2c\20SkTileMode\2c\20SkTileMode\2c\20float\2c\20float\2c\20unsigned\20long\29 7798:embind_init_Skia\28\29::$_63::__invoke\28sk_sp\29 7799:embind_init_Skia\28\29::$_62::__invoke\28sk_sp\2c\20SkEncodedImageFormat\2c\20int\2c\20GrDirectContext*\29 7800:embind_init_Skia\28\29::$_61::__invoke\28sk_sp\2c\20SkEncodedImageFormat\2c\20int\29 7801:embind_init_Skia\28\29::$_60::__invoke\28sk_sp\29 7802:embind_init_Skia\28\29::$_5::__invoke\28GrDirectContext&\29 7803:embind_init_Skia\28\29::$_59::__invoke\28sk_sp\29 7804:embind_init_Skia\28\29::$_58::__invoke\28SkFontMgr&\2c\20unsigned\20long\2c\20int\29 7805:embind_init_Skia\28\29::$_57::__invoke\28SkFontMgr&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20emscripten::val\29 7806:embind_init_Skia\28\29::$_56::__invoke\28SkFontMgr&\2c\20int\29 7807:embind_init_Skia\28\29::$_55::__invoke\28unsigned\20long\2c\20unsigned\20long\2c\20int\29 7808:embind_init_Skia\28\29::$_54::__invoke\28SkFont&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20float\2c\20float\29 7809:embind_init_Skia\28\29::$_53::__invoke\28SkFont&\29 7810:embind_init_Skia\28\29::$_52::__invoke\28SkFont&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29 7811:embind_init_Skia\28\29::$_51::__invoke\28SkFont&\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkPaint*\29 7812:embind_init_Skia\28\29::$_50::__invoke\28SkContourMeasure&\2c\20float\2c\20float\2c\20bool\29 7813:embind_init_Skia\28\29::$_4::__invoke\28unsigned\20long\2c\20unsigned\20long\29 7814:embind_init_Skia\28\29::$_49::__invoke\28SkContourMeasure&\2c\20float\2c\20unsigned\20long\29 7815:embind_init_Skia\28\29::$_48::__invoke\28unsigned\20long\29 7816:embind_init_Skia\28\29::$_47::__invoke\28unsigned\20long\2c\20SkBlendMode\2c\20sk_sp\29 7817:embind_init_Skia\28\29::$_46::__invoke\28SkCanvas&\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\29 7818:embind_init_Skia\28\29::$_45::__invoke\28SkCanvas&\2c\20SkPaint\29 7819:embind_init_Skia\28\29::$_44::__invoke\28SkCanvas&\2c\20SkPaint\20const*\2c\20unsigned\20long\2c\20SkImageFilter\20const*\2c\20unsigned\20int\29 7820:embind_init_Skia\28\29::$_43::__invoke\28SkCanvas&\2c\20SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20int\29 7821:embind_init_Skia\28\29::$_42::__invoke\28SkCanvas&\2c\20SimpleImageInfo\29 7822:embind_init_Skia\28\29::$_41::__invoke\28SkCanvas\20const&\2c\20unsigned\20long\29 7823:embind_init_Skia\28\29::$_40::__invoke\28SkCanvas\20const&\2c\20unsigned\20long\29 7824:embind_init_Skia\28\29::$_3::__invoke\28unsigned\20long\2c\20SkPath\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20unsigned\20int\2c\20unsigned\20long\29 7825:embind_init_Skia\28\29::$_39::__invoke\28SkCanvas\20const&\2c\20unsigned\20long\29 7826:embind_init_Skia\28\29::$_38::__invoke\28SkCanvas&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkFont\20const&\2c\20SkPaint\20const&\29 7827:embind_init_Skia\28\29::$_37::__invoke\28SkCanvas&\2c\20SkPath\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20int\29 7828:embind_init_Skia\28\29::$_36::__invoke\28SkCanvas&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20SkPaint\20const&\29 7829:embind_init_Skia\28\29::$_35::__invoke\28SkCanvas&\2c\20unsigned\20long\2c\20SkPaint\20const&\29 7830:embind_init_Skia\28\29::$_34::__invoke\28SkCanvas&\2c\20unsigned\20long\2c\20SkPaint\20const&\29 7831:embind_init_Skia\28\29::$_33::__invoke\28SkCanvas&\2c\20SkCanvas::PointMode\2c\20unsigned\20long\2c\20int\2c\20SkPaint&\29 7832:embind_init_Skia\28\29::$_32::__invoke\28SkCanvas&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkBlendMode\2c\20SkPaint\20const&\29 7833:embind_init_Skia\28\29::$_31::__invoke\28SkCanvas&\2c\20skia::textlayout::Paragraph*\2c\20float\2c\20float\29 7834:embind_init_Skia\28\29::$_30::__invoke\28SkCanvas&\2c\20unsigned\20long\2c\20SkPaint\20const&\29 7835:embind_init_Skia\28\29::$_2::__invoke\28SimpleImageInfo\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long\29 7836:embind_init_Skia\28\29::$_29::__invoke\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29 7837:embind_init_Skia\28\29::$_28::__invoke\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkPaint\20const*\29 7838:embind_init_Skia\28\29::$_27::__invoke\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkPaint\20const*\2c\20bool\29 7839:embind_init_Skia\28\29::$_26::__invoke\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFilterMode\2c\20SkPaint\20const*\29 7840:embind_init_Skia\28\29::$_25::__invoke\28SkCanvas&\2c\20sk_sp\20const&\2c\20float\2c\20float\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29 7841:embind_init_Skia\28\29::$_24::__invoke\28SkCanvas&\2c\20sk_sp\20const&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20SkPaint\20const*\29 7842:embind_init_Skia\28\29::$_23::__invoke\28SkCanvas&\2c\20sk_sp\20const&\2c\20float\2c\20float\2c\20SkPaint\20const*\29 7843:embind_init_Skia\28\29::$_22::__invoke\28SkCanvas&\2c\20int\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\2c\20SkFont\20const&\2c\20SkPaint\20const&\29 7844:embind_init_Skia\28\29::$_21::__invoke\28SkCanvas&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkPaint\20const&\29 7845:embind_init_Skia\28\29::$_20::__invoke\28SkCanvas&\2c\20unsigned\20int\2c\20SkBlendMode\29 7846:embind_init_Skia\28\29::$_1::__invoke\28unsigned\20long\2c\20unsigned\20long\29 7847:embind_init_Skia\28\29::$_19::__invoke\28SkCanvas&\2c\20unsigned\20long\2c\20SkBlendMode\29 7848:embind_init_Skia\28\29::$_18::__invoke\28SkCanvas&\2c\20unsigned\20long\29 7849:embind_init_Skia\28\29::$_17::__invoke\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20SkBlendMode\2c\20float\2c\20float\2c\20SkPaint\20const*\29 7850:embind_init_Skia\28\29::$_16::__invoke\28SkCanvas&\2c\20sk_sp\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\2c\20SkBlendMode\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkPaint\20const*\29 7851:embind_init_Skia\28\29::$_15::__invoke\28SkCanvas&\2c\20unsigned\20long\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 7852:embind_init_Skia\28\29::$_14::__invoke\28SkCanvas&\2c\20unsigned\20long\29 7853:embind_init_Skia\28\29::$_148::__invoke\28SkVertices::Builder&\29 7854:embind_init_Skia\28\29::$_147::__invoke\28SkVertices::Builder&\29 7855:embind_init_Skia\28\29::$_146::__invoke\28SkVertices::Builder&\29 7856:embind_init_Skia\28\29::$_145::__invoke\28SkVertices::Builder&\29 7857:embind_init_Skia\28\29::$_144::__invoke\28SkVertices&\2c\20unsigned\20long\29 7858:embind_init_Skia\28\29::$_143::__invoke\28SkTypeface&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29 7859:embind_init_Skia\28\29::$_142::__invoke\28unsigned\20long\2c\20int\29 7860:embind_init_Skia\28\29::$_141::__invoke\28\29 7861:embind_init_Skia\28\29::$_140::__invoke\28unsigned\20long\2c\20unsigned\20long\2c\20SkFont\20const&\29 7862:embind_init_Skia\28\29::$_13::__invoke\28SkCanvas&\2c\20unsigned\20long\2c\20SkClipOp\2c\20bool\29 7863:embind_init_Skia\28\29::$_139::__invoke\28unsigned\20long\2c\20unsigned\20long\2c\20SkFont\20const&\29 7864:embind_init_Skia\28\29::$_138::__invoke\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFont\20const&\29 7865:embind_init_Skia\28\29::$_137::__invoke\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkFont\20const&\29 7866:embind_init_Skia\28\29::$_136::__invoke\28SkSurface&\29 7867:embind_init_Skia\28\29::$_135::__invoke\28SkSurface&\29 7868:embind_init_Skia\28\29::$_134::__invoke\28SkSurface&\29 7869:embind_init_Skia\28\29::$_133::__invoke\28SkSurface&\2c\20SimpleImageInfo\29 7870:embind_init_Skia\28\29::$_132::__invoke\28SkSurface&\2c\20unsigned\20long\29 7871:embind_init_Skia\28\29::$_131::__invoke\28SkSurface&\2c\20unsigned\20int\2c\20unsigned\20int\2c\20SimpleImageInfo\29 7872:embind_init_Skia\28\29::$_130::__invoke\28SkSurface&\29 7873:embind_init_Skia\28\29::$_12::__invoke\28SkCanvas&\2c\20unsigned\20long\2c\20SkClipOp\2c\20bool\29 7874:embind_init_Skia\28\29::$_129::__invoke\28SkSurface&\29 7875:embind_init_Skia\28\29::$_128::__invoke\28SimpleImageInfo\2c\20unsigned\20long\2c\20unsigned\20long\29 7876:embind_init_Skia\28\29::$_127::__invoke\28SkRuntimeEffect&\2c\20int\29 7877:embind_init_Skia\28\29::$_126::__invoke\28SkRuntimeEffect&\2c\20int\29 7878:embind_init_Skia\28\29::$_125::__invoke\28SkRuntimeEffect&\29 7879:embind_init_Skia\28\29::$_124::__invoke\28SkRuntimeEffect&\29 7880:embind_init_Skia\28\29::$_123::__invoke\28SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\29 7881:embind_init_Skia\28\29::$_122::__invoke\28SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29 7882:embind_init_Skia\28\29::$_121::__invoke\28SkRuntimeEffect&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\2c\20unsigned\20long\29 7883:embind_init_Skia\28\29::$_120::__invoke\28sk_sp\2c\20int\2c\20int\29 7884:embind_init_Skia\28\29::$_11::__invoke\28SkCanvas&\2c\20unsigned\20long\29 7885:embind_init_Skia\28\29::$_119::__invoke\28std::__2::basic_string\2c\20std::__2::allocator>\2c\20emscripten::val\29 7886:embind_init_Skia\28\29::$_118::__invoke\28std::__2::basic_string\2c\20std::__2::allocator>\2c\20emscripten::val\29 7887:embind_init_Skia\28\29::$_117::__invoke\28SkSL::DebugTrace&\29 7888:embind_init_Skia\28\29::$_116::__invoke\28unsigned\20long\2c\20float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp\29 7889:embind_init_Skia\28\29::$_115::__invoke\28float\2c\20float\2c\20int\2c\20float\2c\20int\2c\20int\29 7890:embind_init_Skia\28\29::$_114::__invoke\28float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20float\2c\20float\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp\29 7891:embind_init_Skia\28\29::$_113::__invoke\28float\2c\20float\2c\20float\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp\29 7892:embind_init_Skia\28\29::$_112::__invoke\28unsigned\20long\2c\20unsigned\20long\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20unsigned\20long\2c\20sk_sp\29 7893:embind_init_Skia\28\29::$_111::__invoke\28float\2c\20float\2c\20int\2c\20float\2c\20int\2c\20int\29 7894:embind_init_Skia\28\29::$_110::__invoke\28unsigned\20long\2c\20sk_sp\29 7895:embind_init_Skia\28\29::$_10::__invoke\28SkAnimatedImage&\29 7896:embind_init_Skia\28\29::$_109::operator\28\29\28SkPicture&\29\20const::'lambda'\28SkImage*\2c\20void*\29::__invoke\28SkImage*\2c\20void*\29 7897:embind_init_Skia\28\29::$_109::__invoke\28SkPicture&\29 7898:embind_init_Skia\28\29::$_108::__invoke\28SkPicture&\2c\20unsigned\20long\29 7899:embind_init_Skia\28\29::$_107::__invoke\28SkPicture&\2c\20SkTileMode\2c\20SkTileMode\2c\20SkFilterMode\2c\20unsigned\20long\2c\20unsigned\20long\29 7900:embind_init_Skia\28\29::$_106::__invoke\28SkPictureRecorder&\29 7901:embind_init_Skia\28\29::$_105::__invoke\28SkPictureRecorder&\2c\20unsigned\20long\2c\20bool\29 7902:embind_init_Skia\28\29::$_104::__invoke\28SkPath&\2c\20unsigned\20long\29 7903:embind_init_Skia\28\29::$_103::__invoke\28SkPath&\2c\20unsigned\20long\29 7904:embind_init_Skia\28\29::$_102::__invoke\28SkPath&\2c\20int\2c\20unsigned\20long\29 7905:embind_init_Skia\28\29::$_101::__invoke\28SkPath&\2c\20unsigned\20long\2c\20float\2c\20float\2c\20bool\29 7906:embind_init_Skia\28\29::$_100::__invoke\28SkPath&\2c\20unsigned\20long\2c\20bool\29 7907:embind_init_Skia\28\29::$_0::__invoke\28unsigned\20long\2c\20unsigned\20long\29 7908:embind_init_Paragraph\28\29::$_9::__invoke\28skia::textlayout::ParagraphBuilderImpl&\2c\20unsigned\20long\2c\20unsigned\20long\29 7909:embind_init_Paragraph\28\29::$_8::__invoke\28skia::textlayout::ParagraphBuilderImpl&\29 7910:embind_init_Paragraph\28\29::$_7::__invoke\28skia::textlayout::ParagraphBuilderImpl&\2c\20float\2c\20float\2c\20skia::textlayout::PlaceholderAlignment\2c\20skia::textlayout::TextBaseline\2c\20float\29 7911:embind_init_Paragraph\28\29::$_6::__invoke\28skia::textlayout::ParagraphBuilderImpl&\2c\20SimpleTextStyle\2c\20SkPaint\2c\20SkPaint\29 7912:embind_init_Paragraph\28\29::$_5::__invoke\28skia::textlayout::ParagraphBuilderImpl&\2c\20SimpleTextStyle\29 7913:embind_init_Paragraph\28\29::$_4::__invoke\28skia::textlayout::ParagraphBuilderImpl&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 7914:embind_init_Paragraph\28\29::$_3::__invoke\28emscripten::val\2c\20emscripten::val\2c\20float\29 7915:embind_init_Paragraph\28\29::$_2::__invoke\28SimpleParagraphStyle\2c\20sk_sp\29 7916:embind_init_Paragraph\28\29::$_18::__invoke\28skia::textlayout::FontCollection&\2c\20sk_sp\20const&\29 7917:embind_init_Paragraph\28\29::$_17::__invoke\28\29 7918:embind_init_Paragraph\28\29::$_16::__invoke\28skia::textlayout::TypefaceFontProvider&\2c\20sk_sp\2c\20unsigned\20long\29 7919:embind_init_Paragraph\28\29::$_15::__invoke\28\29 7920:embind_init_Paragraph\28\29::$_14::__invoke\28skia::textlayout::ParagraphBuilderImpl&\2c\20unsigned\20long\2c\20unsigned\20long\29 7921:embind_init_Paragraph\28\29::$_13::__invoke\28skia::textlayout::ParagraphBuilderImpl&\2c\20unsigned\20long\2c\20unsigned\20long\29 7922:embind_init_Paragraph\28\29::$_12::__invoke\28skia::textlayout::ParagraphBuilderImpl&\2c\20unsigned\20long\2c\20unsigned\20long\29 7923:embind_init_Paragraph\28\29::$_11::__invoke\28skia::textlayout::ParagraphBuilderImpl&\2c\20unsigned\20long\2c\20unsigned\20long\29 7924:embind_init_Paragraph\28\29::$_10::__invoke\28skia::textlayout::ParagraphBuilderImpl&\2c\20unsigned\20long\2c\20unsigned\20long\29 7925:dispose_external_texture\28void*\29 7926:deleteJSTexture\28void*\29 7927:deflate_slow 7928:deflate_fast 7929:decompress_smooth_data 7930:decompress_onepass 7931:decompress_data 7932:decompose_unicode\28hb_ot_shape_normalize_context_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int*\29 7933:decompose_khmer\28hb_ot_shape_normalize_context_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int*\29 7934:decompose_indic\28hb_ot_shape_normalize_context_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int*\29 7935:decode_mcu_DC_refine 7936:decode_mcu_DC_first 7937:decode_mcu_AC_refine 7938:decode_mcu_AC_first 7939:decode_mcu 7940:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28skgpu::ganesh::\28anonymous\20namespace\29::QuadEdgeEffect::Make\28SkArenaAlloc*\2c\20SkMatrix\20const&\2c\20bool\2c\20bool\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 7941:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make&\2c\20GrShaderCaps\20const&>\28SkMatrix\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>&\2c\20GrShaderCaps\20const&\29::'lambda'\28void*\29>\28skgpu::ganesh::\28anonymous\20namespace\29::HullShader&&\29::'lambda'\28char*\29::__invoke\28char*\29 7942:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28skgpu::ganesh::StrokeTessellator::PathStrokeList&&\29::'lambda'\28void*\29>\28skgpu::ganesh::StrokeTessellator::PathStrokeList&&\29::'lambda'\28char*\29::__invoke\28char*\29 7943:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28skgpu::tess::PatchAttribs&\29::'lambda'\28void*\29>\28skgpu::ganesh::StrokeTessellator&&\29::'lambda'\28char*\29::__invoke\28char*\29 7944:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\20const&>\28SkMatrix\20const&\2c\20SkPath\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\29::'lambda'\28void*\29>\28skgpu::ganesh::PathTessellator::PathDrawList&&\29::'lambda'\28char*\29::__invoke\28char*\29 7945:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Processor::Make\28SkArenaAlloc*\2c\20GrAAType\2c\20skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::ProcessorFlags\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 7946:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28int&\2c\20int&\29::'lambda'\28void*\29>\28skgpu::RectanizerSkyline&&\29::'lambda'\28char*\29::__invoke\28char*\29 7947:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28int&\2c\20int&\29::'lambda'\28void*\29>\28skgpu::RectanizerPow2&&\29::'lambda'\28char*\29::__invoke\28char*\29 7948:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make*\20SkArenaAlloc::make>\28\29::'lambda'\28void*\29>\28sk_sp&&\29::'lambda'\28char*\29::__invoke\28char*\29 7949:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::TextureOpImpl::Desc*\20SkArenaAlloc::make<\28anonymous\20namespace\29::TextureOpImpl::Desc>\28\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::TextureOpImpl::Desc&&\29::'lambda'\28char*\29::__invoke\28char*\29 7950:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::TentPass*\20SkArenaAlloc::make<\28anonymous\20namespace\29::TentPass\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20int&\2c\20int&>\28skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20int&\2c\20int&\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::TentPass&&\29::'lambda'\28char*\29::__invoke\28char*\29 7951:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::SimpleTriangleShader*\20SkArenaAlloc::make<\28anonymous\20namespace\29::SimpleTriangleShader\2c\20SkMatrix\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&>\28SkMatrix\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::SimpleTriangleShader&&\29::'lambda'\28char*\29::__invoke\28char*\29 7952:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::GaussPass*\20SkArenaAlloc::make<\28anonymous\20namespace\29::GaussPass\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20int&\2c\20int&>\28skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20int&\2c\20int&\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::GaussPass&&\29::'lambda'\28char*\29::__invoke\28char*\29 7953:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::DrawAtlasPathShader*\20SkArenaAlloc::make<\28anonymous\20namespace\29::DrawAtlasPathShader\2c\20bool&\2c\20skgpu::ganesh::AtlasInstancedHelper*\2c\20GrShaderCaps\20const&>\28bool&\2c\20skgpu::ganesh::AtlasInstancedHelper*&&\2c\20GrShaderCaps\20const&\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::DrawAtlasPathShader&&\29::'lambda'\28char*\29::__invoke\28char*\29 7954:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::BoundingBoxShader*\20SkArenaAlloc::make<\28anonymous\20namespace\29::BoundingBoxShader\2c\20SkRGBA4f<\28SkAlphaType\292>&\2c\20GrShaderCaps\20const&>\28SkRGBA4f<\28SkAlphaType\292>&\2c\20GrShaderCaps\20const&\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::BoundingBoxShader&&\29::'lambda'\28char*\29::__invoke\28char*\29 7955:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkPixmap\20const&\2c\20unsigned\20char&&\29::'lambda'\28void*\29>\28Sprite_D32_S32&&\29::'lambda'\28char*\29::__invoke\28char*\29 7956:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28bool&&\2c\20bool\20const&\29::'lambda'\28void*\29>\28SkTriColorShader&&\29::'lambda'\28char*\29::__invoke\28char*\29 7957:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28\29::'lambda'\28void*\29>\28SkTCubic&&\29::'lambda'\28char*\29::__invoke\28char*\29 7958:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28\29::'lambda'\28void*\29>\28SkTConic&&\29::'lambda'\28char*\29::__invoke\28char*\29 7959:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkPixmap\20const&\29::'lambda'\28void*\29>\28SkSpriteBlitter_Memcpy&&\29::'lambda'\28char*\29::__invoke\28char*\29 7960:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make&>\28SkPixmap\20const&\2c\20SkArenaAlloc*&\2c\20sk_sp&\29::'lambda'\28void*\29>\28SkRasterPipelineSpriteBlitter&&\29::'lambda'\28char*\29::__invoke\28char*\29 7961:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkPixmap\20const&\2c\20SkArenaAlloc*&\29::'lambda'\28void*\29>\28SkRasterPipelineBlitter&&\29::'lambda'\28char*\29::__invoke\28char*\29 7962:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28\29::'lambda'\28void*\29>\28SkNullBlitter&&\29::'lambda'\28char*\29::__invoke\28char*\29 7963:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkImage_Base\20const*&&\2c\20SkMatrix\20const&\2c\20SkMipmapMode&\29::'lambda'\28void*\29>\28SkMipmapAccessor&&\29::'lambda'\28char*\29::__invoke\28char*\29 7964:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28\29::'lambda'\28void*\29>\28SkGlyph::PathData&&\29::'lambda'\28char*\29::__invoke\28char*\29 7965:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28\29::'lambda'\28void*\29>\28SkGlyph::DrawableData&&\29::'lambda'\28char*\29::__invoke\28char*\29 7966:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkGlyph&&\29::'lambda'\28void*\29>\28SkGlyph&&\29::'lambda'\28char*\29::__invoke\28char*\29 7967:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make&\29>>::Node*\20SkArenaAlloc::make&\29>>::Node\2c\20std::__2::function&\29>>\28std::__2::function&\29>&&\29::'lambda'\28void*\29>\28SkArenaAllocList&\29>>::Node&&\29::'lambda'\28char*\29::__invoke\28char*\29 7968:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make::Node*\20SkArenaAlloc::make::Node\2c\20std::__2::function&\29>\2c\20skgpu::AtlasToken>\28std::__2::function&\29>&&\2c\20skgpu::AtlasToken&&\29::'lambda'\28void*\29>\28SkArenaAllocList::Node&&\29::'lambda'\28char*\29::__invoke\28char*\29 7969:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make::Node*\20SkArenaAlloc::make::Node>\28\29::'lambda'\28void*\29>\28SkArenaAllocList::Node&&\29::'lambda'\28char*\29::__invoke\28char*\29 7970:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkPixmap\20const&\2c\20SkPaint\20const&\29::'lambda'\28void*\29>\28SkA8_Coverage_Blitter&&\29::'lambda'\28char*\29::__invoke\28char*\29 7971:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28\29::'lambda'\28void*\29>\28GrSimpleMesh&&\29::'lambda'\28char*\29::__invoke\28char*\29 7972:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28GrSurfaceProxy*&\2c\20skgpu::ScratchKey&&\2c\20GrResourceProvider*&\29::'lambda'\28void*\29>\28GrResourceAllocator::Register&&\29::'lambda'\28char*\29::__invoke\28char*\29 7973:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkPath\20const&\2c\20SkArenaAlloc*\20const&\29::'lambda'\28void*\29>\28GrInnerFanTriangulator&&\29::'lambda'\28char*\29::__invoke\28char*\29 7974:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28GrDistanceFieldLCDTextGeoProc::Make\28SkArenaAlloc*\2c\20GrShaderCaps\20const&\2c\20GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\2c\20GrDistanceFieldLCDTextGeoProc::DistanceAdjust\2c\20unsigned\20int\2c\20SkMatrix\20const&\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 7975:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\20const&\2c\20bool\2c\20sk_sp\2c\20GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\2c\20skgpu::MaskFormat\2c\20SkMatrix\20const&\2c\20bool\29::'lambda'\28void*\29>\28GrBitmapTextGeoProc::Make\28SkArenaAlloc*\2c\20GrShaderCaps\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20bool\2c\20sk_sp\2c\20GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\2c\20skgpu::MaskFormat\2c\20SkMatrix\20const&\2c\20bool\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 7976:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28GrAppliedClip&&\29::'lambda'\28void*\29>\28GrAppliedClip&&\29::'lambda'\28char*\29::__invoke\28char*\29 7977:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28EllipseGeometryProcessor::Make\28SkArenaAlloc*\2c\20bool\2c\20bool\2c\20bool\2c\20SkMatrix\20const&\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 7978:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul\2c\201ul>::__dispatch\5babi:v160004\5d>::__generic_construct\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&>\28std::__2::__variant_detail::__ctor>&\2c\20std::__2::__variant_detail::__copy_constructor\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\29::'lambda'\28std::__2::__variant_detail::__copy_constructor\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__copy_constructor\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 7979:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul\2c\201ul>::__dispatch\5babi:v160004\5d>::__generic_assign\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>>\28std::__2::__variant_detail::__move_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>&&\29::'lambda'\28std::__2::__variant_detail::__move_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&&>\28std::__2::__variant_detail::__move_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&&\29 7980:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul\2c\201ul>::__dispatch\5babi:v160004\5d>::__generic_assign\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&>\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\29::'lambda'\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 7981:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul\2c\201ul>::__dispatch\5babi:v160004\5d>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__visitation::__variant::__value_visitor>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 7982:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul>::__dispatch\5babi:v160004\5d\2c\20std::__2::unique_ptr>>\2c\20\28std::__2::__variant_detail::_Trait\291>::__destroy\5babi:v160004\5d\28\29::'lambda'\28auto&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&>\28auto\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&\29 7983:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul\2c\200ul>::__dispatch\5babi:v160004\5d>::__generic_construct\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&>\28std::__2::__variant_detail::__ctor>&\2c\20std::__2::__variant_detail::__copy_constructor\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\29::'lambda'\28std::__2::__variant_detail::__copy_constructor\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__copy_constructor\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 7984:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul\2c\200ul>::__dispatch\5babi:v160004\5d>::__generic_assign\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>>\28std::__2::__variant_detail::__move_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>&&\29::'lambda'\28std::__2::__variant_detail::__move_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&&>\28std::__2::__variant_detail::__move_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&&\29 7985:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul\2c\200ul>::__dispatch\5babi:v160004\5d>::__generic_assign\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&>\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\29::'lambda'\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 7986:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul\2c\200ul>::__dispatch\5babi:v160004\5d>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__visitation::__variant::__value_visitor>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 7987:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul\2c\200ul>::__dispatch\5babi:v160004\5d>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__visitation::__variant::__value_visitor>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 7988:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul>::__dispatch\5babi:v160004\5d\2c\20std::__2::unique_ptr>>\2c\20\28std::__2::__variant_detail::_Trait\291>::__destroy\5babi:v160004\5d\28\29::'lambda'\28auto&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&>\28auto\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&\29 7989:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul>::__dispatch\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>::__destroy\5babi:v160004\5d\28\29::'lambda'\28auto&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&>\28auto\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\29 7990:deallocate_buffer_var\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 7991:ddquad_xy_at_t\28SkDCurve\20const&\2c\20double\29 7992:ddquad_dxdy_at_t\28SkDCurve\20const&\2c\20double\29 7993:ddline_xy_at_t\28SkDCurve\20const&\2c\20double\29 7994:ddline_dxdy_at_t\28SkDCurve\20const&\2c\20double\29 7995:ddcubic_xy_at_t\28SkDCurve\20const&\2c\20double\29 7996:ddcubic_dxdy_at_t\28SkDCurve\20const&\2c\20double\29 7997:ddconic_xy_at_t\28SkDCurve\20const&\2c\20double\29 7998:ddconic_dxdy_at_t\28SkDCurve\20const&\2c\20double\29 7999:data_destroy_use\28void*\29 8000:data_create_use\28hb_ot_shape_plan_t\20const*\29 8001:data_create_khmer\28hb_ot_shape_plan_t\20const*\29 8002:data_create_indic\28hb_ot_shape_plan_t\20const*\29 8003:data_create_hangul\28hb_ot_shape_plan_t\20const*\29 8004:copy\28void*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\29 8005:convert_bytes_to_data 8006:consume_markers 8007:consume_data 8008:computeTonalColors\28unsigned\20long\2c\20unsigned\20long\29 8009:compose_unicode\28hb_ot_shape_normalize_context_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\29 8010:compose_indic\28hb_ot_shape_normalize_context_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\29 8011:compose_hebrew\28hb_ot_shape_normalize_context_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\29 8012:compare_ppem 8013:compare_offsets 8014:compare_myanmar_order\28hb_glyph_info_t\20const*\2c\20hb_glyph_info_t\20const*\29 8015:compare_combining_class\28hb_glyph_info_t\20const*\2c\20hb_glyph_info_t\20const*\29 8016:color_quantize3 8017:color_quantize 8018:collect_features_use\28hb_ot_shape_planner_t*\29 8019:collect_features_myanmar\28hb_ot_shape_planner_t*\29 8020:collect_features_khmer\28hb_ot_shape_planner_t*\29 8021:collect_features_indic\28hb_ot_shape_planner_t*\29 8022:collect_features_hangul\28hb_ot_shape_planner_t*\29 8023:collect_features_arabic\28hb_ot_shape_planner_t*\29 8024:clip\28SkPath\20const&\2c\20SkHalfPlane\20const&\29::$_0::__invoke\28SkEdgeClipper*\2c\20bool\2c\20void*\29 8025:check_for_passthrough_local_coords_and_dead_varyings\28SkSL::Program\20const&\2c\20unsigned\20int*\29::Visitor::visitStatement\28SkSL::Statement\20const&\29 8026:check_for_passthrough_local_coords_and_dead_varyings\28SkSL::Program\20const&\2c\20unsigned\20int*\29::Visitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 8027:check_for_passthrough_local_coords_and_dead_varyings\28SkSL::Program\20const&\2c\20unsigned\20int*\29::Visitor::visitExpression\28SkSL::Expression\20const&\29 8028:cff_slot_init 8029:cff_slot_done 8030:cff_size_request 8031:cff_size_init 8032:cff_size_done 8033:cff_sid_to_glyph_name 8034:cff_set_var_design 8035:cff_set_mm_weightvector 8036:cff_set_mm_blend 8037:cff_set_instance 8038:cff_random 8039:cff_ps_has_glyph_names 8040:cff_ps_get_font_info 8041:cff_ps_get_font_extra 8042:cff_parse_vsindex 8043:cff_parse_private_dict 8044:cff_parse_multiple_master 8045:cff_parse_maxstack 8046:cff_parse_font_matrix 8047:cff_parse_font_bbox 8048:cff_parse_cid_ros 8049:cff_parse_blend 8050:cff_metrics_adjust 8051:cff_hadvance_adjust 8052:cff_glyph_load 8053:cff_get_var_design 8054:cff_get_var_blend 8055:cff_get_standard_encoding 8056:cff_get_ros 8057:cff_get_ps_name 8058:cff_get_name_index 8059:cff_get_mm_weightvector 8060:cff_get_mm_var 8061:cff_get_mm_blend 8062:cff_get_is_cid 8063:cff_get_interface 8064:cff_get_glyph_name 8065:cff_get_glyph_data 8066:cff_get_cmap_info 8067:cff_get_cid_from_glyph_index 8068:cff_get_advances 8069:cff_free_glyph_data 8070:cff_fd_select_get 8071:cff_face_init 8072:cff_face_done 8073:cff_driver_init 8074:cff_done_blend 8075:cff_decoder_prepare 8076:cff_decoder_init 8077:cff_cmap_unicode_init 8078:cff_cmap_unicode_char_next 8079:cff_cmap_unicode_char_index 8080:cff_cmap_encoding_init 8081:cff_cmap_encoding_done 8082:cff_cmap_encoding_char_next 8083:cff_cmap_encoding_char_index 8084:cff_builder_start_point 8085:cff_builder_init 8086:cff_builder_add_point1 8087:cff_builder_add_point 8088:cff_builder_add_contour 8089:cff_blend_check_vector 8090:cf2_free_instance 8091:cf2_decoder_parse_charstrings 8092:cf2_builder_moveTo 8093:cf2_builder_lineTo 8094:cf2_builder_cubeTo 8095:bw_to_a8\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29 8096:bw_square_proc\28PtProcRec\20const&\2c\20SkPoint\20const*\2c\20int\2c\20SkBlitter*\29 8097:bw_pt_hair_proc\28PtProcRec\20const&\2c\20SkPoint\20const*\2c\20int\2c\20SkBlitter*\29 8098:bw_poly_hair_proc\28PtProcRec\20const&\2c\20SkPoint\20const*\2c\20int\2c\20SkBlitter*\29 8099:bw_line_hair_proc\28PtProcRec\20const&\2c\20SkPoint\20const*\2c\20int\2c\20SkBlitter*\29 8100:bool\20\28anonymous\20namespace\29::FindVisitor<\28anonymous\20namespace\29::SpotVerticesFactory>\28SkResourceCache::Rec\20const&\2c\20void*\29 8101:bool\20\28anonymous\20namespace\29::FindVisitor<\28anonymous\20namespace\29::AmbientVerticesFactory>\28SkResourceCache::Rec\20const&\2c\20void*\29 8102:bool\20OT::hb_accelerate_subtables_context_t::apply_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 8103:bool\20OT::hb_accelerate_subtables_context_t::apply_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 8104:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 8105:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 8106:bool\20OT::cmap::accelerator_t::get_glyph_from_symbol\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\29 8107:bool\20OT::cmap::accelerator_t::get_glyph_from_symbol\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\29 8108:bool\20OT::cmap::accelerator_t::get_glyph_from_symbol\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\29 8109:bool\20OT::cmap::accelerator_t::get_glyph_from\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\29 8110:bool\20OT::cmap::accelerator_t::get_glyph_from\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\29 8111:blur_y_radius_4\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 8112:blur_y_radius_3\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 8113:blur_y_radius_2\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 8114:blur_y_radius_1\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 8115:blur_x_radius_4\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 8116:blur_x_radius_3\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 8117:blur_x_radius_2\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 8118:blur_x_radius_1\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 8119:blit_row_s32a_blend\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int\29 8120:blit_row_s32_opaque\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int\29 8121:blit_row_s32_blend\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int\29 8122:argb32_to_a8\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29 8123:arabic_fallback_shape\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 8124:alwaysSaveTypefaceBytes\28SkTypeface*\2c\20void*\29 8125:alloc_sarray 8126:alloc_barray 8127:afm_parser_parse 8128:afm_parser_init 8129:afm_parser_done 8130:afm_compare_kern_pairs 8131:af_property_set 8132:af_property_get 8133:af_latin_metrics_scale 8134:af_latin_metrics_init 8135:af_latin_hints_init 8136:af_latin_hints_apply 8137:af_latin_get_standard_widths 8138:af_indic_metrics_init 8139:af_indic_hints_apply 8140:af_get_interface 8141:af_face_globals_free 8142:af_dummy_hints_init 8143:af_dummy_hints_apply 8144:af_cjk_metrics_init 8145:af_autofitter_load_glyph 8146:af_autofitter_init 8147:access_virt_sarray 8148:access_virt_barray 8149:aa_square_proc\28PtProcRec\20const&\2c\20SkPoint\20const*\2c\20int\2c\20SkBlitter*\29 8150:aa_poly_hair_proc\28PtProcRec\20const&\2c\20SkPoint\20const*\2c\20int\2c\20SkBlitter*\29 8151:aa_line_hair_proc\28PtProcRec\20const&\2c\20SkPoint\20const*\2c\20int\2c\20SkBlitter*\29 8152:_hb_ot_font_destroy\28void*\29 8153:_hb_glyph_info_is_default_ignorable\28hb_glyph_info_t\20const*\29 8154:_hb_face_for_data_reference_table\28hb_face_t*\2c\20unsigned\20int\2c\20void*\29 8155:_hb_face_for_data_closure_destroy\28void*\29 8156:_hb_clear_substitution_flags\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 8157:_embind_initialize_bindings 8158:__wasm_call_ctors 8159:__stdio_write 8160:__stdio_seek 8161:__stdio_read 8162:__stdio_close 8163:__getTypeName 8164:__cxxabiv1::__vmi_class_type_info::search_below_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 8165:__cxxabiv1::__vmi_class_type_info::search_above_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 8166:__cxxabiv1::__vmi_class_type_info::has_unambiguous_public_base\28__cxxabiv1::__dynamic_cast_info*\2c\20void*\2c\20int\29\20const 8167:__cxxabiv1::__si_class_type_info::search_below_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 8168:__cxxabiv1::__si_class_type_info::search_above_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 8169:__cxxabiv1::__si_class_type_info::has_unambiguous_public_base\28__cxxabiv1::__dynamic_cast_info*\2c\20void*\2c\20int\29\20const 8170:__cxxabiv1::__class_type_info::search_below_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 8171:__cxxabiv1::__class_type_info::search_above_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 8172:__cxxabiv1::__class_type_info::has_unambiguous_public_base\28__cxxabiv1::__dynamic_cast_info*\2c\20void*\2c\20int\29\20const 8173:__cxxabiv1::__class_type_info::can_catch\28__cxxabiv1::__shim_type_info\20const*\2c\20void*&\29\20const 8174:__cxx_global_array_dtor.9 8175:__cxx_global_array_dtor.87 8176:__cxx_global_array_dtor.72 8177:__cxx_global_array_dtor.57 8178:__cxx_global_array_dtor.5 8179:__cxx_global_array_dtor.44 8180:__cxx_global_array_dtor.42 8181:__cxx_global_array_dtor.40 8182:__cxx_global_array_dtor.4 8183:__cxx_global_array_dtor.38 8184:__cxx_global_array_dtor.36 8185:__cxx_global_array_dtor.34 8186:__cxx_global_array_dtor.32 8187:__cxx_global_array_dtor.2 8188:__cxx_global_array_dtor.16 8189:__cxx_global_array_dtor.15 8190:__cxx_global_array_dtor.14 8191:__cxx_global_array_dtor.138 8192:__cxx_global_array_dtor.135 8193:__cxx_global_array_dtor.111 8194:__cxx_global_array_dtor.10 8195:__cxx_global_array_dtor.1.1 8196:__cxx_global_array_dtor.1 8197:__cxx_global_array_dtor 8198:__cxa_pure_virtual 8199:__cxa_is_pointer_type 8200:\28anonymous\20namespace\29::skhb_nominal_glyphs\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int\2c\20void*\29 8201:\28anonymous\20namespace\29::skhb_nominal_glyph\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 8202:\28anonymous\20namespace\29::skhb_glyph_h_advances\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20int*\2c\20unsigned\20int\2c\20void*\29 8203:\28anonymous\20namespace\29::skhb_glyph_h_advance\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20void*\29 8204:\28anonymous\20namespace\29::skhb_glyph_extents\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_glyph_extents_t*\2c\20void*\29 8205:\28anonymous\20namespace\29::skhb_glyph\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 8206:\28anonymous\20namespace\29::skhb_get_table\28hb_face_t*\2c\20unsigned\20int\2c\20void*\29::$_0::__invoke\28void*\29 8207:\28anonymous\20namespace\29::skhb_get_table\28hb_face_t*\2c\20unsigned\20int\2c\20void*\29 8208:\28anonymous\20namespace\29::make_morphology\28\28anonymous\20namespace\29::MorphType\2c\20SkSize\2c\20sk_sp\2c\20SkImageFilters::CropRect\20const&\29 8209:\28anonymous\20namespace\29::make_drop_shadow_graph\28SkPoint\2c\20SkSize\2c\20unsigned\20int\2c\20bool\2c\20sk_sp\2c\20std::__2::optional\20const&\29 8210:\28anonymous\20namespace\29::extension_compare\28SkString\20const&\2c\20SkString\20const&\29 8211:\28anonymous\20namespace\29::YUVPlanesRec::~YUVPlanesRec\28\29.1 8212:\28anonymous\20namespace\29::YUVPlanesRec::getCategory\28\29\20const 8213:\28anonymous\20namespace\29::YUVPlanesRec::diagnostic_only_getDiscardable\28\29\20const 8214:\28anonymous\20namespace\29::YUVPlanesRec::bytesUsed\28\29\20const 8215:\28anonymous\20namespace\29::YUVPlanesRec::Visitor\28SkResourceCache::Rec\20const&\2c\20void*\29 8216:\28anonymous\20namespace\29::UniqueKeyInvalidator::~UniqueKeyInvalidator\28\29.1 8217:\28anonymous\20namespace\29::UniqueKeyInvalidator::~UniqueKeyInvalidator\28\29 8218:\28anonymous\20namespace\29::TriangulatingPathOp::~TriangulatingPathOp\28\29.1 8219:\28anonymous\20namespace\29::TriangulatingPathOp::visitProxies\28std::__2::function\20const&\29\20const 8220:\28anonymous\20namespace\29::TriangulatingPathOp::programInfo\28\29 8221:\28anonymous\20namespace\29::TriangulatingPathOp::onPrepareDraws\28GrMeshDrawTarget*\29 8222:\28anonymous\20namespace\29::TriangulatingPathOp::onPrePrepareDraws\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8223:\28anonymous\20namespace\29::TriangulatingPathOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8224:\28anonymous\20namespace\29::TriangulatingPathOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8225:\28anonymous\20namespace\29::TriangulatingPathOp::name\28\29\20const 8226:\28anonymous\20namespace\29::TriangulatingPathOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8227:\28anonymous\20namespace\29::TransformedMaskSubRun::unflattenSize\28\29\20const 8228:\28anonymous\20namespace\29::TransformedMaskSubRun::regenerateAtlas\28int\2c\20int\2c\20std::__2::function\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>\29\20const 8229:\28anonymous\20namespace\29::TransformedMaskSubRun::instanceFlags\28\29\20const 8230:\28anonymous\20namespace\29::TransformedMaskSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 8231:\28anonymous\20namespace\29::TransformedMaskSubRun::draw\28SkCanvas*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20std::__2::function\2c\20sktext::gpu::RendererData\29>\20const&\29\20const 8232:\28anonymous\20namespace\29::TransformedMaskSubRun::doFlatten\28SkWriteBuffer&\29\20const 8233:\28anonymous\20namespace\29::TransformedMaskSubRun::canReuse\28SkPaint\20const&\2c\20SkMatrix\20const&\29\20const 8234:\28anonymous\20namespace\29::TextureOpImpl::~TextureOpImpl\28\29.1 8235:\28anonymous\20namespace\29::TextureOpImpl::~TextureOpImpl\28\29 8236:\28anonymous\20namespace\29::TextureOpImpl::visitProxies\28std::__2::function\20const&\29\20const 8237:\28anonymous\20namespace\29::TextureOpImpl::programInfo\28\29 8238:\28anonymous\20namespace\29::TextureOpImpl::onPrepareDraws\28GrMeshDrawTarget*\29 8239:\28anonymous\20namespace\29::TextureOpImpl::onPrePrepareDraws\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8240:\28anonymous\20namespace\29::TextureOpImpl::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8241:\28anonymous\20namespace\29::TextureOpImpl::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8242:\28anonymous\20namespace\29::TextureOpImpl::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 8243:\28anonymous\20namespace\29::TextureOpImpl::name\28\29\20const 8244:\28anonymous\20namespace\29::TextureOpImpl::fixedFunctionFlags\28\29\20const 8245:\28anonymous\20namespace\29::TextureOpImpl::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8246:\28anonymous\20namespace\29::TentPass::startBlur\28\29 8247:\28anonymous\20namespace\29::TentPass::blurSegment\28int\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int*\2c\20int\29 8248:\28anonymous\20namespace\29::TentPass::MakeMaker\28double\2c\20SkArenaAlloc*\29::Maker::makePass\28void*\2c\20SkArenaAlloc*\29\20const 8249:\28anonymous\20namespace\29::TentPass::MakeMaker\28double\2c\20SkArenaAlloc*\29::Maker::bufferSizeBytes\28\29\20const 8250:\28anonymous\20namespace\29::StaticVertexAllocator::~StaticVertexAllocator\28\29.1 8251:\28anonymous\20namespace\29::StaticVertexAllocator::~StaticVertexAllocator\28\29 8252:\28anonymous\20namespace\29::StaticVertexAllocator::unlock\28int\29 8253:\28anonymous\20namespace\29::StaticVertexAllocator::lock\28unsigned\20long\2c\20int\29 8254:\28anonymous\20namespace\29::SkUnicodeHbScriptRunIterator::currentScript\28\29\20const 8255:\28anonymous\20namespace\29::SkUnicodeHbScriptRunIterator::consume\28\29 8256:\28anonymous\20namespace\29::SkShaderImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 8257:\28anonymous\20namespace\29::SkShaderImageFilter::onFilterImage\28skif::Context\20const&\29\20const 8258:\28anonymous\20namespace\29::SkShaderImageFilter::getTypeName\28\29\20const 8259:\28anonymous\20namespace\29::SkShaderImageFilter::flatten\28SkWriteBuffer&\29\20const 8260:\28anonymous\20namespace\29::SkShaderImageFilter::computeFastBounds\28SkRect\20const&\29\20const 8261:\28anonymous\20namespace\29::SkMorphologyImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 8262:\28anonymous\20namespace\29::SkMorphologyImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 8263:\28anonymous\20namespace\29::SkMorphologyImageFilter::onFilterImage\28skif::Context\20const&\29\20const 8264:\28anonymous\20namespace\29::SkMorphologyImageFilter::getTypeName\28\29\20const 8265:\28anonymous\20namespace\29::SkMorphologyImageFilter::flatten\28SkWriteBuffer&\29\20const 8266:\28anonymous\20namespace\29::SkMorphologyImageFilter::computeFastBounds\28SkRect\20const&\29\20const 8267:\28anonymous\20namespace\29::SkMergeImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 8268:\28anonymous\20namespace\29::SkMergeImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 8269:\28anonymous\20namespace\29::SkMergeImageFilter::onFilterImage\28skif::Context\20const&\29\20const 8270:\28anonymous\20namespace\29::SkMergeImageFilter::getTypeName\28\29\20const 8271:\28anonymous\20namespace\29::SkMergeImageFilter::computeFastBounds\28SkRect\20const&\29\20const 8272:\28anonymous\20namespace\29::SkMatrixTransformImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 8273:\28anonymous\20namespace\29::SkMatrixTransformImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 8274:\28anonymous\20namespace\29::SkMatrixTransformImageFilter::onFilterImage\28skif::Context\20const&\29\20const 8275:\28anonymous\20namespace\29::SkMatrixTransformImageFilter::getTypeName\28\29\20const 8276:\28anonymous\20namespace\29::SkMatrixTransformImageFilter::flatten\28SkWriteBuffer&\29\20const 8277:\28anonymous\20namespace\29::SkMatrixTransformImageFilter::computeFastBounds\28SkRect\20const&\29\20const 8278:\28anonymous\20namespace\29::SkImageImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 8279:\28anonymous\20namespace\29::SkImageImageFilter::onFilterImage\28skif::Context\20const&\29\20const 8280:\28anonymous\20namespace\29::SkImageImageFilter::getTypeName\28\29\20const 8281:\28anonymous\20namespace\29::SkImageImageFilter::flatten\28SkWriteBuffer&\29\20const 8282:\28anonymous\20namespace\29::SkImageImageFilter::computeFastBounds\28SkRect\20const&\29\20const 8283:\28anonymous\20namespace\29::SkFTGeometrySink::Quad\28FT_Vector_\20const*\2c\20FT_Vector_\20const*\2c\20void*\29 8284:\28anonymous\20namespace\29::SkFTGeometrySink::Move\28FT_Vector_\20const*\2c\20void*\29 8285:\28anonymous\20namespace\29::SkFTGeometrySink::Line\28FT_Vector_\20const*\2c\20void*\29 8286:\28anonymous\20namespace\29::SkFTGeometrySink::Cubic\28FT_Vector_\20const*\2c\20FT_Vector_\20const*\2c\20FT_Vector_\20const*\2c\20void*\29 8287:\28anonymous\20namespace\29::SkEmptyTypeface::onGetFontDescriptor\28SkFontDescriptor*\2c\20bool*\29\20const 8288:\28anonymous\20namespace\29::SkEmptyTypeface::onGetFamilyName\28SkString*\29\20const 8289:\28anonymous\20namespace\29::SkEmptyTypeface::onCreateScalerContext\28SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29\20const 8290:\28anonymous\20namespace\29::SkEmptyTypeface::onCreateFamilyNameIterator\28\29\20const 8291:\28anonymous\20namespace\29::SkEmptyTypeface::onCharsToGlyphs\28int\20const*\2c\20int\2c\20unsigned\20short*\29\20const 8292:\28anonymous\20namespace\29::SkEmptyTypeface::MakeFromStream\28std::__2::unique_ptr>\2c\20SkFontArguments\20const&\29 8293:\28anonymous\20namespace\29::SkDisplacementMapImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 8294:\28anonymous\20namespace\29::SkDisplacementMapImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 8295:\28anonymous\20namespace\29::SkDisplacementMapImageFilter::onFilterImage\28skif::Context\20const&\29\20const 8296:\28anonymous\20namespace\29::SkDisplacementMapImageFilter::getTypeName\28\29\20const 8297:\28anonymous\20namespace\29::SkDisplacementMapImageFilter::flatten\28SkWriteBuffer&\29\20const 8298:\28anonymous\20namespace\29::SkDisplacementMapImageFilter::computeFastBounds\28SkRect\20const&\29\20const 8299:\28anonymous\20namespace\29::SkCropImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 8300:\28anonymous\20namespace\29::SkCropImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 8301:\28anonymous\20namespace\29::SkCropImageFilter::onFilterImage\28skif::Context\20const&\29\20const 8302:\28anonymous\20namespace\29::SkCropImageFilter::onAffectsTransparentBlack\28\29\20const 8303:\28anonymous\20namespace\29::SkCropImageFilter::getTypeName\28\29\20const 8304:\28anonymous\20namespace\29::SkCropImageFilter::flatten\28SkWriteBuffer&\29\20const 8305:\28anonymous\20namespace\29::SkCropImageFilter::computeFastBounds\28SkRect\20const&\29\20const 8306:\28anonymous\20namespace\29::SkComposeImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 8307:\28anonymous\20namespace\29::SkComposeImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 8308:\28anonymous\20namespace\29::SkComposeImageFilter::onFilterImage\28skif::Context\20const&\29\20const 8309:\28anonymous\20namespace\29::SkComposeImageFilter::getTypeName\28\29\20const 8310:\28anonymous\20namespace\29::SkComposeImageFilter::computeFastBounds\28SkRect\20const&\29\20const 8311:\28anonymous\20namespace\29::SkColorFilterImageFilter::onIsColorFilterNode\28SkColorFilter**\29\20const 8312:\28anonymous\20namespace\29::SkColorFilterImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 8313:\28anonymous\20namespace\29::SkColorFilterImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 8314:\28anonymous\20namespace\29::SkColorFilterImageFilter::onFilterImage\28skif::Context\20const&\29\20const 8315:\28anonymous\20namespace\29::SkColorFilterImageFilter::onAffectsTransparentBlack\28\29\20const 8316:\28anonymous\20namespace\29::SkColorFilterImageFilter::getTypeName\28\29\20const 8317:\28anonymous\20namespace\29::SkColorFilterImageFilter::flatten\28SkWriteBuffer&\29\20const 8318:\28anonymous\20namespace\29::SkColorFilterImageFilter::computeFastBounds\28SkRect\20const&\29\20const 8319:\28anonymous\20namespace\29::SkBlurImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 8320:\28anonymous\20namespace\29::SkBlurImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 8321:\28anonymous\20namespace\29::SkBlurImageFilter::onFilterImage\28skif::Context\20const&\29\20const 8322:\28anonymous\20namespace\29::SkBlurImageFilter::getTypeName\28\29\20const 8323:\28anonymous\20namespace\29::SkBlurImageFilter::flatten\28SkWriteBuffer&\29\20const 8324:\28anonymous\20namespace\29::SkBlurImageFilter::computeFastBounds\28SkRect\20const&\29\20const 8325:\28anonymous\20namespace\29::SkBlendImageFilter::~SkBlendImageFilter\28\29.1 8326:\28anonymous\20namespace\29::SkBlendImageFilter::~SkBlendImageFilter\28\29 8327:\28anonymous\20namespace\29::SkBlendImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 8328:\28anonymous\20namespace\29::SkBlendImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 8329:\28anonymous\20namespace\29::SkBlendImageFilter::onFilterImage\28skif::Context\20const&\29\20const 8330:\28anonymous\20namespace\29::SkBlendImageFilter::onAffectsTransparentBlack\28\29\20const 8331:\28anonymous\20namespace\29::SkBlendImageFilter::getTypeName\28\29\20const 8332:\28anonymous\20namespace\29::SkBlendImageFilter::flatten\28SkWriteBuffer&\29\20const 8333:\28anonymous\20namespace\29::SkBlendImageFilter::computeFastBounds\28SkRect\20const&\29\20const 8334:\28anonymous\20namespace\29::SkBidiIterator_icu::~SkBidiIterator_icu\28\29.1 8335:\28anonymous\20namespace\29::SkBidiIterator_icu::~SkBidiIterator_icu\28\29 8336:\28anonymous\20namespace\29::SkBidiIterator_icu::getLevelAt\28int\29 8337:\28anonymous\20namespace\29::SkBidiIterator_icu::getLength\28\29 8338:\28anonymous\20namespace\29::SimpleTriangleShader::name\28\29\20const 8339:\28anonymous\20namespace\29::SimpleTriangleShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::emitVertexCode\28GrShaderCaps\20const&\2c\20GrPathTessellationShader\20const&\2c\20GrGLSLVertexBuilder*\2c\20GrGLSLVaryingHandler*\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 8340:\28anonymous\20namespace\29::SimpleTriangleShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 8341:\28anonymous\20namespace\29::ShaperHarfBuzz::~ShaperHarfBuzz\28\29.1 8342:\28anonymous\20namespace\29::ShaperHarfBuzz::shape\28char\20const*\2c\20unsigned\20long\2c\20SkShaper::FontRunIterator&\2c\20SkShaper::BiDiRunIterator&\2c\20SkShaper::ScriptRunIterator&\2c\20SkShaper::LanguageRunIterator&\2c\20float\2c\20SkShaper::RunHandler*\29\20const 8343:\28anonymous\20namespace\29::ShaperHarfBuzz::shape\28char\20const*\2c\20unsigned\20long\2c\20SkShaper::FontRunIterator&\2c\20SkShaper::BiDiRunIterator&\2c\20SkShaper::ScriptRunIterator&\2c\20SkShaper::LanguageRunIterator&\2c\20SkShaper::Feature\20const*\2c\20unsigned\20long\2c\20float\2c\20SkShaper::RunHandler*\29\20const 8344:\28anonymous\20namespace\29::ShaperHarfBuzz::shape\28char\20const*\2c\20unsigned\20long\2c\20SkFont\20const&\2c\20bool\2c\20float\2c\20SkShaper::RunHandler*\29\20const 8345:\28anonymous\20namespace\29::ShapeDontWrapOrReorder::~ShapeDontWrapOrReorder\28\29 8346:\28anonymous\20namespace\29::ShapeDontWrapOrReorder::wrap\28char\20const*\2c\20unsigned\20long\2c\20SkShaper::BiDiRunIterator\20const&\2c\20SkShaper::LanguageRunIterator\20const&\2c\20SkShaper::ScriptRunIterator\20const&\2c\20SkShaper::FontRunIterator\20const&\2c\20\28anonymous\20namespace\29::RunIteratorQueue&\2c\20SkShaper::Feature\20const*\2c\20unsigned\20long\2c\20float\2c\20SkShaper::RunHandler*\29\20const 8347:\28anonymous\20namespace\29::ShadowInvalidator::~ShadowInvalidator\28\29.1 8348:\28anonymous\20namespace\29::ShadowInvalidator::~ShadowInvalidator\28\29 8349:\28anonymous\20namespace\29::ShadowInvalidator::changed\28\29 8350:\28anonymous\20namespace\29::ShadowCircularRRectOp::~ShadowCircularRRectOp\28\29.1 8351:\28anonymous\20namespace\29::ShadowCircularRRectOp::~ShadowCircularRRectOp\28\29 8352:\28anonymous\20namespace\29::ShadowCircularRRectOp::visitProxies\28std::__2::function\20const&\29\20const 8353:\28anonymous\20namespace\29::ShadowCircularRRectOp::programInfo\28\29 8354:\28anonymous\20namespace\29::ShadowCircularRRectOp::onPrepareDraws\28GrMeshDrawTarget*\29 8355:\28anonymous\20namespace\29::ShadowCircularRRectOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8356:\28anonymous\20namespace\29::ShadowCircularRRectOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8357:\28anonymous\20namespace\29::ShadowCircularRRectOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 8358:\28anonymous\20namespace\29::ShadowCircularRRectOp::name\28\29\20const 8359:\28anonymous\20namespace\29::ShadowCircularRRectOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8360:\28anonymous\20namespace\29::SDFTSubRun::~SDFTSubRun\28\29.1 8361:\28anonymous\20namespace\29::SDFTSubRun::~SDFTSubRun\28\29 8362:\28anonymous\20namespace\29::SDFTSubRun::vertexStride\28SkMatrix\20const&\29\20const 8363:\28anonymous\20namespace\29::SDFTSubRun::vertexFiller\28\29\20const 8364:\28anonymous\20namespace\29::SDFTSubRun::unflattenSize\28\29\20const 8365:\28anonymous\20namespace\29::SDFTSubRun::testingOnly_packedGlyphIDToGlyph\28sktext::gpu::StrikeCache*\29\20const 8366:\28anonymous\20namespace\29::SDFTSubRun::regenerateAtlas\28int\2c\20int\2c\20std::__2::function\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>\29\20const 8367:\28anonymous\20namespace\29::SDFTSubRun::glyphs\28\29\20const 8368:\28anonymous\20namespace\29::SDFTSubRun::glyphCount\28\29\20const 8369:\28anonymous\20namespace\29::SDFTSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 8370:\28anonymous\20namespace\29::SDFTSubRun::draw\28SkCanvas*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20std::__2::function\2c\20sktext::gpu::RendererData\29>\20const&\29\20const 8371:\28anonymous\20namespace\29::SDFTSubRun::doFlatten\28SkWriteBuffer&\29\20const 8372:\28anonymous\20namespace\29::SDFTSubRun::canReuse\28SkPaint\20const&\2c\20SkMatrix\20const&\29\20const 8373:\28anonymous\20namespace\29::RectsBlurRec::~RectsBlurRec\28\29.1 8374:\28anonymous\20namespace\29::RectsBlurRec::~RectsBlurRec\28\29 8375:\28anonymous\20namespace\29::RectsBlurRec::getCategory\28\29\20const 8376:\28anonymous\20namespace\29::RectsBlurRec::diagnostic_only_getDiscardable\28\29\20const 8377:\28anonymous\20namespace\29::RectsBlurRec::bytesUsed\28\29\20const 8378:\28anonymous\20namespace\29::RectsBlurRec::Visitor\28SkResourceCache::Rec\20const&\2c\20void*\29 8379:\28anonymous\20namespace\29::RRectBlurRec::~RRectBlurRec\28\29.1 8380:\28anonymous\20namespace\29::RRectBlurRec::~RRectBlurRec\28\29 8381:\28anonymous\20namespace\29::RRectBlurRec::getCategory\28\29\20const 8382:\28anonymous\20namespace\29::RRectBlurRec::diagnostic_only_getDiscardable\28\29\20const 8383:\28anonymous\20namespace\29::RRectBlurRec::bytesUsed\28\29\20const 8384:\28anonymous\20namespace\29::RRectBlurRec::Visitor\28SkResourceCache::Rec\20const&\2c\20void*\29 8385:\28anonymous\20namespace\29::PathSubRun::~PathSubRun\28\29.1 8386:\28anonymous\20namespace\29::PathSubRun::~PathSubRun\28\29 8387:\28anonymous\20namespace\29::PathSubRun::unflattenSize\28\29\20const 8388:\28anonymous\20namespace\29::PathSubRun::draw\28SkCanvas*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20std::__2::function\2c\20sktext::gpu::RendererData\29>\20const&\29\20const 8389:\28anonymous\20namespace\29::PathSubRun::doFlatten\28SkWriteBuffer&\29\20const 8390:\28anonymous\20namespace\29::MipMapRec::~MipMapRec\28\29.1 8391:\28anonymous\20namespace\29::MipMapRec::~MipMapRec\28\29 8392:\28anonymous\20namespace\29::MipMapRec::getCategory\28\29\20const 8393:\28anonymous\20namespace\29::MipMapRec::diagnostic_only_getDiscardable\28\29\20const 8394:\28anonymous\20namespace\29::MipMapRec::bytesUsed\28\29\20const 8395:\28anonymous\20namespace\29::MipMapRec::Finder\28SkResourceCache::Rec\20const&\2c\20void*\29 8396:\28anonymous\20namespace\29::MiddleOutShader::~MiddleOutShader\28\29.1 8397:\28anonymous\20namespace\29::MiddleOutShader::~MiddleOutShader\28\29 8398:\28anonymous\20namespace\29::MiddleOutShader::name\28\29\20const 8399:\28anonymous\20namespace\29::MiddleOutShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::emitVertexCode\28GrShaderCaps\20const&\2c\20GrPathTessellationShader\20const&\2c\20GrGLSLVertexBuilder*\2c\20GrGLSLVaryingHandler*\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 8400:\28anonymous\20namespace\29::MiddleOutShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 8401:\28anonymous\20namespace\29::MiddleOutShader::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 8402:\28anonymous\20namespace\29::MeshOp::~MeshOp\28\29.1 8403:\28anonymous\20namespace\29::MeshOp::visitProxies\28std::__2::function\20const&\29\20const 8404:\28anonymous\20namespace\29::MeshOp::programInfo\28\29 8405:\28anonymous\20namespace\29::MeshOp::onPrepareDraws\28GrMeshDrawTarget*\29 8406:\28anonymous\20namespace\29::MeshOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8407:\28anonymous\20namespace\29::MeshOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8408:\28anonymous\20namespace\29::MeshOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 8409:\28anonymous\20namespace\29::MeshOp::name\28\29\20const 8410:\28anonymous\20namespace\29::MeshOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8411:\28anonymous\20namespace\29::MeshGP::~MeshGP\28\29.1 8412:\28anonymous\20namespace\29::MeshGP::onTextureSampler\28int\29\20const 8413:\28anonymous\20namespace\29::MeshGP::name\28\29\20const 8414:\28anonymous\20namespace\29::MeshGP::makeProgramImpl\28GrShaderCaps\20const&\29\20const 8415:\28anonymous\20namespace\29::MeshGP::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 8416:\28anonymous\20namespace\29::MeshGP::Impl::~Impl\28\29.1 8417:\28anonymous\20namespace\29::MeshGP::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 8418:\28anonymous\20namespace\29::MeshGP::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 8419:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::toLinearSrgb\28std::__2::basic_string\2c\20std::__2::allocator>\29 8420:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::sampleShader\28int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 8421:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::sampleColorFilter\28int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 8422:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::sampleBlender\28int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 8423:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::getMangledName\28char\20const*\29 8424:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::getMainName\28\29 8425:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::fromLinearSrgb\28std::__2::basic_string\2c\20std::__2::allocator>\29 8426:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::defineFunction\28char\20const*\2c\20char\20const*\2c\20bool\29 8427:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::declareUniform\28SkSL::VarDeclaration\20const*\29 8428:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::declareFunction\28char\20const*\29 8429:\28anonymous\20namespace\29::ImageFromPictureRec::~ImageFromPictureRec\28\29.1 8430:\28anonymous\20namespace\29::ImageFromPictureRec::~ImageFromPictureRec\28\29 8431:\28anonymous\20namespace\29::ImageFromPictureRec::getCategory\28\29\20const 8432:\28anonymous\20namespace\29::ImageFromPictureRec::bytesUsed\28\29\20const 8433:\28anonymous\20namespace\29::ImageFromPictureRec::Visitor\28SkResourceCache::Rec\20const&\2c\20void*\29 8434:\28anonymous\20namespace\29::HQDownSampler::buildLevel\28SkPixmap\20const&\2c\20SkPixmap\20const&\29 8435:\28anonymous\20namespace\29::GaussPass::startBlur\28\29 8436:\28anonymous\20namespace\29::GaussPass::blurSegment\28int\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int*\2c\20int\29 8437:\28anonymous\20namespace\29::GaussPass::MakeMaker\28double\2c\20SkArenaAlloc*\29::Maker::makePass\28void*\2c\20SkArenaAlloc*\29\20const 8438:\28anonymous\20namespace\29::GaussPass::MakeMaker\28double\2c\20SkArenaAlloc*\29::Maker::bufferSizeBytes\28\29\20const 8439:\28anonymous\20namespace\29::FillRectOpImpl::~FillRectOpImpl\28\29.1 8440:\28anonymous\20namespace\29::FillRectOpImpl::~FillRectOpImpl\28\29 8441:\28anonymous\20namespace\29::FillRectOpImpl::visitProxies\28std::__2::function\20const&\29\20const 8442:\28anonymous\20namespace\29::FillRectOpImpl::programInfo\28\29 8443:\28anonymous\20namespace\29::FillRectOpImpl::onPrepareDraws\28GrMeshDrawTarget*\29 8444:\28anonymous\20namespace\29::FillRectOpImpl::onPrePrepareDraws\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8445:\28anonymous\20namespace\29::FillRectOpImpl::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8446:\28anonymous\20namespace\29::FillRectOpImpl::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8447:\28anonymous\20namespace\29::FillRectOpImpl::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 8448:\28anonymous\20namespace\29::FillRectOpImpl::name\28\29\20const 8449:\28anonymous\20namespace\29::FillRectOpImpl::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8450:\28anonymous\20namespace\29::EllipticalRRectEffect::onMakeProgramImpl\28\29\20const 8451:\28anonymous\20namespace\29::EllipticalRRectEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 8452:\28anonymous\20namespace\29::EllipticalRRectEffect::name\28\29\20const 8453:\28anonymous\20namespace\29::EllipticalRRectEffect::clone\28\29\20const 8454:\28anonymous\20namespace\29::EllipticalRRectEffect::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 8455:\28anonymous\20namespace\29::EllipticalRRectEffect::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 8456:\28anonymous\20namespace\29::DrawableSubRun::~DrawableSubRun\28\29.1 8457:\28anonymous\20namespace\29::DrawableSubRun::~DrawableSubRun\28\29 8458:\28anonymous\20namespace\29::DrawableSubRun::unflattenSize\28\29\20const 8459:\28anonymous\20namespace\29::DrawableSubRun::draw\28SkCanvas*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20std::__2::function\2c\20sktext::gpu::RendererData\29>\20const&\29\20const 8460:\28anonymous\20namespace\29::DrawableSubRun::doFlatten\28SkWriteBuffer&\29\20const 8461:\28anonymous\20namespace\29::DrawAtlasPathShader::~DrawAtlasPathShader\28\29.1 8462:\28anonymous\20namespace\29::DrawAtlasPathShader::~DrawAtlasPathShader\28\29 8463:\28anonymous\20namespace\29::DrawAtlasPathShader::onTextureSampler\28int\29\20const 8464:\28anonymous\20namespace\29::DrawAtlasPathShader::name\28\29\20const 8465:\28anonymous\20namespace\29::DrawAtlasPathShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 8466:\28anonymous\20namespace\29::DrawAtlasPathShader::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 8467:\28anonymous\20namespace\29::DrawAtlasPathShader::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 8468:\28anonymous\20namespace\29::DrawAtlasPathShader::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 8469:\28anonymous\20namespace\29::DrawAtlasOpImpl::~DrawAtlasOpImpl\28\29.1 8470:\28anonymous\20namespace\29::DrawAtlasOpImpl::~DrawAtlasOpImpl\28\29 8471:\28anonymous\20namespace\29::DrawAtlasOpImpl::onPrepareDraws\28GrMeshDrawTarget*\29 8472:\28anonymous\20namespace\29::DrawAtlasOpImpl::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8473:\28anonymous\20namespace\29::DrawAtlasOpImpl::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 8474:\28anonymous\20namespace\29::DrawAtlasOpImpl::name\28\29\20const 8475:\28anonymous\20namespace\29::DrawAtlasOpImpl::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8476:\28anonymous\20namespace\29::DirectMaskSubRun::vertexStride\28SkMatrix\20const&\29\20const 8477:\28anonymous\20namespace\29::DirectMaskSubRun::unflattenSize\28\29\20const 8478:\28anonymous\20namespace\29::DirectMaskSubRun::regenerateAtlas\28int\2c\20int\2c\20std::__2::function\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>\29\20const 8479:\28anonymous\20namespace\29::DirectMaskSubRun::instanceFlags\28\29\20const 8480:\28anonymous\20namespace\29::DirectMaskSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 8481:\28anonymous\20namespace\29::DirectMaskSubRun::draw\28SkCanvas*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20std::__2::function\2c\20sktext::gpu::RendererData\29>\20const&\29\20const 8482:\28anonymous\20namespace\29::DirectMaskSubRun::doFlatten\28SkWriteBuffer&\29\20const 8483:\28anonymous\20namespace\29::DirectMaskSubRun::canReuse\28SkPaint\20const&\2c\20SkMatrix\20const&\29\20const 8484:\28anonymous\20namespace\29::DefaultPathOp::~DefaultPathOp\28\29.1 8485:\28anonymous\20namespace\29::DefaultPathOp::~DefaultPathOp\28\29 8486:\28anonymous\20namespace\29::DefaultPathOp::visitProxies\28std::__2::function\20const&\29\20const 8487:\28anonymous\20namespace\29::DefaultPathOp::onPrepareDraws\28GrMeshDrawTarget*\29 8488:\28anonymous\20namespace\29::DefaultPathOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8489:\28anonymous\20namespace\29::DefaultPathOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8490:\28anonymous\20namespace\29::DefaultPathOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 8491:\28anonymous\20namespace\29::DefaultPathOp::name\28\29\20const 8492:\28anonymous\20namespace\29::DefaultPathOp::fixedFunctionFlags\28\29\20const 8493:\28anonymous\20namespace\29::DefaultPathOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8494:\28anonymous\20namespace\29::CircularRRectEffect::onMakeProgramImpl\28\29\20const 8495:\28anonymous\20namespace\29::CircularRRectEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 8496:\28anonymous\20namespace\29::CircularRRectEffect::name\28\29\20const 8497:\28anonymous\20namespace\29::CircularRRectEffect::clone\28\29\20const 8498:\28anonymous\20namespace\29::CircularRRectEffect::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 8499:\28anonymous\20namespace\29::CircularRRectEffect::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 8500:\28anonymous\20namespace\29::CachedTessellationsRec::~CachedTessellationsRec\28\29.1 8501:\28anonymous\20namespace\29::CachedTessellationsRec::~CachedTessellationsRec\28\29 8502:\28anonymous\20namespace\29::CachedTessellationsRec::getCategory\28\29\20const 8503:\28anonymous\20namespace\29::CachedTessellationsRec::bytesUsed\28\29\20const 8504:\28anonymous\20namespace\29::CachedTessellations::~CachedTessellations\28\29.1 8505:\28anonymous\20namespace\29::CacheImpl::~CacheImpl\28\29.1 8506:\28anonymous\20namespace\29::CacheImpl::set\28SkImageFilterCacheKey\20const&\2c\20SkImageFilter\20const*\2c\20skif::FilterResult\20const&\29 8507:\28anonymous\20namespace\29::CacheImpl::purge\28\29 8508:\28anonymous\20namespace\29::CacheImpl::purgeByImageFilter\28SkImageFilter\20const*\29 8509:\28anonymous\20namespace\29::CacheImpl::get\28SkImageFilterCacheKey\20const&\2c\20skif::FilterResult*\29\20const 8510:\28anonymous\20namespace\29::BoundingBoxShader::name\28\29\20const 8511:\28anonymous\20namespace\29::BoundingBoxShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 8512:\28anonymous\20namespace\29::BoundingBoxShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 8513:\28anonymous\20namespace\29::BoundingBoxShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 8514:\28anonymous\20namespace\29::AAHairlineOp::~AAHairlineOp\28\29.1 8515:\28anonymous\20namespace\29::AAHairlineOp::~AAHairlineOp\28\29 8516:\28anonymous\20namespace\29::AAHairlineOp::visitProxies\28std::__2::function\20const&\29\20const 8517:\28anonymous\20namespace\29::AAHairlineOp::onPrepareDraws\28GrMeshDrawTarget*\29 8518:\28anonymous\20namespace\29::AAHairlineOp::onPrePrepareDraws\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8519:\28anonymous\20namespace\29::AAHairlineOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8520:\28anonymous\20namespace\29::AAHairlineOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8521:\28anonymous\20namespace\29::AAHairlineOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 8522:\28anonymous\20namespace\29::AAHairlineOp::name\28\29\20const 8523:\28anonymous\20namespace\29::AAHairlineOp::fixedFunctionFlags\28\29\20const 8524:\28anonymous\20namespace\29::AAHairlineOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8525:YuvToRgbaRow 8526:YuvToRgba4444Row 8527:YuvToRgbRow 8528:YuvToRgb565Row 8529:YuvToBgraRow 8530:YuvToBgrRow 8531:YuvToArgbRow 8532:Write_CVT_Stretched 8533:Write_CVT 8534:WebPYuv444ToRgba_C 8535:WebPYuv444ToRgba4444_C 8536:WebPYuv444ToRgb_C 8537:WebPYuv444ToRgb565_C 8538:WebPYuv444ToBgra_C 8539:WebPYuv444ToBgr_C 8540:WebPYuv444ToArgb_C 8541:WebPRescalerImportRowShrink_C 8542:WebPRescalerImportRowExpand_C 8543:WebPRescalerExportRowShrink_C 8544:WebPRescalerExportRowExpand_C 8545:WebPMultRow_C 8546:WebPMultARGBRow_C 8547:WebPConvertRGBA32ToUV_C 8548:WebPConvertARGBToUV_C 8549:WebGLTextureImageGenerator::~WebGLTextureImageGenerator\28\29.1 8550:WebGLTextureImageGenerator::~WebGLTextureImageGenerator\28\29 8551:WebGLTextureImageGenerator::generateExternalTexture\28GrRecordingContext*\2c\20skgpu::Mipmapped\29 8552:Vertish_SkAntiHairBlitter::drawLine\28int\2c\20int\2c\20int\2c\20int\29 8553:Vertish_SkAntiHairBlitter::drawCap\28int\2c\20int\2c\20int\2c\20int\29 8554:VerticalUnfilter_C 8555:VerticalFilter_C 8556:VertState::Triangles\28VertState*\29 8557:VertState::TrianglesX\28VertState*\29 8558:VertState::TriangleStrip\28VertState*\29 8559:VertState::TriangleStripX\28VertState*\29 8560:VertState::TriangleFan\28VertState*\29 8561:VertState::TriangleFanX\28VertState*\29 8562:VR4_C 8563:VP8LTransformColorInverse_C 8564:VP8LPredictor9_C 8565:VP8LPredictor8_C 8566:VP8LPredictor7_C 8567:VP8LPredictor6_C 8568:VP8LPredictor5_C 8569:VP8LPredictor4_C 8570:VP8LPredictor3_C 8571:VP8LPredictor2_C 8572:VP8LPredictor1_C 8573:VP8LPredictor13_C 8574:VP8LPredictor12_C 8575:VP8LPredictor11_C 8576:VP8LPredictor10_C 8577:VP8LPredictor0_C 8578:VP8LConvertBGRAToRGB_C 8579:VP8LConvertBGRAToRGBA_C 8580:VP8LConvertBGRAToRGBA4444_C 8581:VP8LConvertBGRAToRGB565_C 8582:VP8LConvertBGRAToBGR_C 8583:VP8LAddGreenToBlueAndRed_C 8584:VLine_SkAntiHairBlitter::drawLine\28int\2c\20int\2c\20int\2c\20int\29 8585:VLine_SkAntiHairBlitter::drawCap\28int\2c\20int\2c\20int\2c\20int\29 8586:VL4_C 8587:VFilter8i_C 8588:VFilter8_C 8589:VFilter16i_C 8590:VFilter16_C 8591:VE8uv_C 8592:VE4_C 8593:VE16_C 8594:UpsampleRgbaLinePair_C 8595:UpsampleRgba4444LinePair_C 8596:UpsampleRgbLinePair_C 8597:UpsampleRgb565LinePair_C 8598:UpsampleBgraLinePair_C 8599:UpsampleBgrLinePair_C 8600:UpsampleArgbLinePair_C 8601:UnresolvedCodepoints\28skia::textlayout::Paragraph&\29 8602:TransformWHT_C 8603:TransformUV_C 8604:TransformTwo_C 8605:TransformDC_C 8606:TransformDCUV_C 8607:TransformAC3_C 8608:ToSVGString\28SkPath\20const&\29 8609:ToCmds\28SkPath\20const&\29 8610:TT_Set_MM_Blend 8611:TT_RunIns 8612:TT_Load_Simple_Glyph 8613:TT_Load_Glyph_Header 8614:TT_Load_Composite_Glyph 8615:TT_Get_Var_Design 8616:TT_Get_MM_Blend 8617:TT_Forget_Glyph_Frame 8618:TT_Access_Glyph_Frame 8619:TM8uv_C 8620:TM4_C 8621:TM16_C 8622:Sync 8623:SquareCapper\28SkPath*\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPath*\29 8624:Sprite_D32_S32::blitRect\28int\2c\20int\2c\20int\2c\20int\29 8625:SkWuffsFrameHolder::onGetFrame\28int\29\20const 8626:SkWuffsCodec::~SkWuffsCodec\28\29.1 8627:SkWuffsCodec::~SkWuffsCodec\28\29 8628:SkWuffsCodec::onIncrementalDecode\28int*\29 8629:SkWuffsCodec::onGetRepetitionCount\28\29 8630:SkWuffsCodec::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int*\29 8631:SkWuffsCodec::onGetFrameInfo\28int\2c\20SkCodec::FrameInfo*\29\20const 8632:SkWuffsCodec::onGetFrameCount\28\29 8633:SkWuffsCodec::getFrameHolder\28\29\20const 8634:SkWuffsCodec::getEncodedData\28\29\20const 8635:SkWriteICCProfile\28skcms_TransferFunction\20const&\2c\20skcms_Matrix3x3\20const&\29 8636:SkWebpDecoder::Decode\28std::__2::unique_ptr>\2c\20SkCodec::Result*\2c\20void*\29 8637:SkWebpCodec::~SkWebpCodec\28\29.1 8638:SkWebpCodec::~SkWebpCodec\28\29 8639:SkWebpCodec::onGetValidSubset\28SkIRect*\29\20const 8640:SkWebpCodec::onGetRepetitionCount\28\29 8641:SkWebpCodec::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int*\29 8642:SkWebpCodec::onGetFrameInfo\28int\2c\20SkCodec::FrameInfo*\29\20const 8643:SkWebpCodec::onGetFrameCount\28\29 8644:SkWebpCodec::getFrameHolder\28\29\20const 8645:SkWebpCodec::FrameHolder::~FrameHolder\28\29.1 8646:SkWebpCodec::FrameHolder::~FrameHolder\28\29 8647:SkWebpCodec::FrameHolder::onGetFrame\28int\29\20const 8648:SkWeakRefCnt::internal_dispose\28\29\20const 8649:SkWbmpDecoder::Decode\28std::__2::unique_ptr>\2c\20SkCodec::Result*\2c\20void*\29 8650:SkWbmpCodec::~SkWbmpCodec\28\29.1 8651:SkWbmpCodec::~SkWbmpCodec\28\29 8652:SkWbmpCodec::onStartScanlineDecode\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\29 8653:SkWbmpCodec::onSkipScanlines\28int\29 8654:SkWbmpCodec::onRewind\28\29 8655:SkWbmpCodec::onGetScanlines\28void*\2c\20int\2c\20unsigned\20long\29 8656:SkWbmpCodec::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int*\29 8657:SkWbmpCodec::getSampler\28bool\29 8658:SkWbmpCodec::conversionSupported\28SkImageInfo\20const&\2c\20bool\2c\20bool\29 8659:SkVertices::Builder*\20emscripten::internal::operator_new\28SkVertices::VertexMode&&\2c\20int&&\2c\20int&&\2c\20unsigned\20int&&\29 8660:SkUserTypeface::~SkUserTypeface\28\29.1 8661:SkUserTypeface::~SkUserTypeface\28\29 8662:SkUserTypeface::onOpenStream\28int*\29\20const 8663:SkUserTypeface::onGetUPEM\28\29\20const 8664:SkUserTypeface::onGetFontDescriptor\28SkFontDescriptor*\2c\20bool*\29\20const 8665:SkUserTypeface::onGetFamilyName\28SkString*\29\20const 8666:SkUserTypeface::onFilterRec\28SkScalerContextRec*\29\20const 8667:SkUserTypeface::onCreateScalerContext\28SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29\20const 8668:SkUserTypeface::onCountGlyphs\28\29\20const 8669:SkUserTypeface::onComputeBounds\28SkRect*\29\20const 8670:SkUserTypeface::onCharsToGlyphs\28int\20const*\2c\20int\2c\20unsigned\20short*\29\20const 8671:SkUserTypeface::getGlyphToUnicodeMap\28int*\29\20const 8672:SkUserScalerContext::~SkUserScalerContext\28\29 8673:SkUserScalerContext::generatePath\28SkGlyph\20const&\2c\20SkPath*\29 8674:SkUserScalerContext::generateMetrics\28SkGlyph\20const&\2c\20SkArenaAlloc*\29 8675:SkUserScalerContext::generateImage\28SkGlyph\20const&\2c\20void*\29 8676:SkUserScalerContext::generateFontMetrics\28SkFontMetrics*\29 8677:SkUserScalerContext::generateDrawable\28SkGlyph\20const&\29::DrawableMatrixWrapper::~DrawableMatrixWrapper\28\29.1 8678:SkUserScalerContext::generateDrawable\28SkGlyph\20const&\29::DrawableMatrixWrapper::~DrawableMatrixWrapper\28\29 8679:SkUserScalerContext::generateDrawable\28SkGlyph\20const&\29::DrawableMatrixWrapper::onGetBounds\28\29 8680:SkUserScalerContext::generateDrawable\28SkGlyph\20const&\29::DrawableMatrixWrapper::onDraw\28SkCanvas*\29 8681:SkUserScalerContext::generateDrawable\28SkGlyph\20const&\29::DrawableMatrixWrapper::onApproximateBytesUsed\28\29 8682:SkUserScalerContext::generateDrawable\28SkGlyph\20const&\29 8683:SkUnicode_client::~SkUnicode_client\28\29.1 8684:SkUnicode_client::~SkUnicode_client\28\29 8685:SkUnicode_client::toUpper\28SkString\20const&\2c\20char\20const*\29 8686:SkUnicode_client::toUpper\28SkString\20const&\29 8687:SkUnicode_client::reorderVisual\28unsigned\20char\20const*\2c\20int\2c\20int*\29 8688:SkUnicode_client::makeBreakIterator\28char\20const*\2c\20SkUnicode::BreakType\29 8689:SkUnicode_client::makeBreakIterator\28SkUnicode::BreakType\29 8690:SkUnicode_client::makeBidiIterator\28unsigned\20short\20const*\2c\20int\2c\20SkBidiIterator::Direction\29 8691:SkUnicode_client::makeBidiIterator\28char\20const*\2c\20int\2c\20SkBidiIterator::Direction\29 8692:SkUnicode_client::getWords\28char\20const*\2c\20int\2c\20char\20const*\2c\20std::__2::vector>*\29 8693:SkUnicode_client::getBidiRegions\28char\20const*\2c\20int\2c\20SkUnicode::TextDirection\2c\20std::__2::vector>*\29 8694:SkUnicode_client::computeCodeUnitFlags\28char16_t*\2c\20int\2c\20bool\2c\20skia_private::TArray*\29 8695:SkUnicode_client::computeCodeUnitFlags\28char*\2c\20int\2c\20bool\2c\20skia_private::TArray*\29 8696:SkUnicodeHardCodedCharProperties::isWhitespace\28int\29 8697:SkUnicodeHardCodedCharProperties::isTabulation\28int\29 8698:SkUnicodeHardCodedCharProperties::isSpace\28int\29 8699:SkUnicodeHardCodedCharProperties::isIdeographic\28int\29 8700:SkUnicodeHardCodedCharProperties::isHardBreak\28int\29 8701:SkUnicodeHardCodedCharProperties::isControl\28int\29 8702:SkUnicodeBidiRunIterator::~SkUnicodeBidiRunIterator\28\29.1 8703:SkUnicodeBidiRunIterator::~SkUnicodeBidiRunIterator\28\29 8704:SkUnicodeBidiRunIterator::endOfCurrentRun\28\29\20const 8705:SkUnicodeBidiRunIterator::currentLevel\28\29\20const 8706:SkUnicodeBidiRunIterator::consume\28\29 8707:SkUnicodeBidiRunIterator::atEnd\28\29\20const 8708:SkTypeface_FreeTypeStream::~SkTypeface_FreeTypeStream\28\29.1 8709:SkTypeface_FreeTypeStream::~SkTypeface_FreeTypeStream\28\29 8710:SkTypeface_FreeTypeStream::onOpenStream\28int*\29\20const 8711:SkTypeface_FreeTypeStream::onMakeFontData\28\29\20const 8712:SkTypeface_FreeTypeStream::onMakeClone\28SkFontArguments\20const&\29\20const 8713:SkTypeface_FreeTypeStream::onGetFontDescriptor\28SkFontDescriptor*\2c\20bool*\29\20const 8714:SkTypeface_FreeType::onGlyphMaskNeedsCurrentColor\28\29\20const 8715:SkTypeface_FreeType::onGetVariationDesignPosition\28SkFontArguments::VariationPosition::Coordinate*\2c\20int\29\20const 8716:SkTypeface_FreeType::onGetVariationDesignParameters\28SkFontParameters::Variation::Axis*\2c\20int\29\20const 8717:SkTypeface_FreeType::onGetUPEM\28\29\20const 8718:SkTypeface_FreeType::onGetTableTags\28unsigned\20int*\29\20const 8719:SkTypeface_FreeType::onGetTableData\28unsigned\20int\2c\20unsigned\20long\2c\20unsigned\20long\2c\20void*\29\20const 8720:SkTypeface_FreeType::onGetPostScriptName\28SkString*\29\20const 8721:SkTypeface_FreeType::onGetKerningPairAdjustments\28unsigned\20short\20const*\2c\20int\2c\20int*\29\20const 8722:SkTypeface_FreeType::onGetAdvancedMetrics\28\29\20const 8723:SkTypeface_FreeType::onFilterRec\28SkScalerContextRec*\29\20const 8724:SkTypeface_FreeType::onCreateScalerContext\28SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29\20const 8725:SkTypeface_FreeType::onCreateFamilyNameIterator\28\29\20const 8726:SkTypeface_FreeType::onCountGlyphs\28\29\20const 8727:SkTypeface_FreeType::onCopyTableData\28unsigned\20int\29\20const 8728:SkTypeface_FreeType::onCharsToGlyphs\28int\20const*\2c\20int\2c\20unsigned\20short*\29\20const 8729:SkTypeface_FreeType::getPostScriptGlyphNames\28SkString*\29\20const 8730:SkTypeface_FreeType::getGlyphToUnicodeMap\28int*\29\20const 8731:SkTypeface_Empty::~SkTypeface_Empty\28\29 8732:SkTypeface_Custom::~SkTypeface_Custom\28\29.1 8733:SkTypeface_Custom::onGetFontDescriptor\28SkFontDescriptor*\2c\20bool*\29\20const 8734:SkTypeface::onCopyTableData\28unsigned\20int\29\20const 8735:SkTypeface::onComputeBounds\28SkRect*\29\20const 8736:SkTrimPE::onFilterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29\20const 8737:SkTrimPE::getTypeName\28\29\20const 8738:SkTriColorShader::type\28\29\20const 8739:SkTriColorShader::isOpaque\28\29\20const 8740:SkTriColorShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 8741:SkTransformShader::type\28\29\20const 8742:SkTransformShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 8743:SkTQuad::subDivide\28double\2c\20double\2c\20SkTCurve*\29\20const 8744:SkTQuad::setBounds\28SkDRect*\29\20const 8745:SkTQuad::ptAtT\28double\29\20const 8746:SkTQuad::make\28SkArenaAlloc&\29\20const 8747:SkTQuad::intersectRay\28SkIntersections*\2c\20SkDLine\20const&\29\20const 8748:SkTQuad::hullIntersects\28SkTCurve\20const&\2c\20bool*\29\20const 8749:SkTQuad::dxdyAtT\28double\29\20const 8750:SkTQuad::debugInit\28\29 8751:SkTCubic::subDivide\28double\2c\20double\2c\20SkTCurve*\29\20const 8752:SkTCubic::setBounds\28SkDRect*\29\20const 8753:SkTCubic::ptAtT\28double\29\20const 8754:SkTCubic::otherPts\28int\2c\20SkDPoint\20const**\29\20const 8755:SkTCubic::make\28SkArenaAlloc&\29\20const 8756:SkTCubic::intersectRay\28SkIntersections*\2c\20SkDLine\20const&\29\20const 8757:SkTCubic::hullIntersects\28SkTCurve\20const&\2c\20bool*\29\20const 8758:SkTCubic::hullIntersects\28SkDCubic\20const&\2c\20bool*\29\20const 8759:SkTCubic::dxdyAtT\28double\29\20const 8760:SkTCubic::debugInit\28\29 8761:SkTCubic::controlsInside\28\29\20const 8762:SkTCubic::collapsed\28\29\20const 8763:SkTConic::subDivide\28double\2c\20double\2c\20SkTCurve*\29\20const 8764:SkTConic::setBounds\28SkDRect*\29\20const 8765:SkTConic::ptAtT\28double\29\20const 8766:SkTConic::make\28SkArenaAlloc&\29\20const 8767:SkTConic::intersectRay\28SkIntersections*\2c\20SkDLine\20const&\29\20const 8768:SkTConic::hullIntersects\28SkTCurve\20const&\2c\20bool*\29\20const 8769:SkTConic::hullIntersects\28SkDQuad\20const&\2c\20bool*\29\20const 8770:SkTConic::dxdyAtT\28double\29\20const 8771:SkTConic::debugInit\28\29 8772:SkSwizzler::onSetSampleX\28int\29 8773:SkSwizzler::fillWidth\28\29\20const 8774:SkSweepGradient::getTypeName\28\29\20const 8775:SkSweepGradient::flatten\28SkWriteBuffer&\29\20const 8776:SkSweepGradient::asGradient\28SkShaderBase::GradientInfo*\2c\20SkMatrix*\29\20const 8777:SkSweepGradient::appendGradientStages\28SkArenaAlloc*\2c\20SkRasterPipeline*\2c\20SkRasterPipeline*\29\20const 8778:SkSurface_Raster::~SkSurface_Raster\28\29.1 8779:SkSurface_Raster::~SkSurface_Raster\28\29 8780:SkSurface_Raster::onWritePixels\28SkPixmap\20const&\2c\20int\2c\20int\29 8781:SkSurface_Raster::onRestoreBackingMutability\28\29 8782:SkSurface_Raster::onNewSurface\28SkImageInfo\20const&\29 8783:SkSurface_Raster::onNewImageSnapshot\28SkIRect\20const*\29 8784:SkSurface_Raster::onNewCanvas\28\29 8785:SkSurface_Raster::onDraw\28SkCanvas*\2c\20float\2c\20float\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\29 8786:SkSurface_Raster::onCopyOnWrite\28SkSurface::ContentChangeMode\29 8787:SkSurface_Raster::imageInfo\28\29\20const 8788:SkSurface_Ganesh::~SkSurface_Ganesh\28\29.1 8789:SkSurface_Ganesh::~SkSurface_Ganesh\28\29 8790:SkSurface_Ganesh::replaceBackendTexture\28GrBackendTexture\20const&\2c\20GrSurfaceOrigin\2c\20SkSurface::ContentChangeMode\2c\20void\20\28*\29\28void*\29\2c\20void*\29 8791:SkSurface_Ganesh::onWritePixels\28SkPixmap\20const&\2c\20int\2c\20int\29 8792:SkSurface_Ganesh::onWait\28int\2c\20GrBackendSemaphore\20const*\2c\20bool\29 8793:SkSurface_Ganesh::onNewSurface\28SkImageInfo\20const&\29 8794:SkSurface_Ganesh::onNewImageSnapshot\28SkIRect\20const*\29 8795:SkSurface_Ganesh::onNewCanvas\28\29 8796:SkSurface_Ganesh::onIsCompatible\28GrSurfaceCharacterization\20const&\29\20const 8797:SkSurface_Ganesh::onGetRecordingContext\28\29\20const 8798:SkSurface_Ganesh::onDraw\28SkCanvas*\2c\20float\2c\20float\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\29 8799:SkSurface_Ganesh::onDiscard\28\29 8800:SkSurface_Ganesh::onCopyOnWrite\28SkSurface::ContentChangeMode\29 8801:SkSurface_Ganesh::onCharacterize\28GrSurfaceCharacterization*\29\20const 8802:SkSurface_Ganesh::onCapabilities\28\29 8803:SkSurface_Ganesh::onAsyncRescaleAndReadPixels\28SkImageInfo\20const&\2c\20SkIRect\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29 8804:SkSurface_Ganesh::onAsyncRescaleAndReadPixelsYUV420\28SkYUVColorSpace\2c\20bool\2c\20sk_sp\2c\20SkIRect\2c\20SkISize\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29 8805:SkSurface_Ganesh::imageInfo\28\29\20const 8806:SkSurface_Base::onAsyncRescaleAndReadPixels\28SkImageInfo\20const&\2c\20SkIRect\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29 8807:SkSurface::imageInfo\28\29\20const 8808:SkSurface::height\28\29\20const 8809:SkStrikeCache::~SkStrikeCache\28\29.1 8810:SkStrikeCache::~SkStrikeCache\28\29 8811:SkStrikeCache::findOrCreateScopedStrike\28SkStrikeSpec\20const&\29 8812:SkStrike::~SkStrike\28\29.1 8813:SkStrike::~SkStrike\28\29 8814:SkStrike::strikePromise\28\29 8815:SkStrike::roundingSpec\28\29\20const 8816:SkStrike::prepareForPath\28SkGlyph*\29 8817:SkStrike::prepareForImage\28SkGlyph*\29 8818:SkStrike::prepareForDrawable\28SkGlyph*\29 8819:SkStrike::getDescriptor\28\29\20const 8820:SkSpriteBlitter_Memcpy::blitRect\28int\2c\20int\2c\20int\2c\20int\29 8821:SkSpriteBlitter::~SkSpriteBlitter\28\29.1 8822:SkSpriteBlitter::setup\28SkPixmap\20const&\2c\20int\2c\20int\2c\20SkPaint\20const&\29 8823:SkSpriteBlitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 8824:SkSpriteBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 8825:SkSpriteBlitter::blitH\28int\2c\20int\2c\20int\29 8826:SkSpecialImage_Raster::~SkSpecialImage_Raster\28\29.1 8827:SkSpecialImage_Raster::~SkSpecialImage_Raster\28\29 8828:SkSpecialImage_Raster::onMakeBackingStoreSubset\28SkIRect\20const&\29\20const 8829:SkSpecialImage_Raster::getSize\28\29\20const 8830:SkSpecialImage_Raster::backingStoreDimensions\28\29\20const 8831:SkSpecialImage_Raster::asShader\28SkTileMode\2c\20SkSamplingOptions\20const&\2c\20SkMatrix\20const&\2c\20bool\29\20const 8832:SkSpecialImage_Raster::asImage\28\29\20const 8833:SkSpecialImage_Gpu::~SkSpecialImage_Gpu\28\29.1 8834:SkSpecialImage_Gpu::~SkSpecialImage_Gpu\28\29 8835:SkSpecialImage_Gpu::onMakeBackingStoreSubset\28SkIRect\20const&\29\20const 8836:SkSpecialImage_Gpu::getSize\28\29\20const 8837:SkSpecialImage_Gpu::backingStoreDimensions\28\29\20const 8838:SkSpecialImage_Gpu::asImage\28\29\20const 8839:SkSpecialImage::~SkSpecialImage\28\29 8840:SkSpecialImage::asShader\28SkTileMode\2c\20SkSamplingOptions\20const&\2c\20SkMatrix\20const&\2c\20bool\29\20const 8841:SkShaper::TrivialLanguageRunIterator::~TrivialLanguageRunIterator\28\29.1 8842:SkShaper::TrivialLanguageRunIterator::~TrivialLanguageRunIterator\28\29 8843:SkShaper::TrivialLanguageRunIterator::currentLanguage\28\29\20const 8844:SkShaper::TrivialFontRunIterator::~TrivialFontRunIterator\28\29.1 8845:SkShaper::TrivialFontRunIterator::~TrivialFontRunIterator\28\29 8846:SkShaper::TrivialBiDiRunIterator::currentLevel\28\29\20const 8847:SkScan::HairSquarePath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 8848:SkScan::HairRoundPath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 8849:SkScan::HairPath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 8850:SkScan::AntiHairSquarePath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 8851:SkScan::AntiHairRoundPath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 8852:SkScan::AntiHairPath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 8853:SkScan::AntiFillPath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 8854:SkScalingCodec::onGetScaledDimensions\28float\29\20const 8855:SkScalingCodec::onDimensionsSupported\28SkISize\20const&\29 8856:SkScalerContext_FreeType::~SkScalerContext_FreeType\28\29.1 8857:SkScalerContext_FreeType::~SkScalerContext_FreeType\28\29 8858:SkScalerContext_FreeType::generatePath\28SkGlyph\20const&\2c\20SkPath*\29 8859:SkScalerContext_FreeType::generateMetrics\28SkGlyph\20const&\2c\20SkArenaAlloc*\29 8860:SkScalerContext_FreeType::generateImage\28SkGlyph\20const&\2c\20void*\29 8861:SkScalerContext_FreeType::generateFontMetrics\28SkFontMetrics*\29 8862:SkScalerContext_FreeType::generateDrawable\28SkGlyph\20const&\29 8863:SkScalerContext::MakeEmpty\28sk_sp\2c\20SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29::SkScalerContext_Empty::~SkScalerContext_Empty\28\29 8864:SkScalerContext::MakeEmpty\28sk_sp\2c\20SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29::SkScalerContext_Empty::generatePath\28SkGlyph\20const&\2c\20SkPath*\29 8865:SkScalerContext::MakeEmpty\28sk_sp\2c\20SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29::SkScalerContext_Empty::generateMetrics\28SkGlyph\20const&\2c\20SkArenaAlloc*\29 8866:SkScalerContext::MakeEmpty\28sk_sp\2c\20SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29::SkScalerContext_Empty::generateFontMetrics\28SkFontMetrics*\29 8867:SkSampledCodec::onGetSampledDimensions\28int\29\20const 8868:SkSampledCodec::onGetAndroidPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkAndroidCodec::AndroidOptions\20const&\29 8869:SkSRGBColorSpaceLuminance::toLuma\28float\2c\20float\29\20const 8870:SkSRGBColorSpaceLuminance::fromLuma\28float\2c\20float\29\20const 8871:SkSL::simplify_componentwise\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\29::$_3::__invoke\28double\2c\20double\29 8872:SkSL::simplify_componentwise\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\29::$_2::__invoke\28double\2c\20double\29 8873:SkSL::simplify_componentwise\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\29::$_1::__invoke\28double\2c\20double\29 8874:SkSL::simplify_componentwise\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\29::$_0::__invoke\28double\2c\20double\29 8875:SkSL::remove_break_statements\28std::__2::unique_ptr>&\29::RemoveBreaksWriter::visitStatementPtr\28std::__2::unique_ptr>&\29 8876:SkSL::hoist_vardecl_symbols_into_outer_scope\28SkSL::Context\20const&\2c\20SkSL::Block\20const&\2c\20SkSL::SymbolTable*\2c\20SkSL::SymbolTable*\29::SymbolHoister::visitStatement\28SkSL::Statement\20const&\29 8877:SkSL::eliminate_unreachable_code\28SkSpan>>\2c\20SkSL::ProgramUsage*\29::UnreachableCodeEliminator::~UnreachableCodeEliminator\28\29.1 8878:SkSL::eliminate_unreachable_code\28SkSpan>>\2c\20SkSL::ProgramUsage*\29::UnreachableCodeEliminator::~UnreachableCodeEliminator\28\29 8879:SkSL::eliminate_dead_local_variables\28SkSL::Context\20const&\2c\20SkSpan>>\2c\20SkSL::ProgramUsage*\29::DeadLocalVariableEliminator::~DeadLocalVariableEliminator\28\29.1 8880:SkSL::eliminate_dead_local_variables\28SkSL::Context\20const&\2c\20SkSpan>>\2c\20SkSL::ProgramUsage*\29::DeadLocalVariableEliminator::~DeadLocalVariableEliminator\28\29 8881:SkSL::eliminate_dead_local_variables\28SkSL::Context\20const&\2c\20SkSpan>>\2c\20SkSL::ProgramUsage*\29::DeadLocalVariableEliminator::visitStatementPtr\28std::__2::unique_ptr>&\29 8882:SkSL::eliminate_dead_local_variables\28SkSL::Context\20const&\2c\20SkSpan>>\2c\20SkSL::ProgramUsage*\29::DeadLocalVariableEliminator::visitExpressionPtr\28std::__2::unique_ptr>&\29 8883:SkSL::count_returns_at_end_of_control_flow\28SkSL::FunctionDefinition\20const&\29::CountReturnsAtEndOfControlFlow::visitStatement\28SkSL::Statement\20const&\29 8884:SkSL::\28anonymous\20namespace\29::VariableWriteVisitor::visitExpression\28SkSL::Expression\20const&\29 8885:SkSL::\28anonymous\20namespace\29::SampleOutsideMainVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 8886:SkSL::\28anonymous\20namespace\29::SampleOutsideMainVisitor::visitExpression\28SkSL::Expression\20const&\29 8887:SkSL::\28anonymous\20namespace\29::ReturnsNonOpaqueColorVisitor::visitStatement\28SkSL::Statement\20const&\29 8888:SkSL::\28anonymous\20namespace\29::ReturnsInputAlphaVisitor::visitStatement\28SkSL::Statement\20const&\29 8889:SkSL::\28anonymous\20namespace\29::ReturnsInputAlphaVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 8890:SkSL::\28anonymous\20namespace\29::ProgramUsageVisitor::visitStatement\28SkSL::Statement\20const&\29 8891:SkSL::\28anonymous\20namespace\29::NodeCountVisitor::visitStatement\28SkSL::Statement\20const&\29 8892:SkSL::\28anonymous\20namespace\29::NodeCountVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 8893:SkSL::\28anonymous\20namespace\29::NodeCountVisitor::visitExpression\28SkSL::Expression\20const&\29 8894:SkSL::\28anonymous\20namespace\29::MergeSampleUsageVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 8895:SkSL::\28anonymous\20namespace\29::MergeSampleUsageVisitor::visitExpression\28SkSL::Expression\20const&\29 8896:SkSL::\28anonymous\20namespace\29::FinalizationVisitor::~FinalizationVisitor\28\29.1 8897:SkSL::\28anonymous\20namespace\29::FinalizationVisitor::~FinalizationVisitor\28\29 8898:SkSL::\28anonymous\20namespace\29::FinalizationVisitor::visitExpression\28SkSL::Expression\20const&\29 8899:SkSL::\28anonymous\20namespace\29::ES2IndexingVisitor::~ES2IndexingVisitor\28\29.1 8900:SkSL::\28anonymous\20namespace\29::ES2IndexingVisitor::~ES2IndexingVisitor\28\29 8901:SkSL::\28anonymous\20namespace\29::ES2IndexingVisitor::visitStatement\28SkSL::Statement\20const&\29 8902:SkSL::\28anonymous\20namespace\29::ES2IndexingVisitor::visitExpression\28SkSL::Expression\20const&\29 8903:SkSL::VectorType::isAllowedInUniform\28SkSL::Position*\29\20const 8904:SkSL::VectorType::isAllowedInES2\28\29\20const 8905:SkSL::VariableReference::clone\28SkSL::Position\29\20const 8906:SkSL::Variable::~Variable\28\29.1 8907:SkSL::Variable::~Variable\28\29 8908:SkSL::Variable::setInterfaceBlock\28SkSL::InterfaceBlock*\29 8909:SkSL::Variable::mangledName\28\29\20const 8910:SkSL::Variable::layout\28\29\20const 8911:SkSL::Variable::description\28\29\20const 8912:SkSL::VarDeclaration::~VarDeclaration\28\29.1 8913:SkSL::VarDeclaration::~VarDeclaration\28\29 8914:SkSL::VarDeclaration::description\28\29\20const 8915:SkSL::TypeReference::clone\28SkSL::Position\29\20const 8916:SkSL::Type::minimumValue\28\29\20const 8917:SkSL::Type::maximumValue\28\29\20const 8918:SkSL::Type::isAllowedInUniform\28SkSL::Position*\29\20const 8919:SkSL::Type::fields\28\29\20const 8920:SkSL::Transform::HoistSwitchVarDeclarationsAtTopLevel\28SkSL::Context\20const&\2c\20std::__2::unique_ptr>\29::HoistSwitchVarDeclsVisitor::~HoistSwitchVarDeclsVisitor\28\29.1 8921:SkSL::Transform::HoistSwitchVarDeclarationsAtTopLevel\28SkSL::Context\20const&\2c\20std::__2::unique_ptr>\29::HoistSwitchVarDeclsVisitor::~HoistSwitchVarDeclsVisitor\28\29 8922:SkSL::Transform::HoistSwitchVarDeclarationsAtTopLevel\28SkSL::Context\20const&\2c\20std::__2::unique_ptr>\29::HoistSwitchVarDeclsVisitor::visitStatementPtr\28std::__2::unique_ptr>&\29 8923:SkSL::Tracer::var\28int\2c\20int\29 8924:SkSL::Tracer::scope\28int\29 8925:SkSL::Tracer::line\28int\29 8926:SkSL::Tracer::exit\28int\29 8927:SkSL::Tracer::enter\28int\29 8928:SkSL::TextureType::textureAccess\28\29\20const 8929:SkSL::TextureType::isMultisampled\28\29\20const 8930:SkSL::TextureType::isDepth\28\29\20const 8931:SkSL::TextureType::isArrayedTexture\28\29\20const 8932:SkSL::TernaryExpression::~TernaryExpression\28\29.1 8933:SkSL::TernaryExpression::~TernaryExpression\28\29 8934:SkSL::TernaryExpression::description\28SkSL::OperatorPrecedence\29\20const 8935:SkSL::TernaryExpression::clone\28SkSL::Position\29\20const 8936:SkSL::TProgramVisitor::visitExpression\28SkSL::Expression&\29 8937:SkSL::Swizzle::~Swizzle\28\29.1 8938:SkSL::Swizzle::~Swizzle\28\29 8939:SkSL::Swizzle::description\28SkSL::OperatorPrecedence\29\20const 8940:SkSL::Swizzle::clone\28SkSL::Position\29\20const 8941:SkSL::SwitchStatement::description\28\29\20const 8942:SkSL::SwitchCase::description\28\29\20const 8943:SkSL::StructType::slotType\28unsigned\20long\29\20const 8944:SkSL::StructType::isOrContainsUnsizedArray\28\29\20const 8945:SkSL::StructType::isOrContainsAtomic\28\29\20const 8946:SkSL::StructType::isOrContainsArray\28\29\20const 8947:SkSL::StructType::isInterfaceBlock\28\29\20const 8948:SkSL::StructType::isBuiltin\28\29\20const 8949:SkSL::StructType::isAllowedInUniform\28SkSL::Position*\29\20const 8950:SkSL::StructType::isAllowedInES2\28\29\20const 8951:SkSL::StructType::fields\28\29\20const 8952:SkSL::StructDefinition::description\28\29\20const 8953:SkSL::StringStream::~StringStream\28\29.1 8954:SkSL::StringStream::~StringStream\28\29 8955:SkSL::StringStream::write\28void\20const*\2c\20unsigned\20long\29 8956:SkSL::StringStream::writeText\28char\20const*\29 8957:SkSL::StringStream::write8\28unsigned\20char\29 8958:SkSL::SingleArgumentConstructor::~SingleArgumentConstructor\28\29 8959:SkSL::Setting::description\28SkSL::OperatorPrecedence\29\20const 8960:SkSL::Setting::clone\28SkSL::Position\29\20const 8961:SkSL::ScalarType::priority\28\29\20const 8962:SkSL::ScalarType::numberKind\28\29\20const 8963:SkSL::ScalarType::minimumValue\28\29\20const 8964:SkSL::ScalarType::maximumValue\28\29\20const 8965:SkSL::ScalarType::isAllowedInUniform\28SkSL::Position*\29\20const 8966:SkSL::ScalarType::isAllowedInES2\28\29\20const 8967:SkSL::ScalarType::bitWidth\28\29\20const 8968:SkSL::SamplerType::textureAccess\28\29\20const 8969:SkSL::SamplerType::isMultisampled\28\29\20const 8970:SkSL::SamplerType::isDepth\28\29\20const 8971:SkSL::SamplerType::isArrayedTexture\28\29\20const 8972:SkSL::SamplerType::dimensions\28\29\20const 8973:SkSL::ReturnStatement::description\28\29\20const 8974:SkSL::RP::VariableLValue::store\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 8975:SkSL::RP::VariableLValue::push\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 8976:SkSL::RP::VariableLValue::isWritable\28\29\20const 8977:SkSL::RP::VariableLValue::fixedSlotRange\28SkSL::RP::Generator*\29 8978:SkSL::RP::UnownedLValueSlice::store\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 8979:SkSL::RP::UnownedLValueSlice::push\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 8980:SkSL::RP::UnownedLValueSlice::fixedSlotRange\28SkSL::RP::Generator*\29 8981:SkSL::RP::SwizzleLValue::~SwizzleLValue\28\29.1 8982:SkSL::RP::SwizzleLValue::~SwizzleLValue\28\29 8983:SkSL::RP::SwizzleLValue::swizzle\28\29 8984:SkSL::RP::SwizzleLValue::store\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 8985:SkSL::RP::SwizzleLValue::push\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 8986:SkSL::RP::SwizzleLValue::fixedSlotRange\28SkSL::RP::Generator*\29 8987:SkSL::RP::ScratchLValue::~ScratchLValue\28\29.1 8988:SkSL::RP::ScratchLValue::push\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 8989:SkSL::RP::ScratchLValue::fixedSlotRange\28SkSL::RP::Generator*\29 8990:SkSL::RP::LValueSlice::~LValueSlice\28\29.1 8991:SkSL::RP::LValueSlice::~LValueSlice\28\29 8992:SkSL::RP::LValue::~LValue\28\29.1 8993:SkSL::RP::ImmutableLValue::push\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 8994:SkSL::RP::ImmutableLValue::fixedSlotRange\28SkSL::RP::Generator*\29 8995:SkSL::RP::DynamicIndexLValue::~DynamicIndexLValue\28\29.1 8996:SkSL::RP::DynamicIndexLValue::store\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 8997:SkSL::RP::DynamicIndexLValue::push\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 8998:SkSL::RP::DynamicIndexLValue::isWritable\28\29\20const 8999:SkSL::RP::DynamicIndexLValue::fixedSlotRange\28SkSL::RP::Generator*\29 9000:SkSL::ProgramVisitor::visitStatementPtr\28std::__2::unique_ptr>\20const&\29 9001:SkSL::ProgramVisitor::visitExpressionPtr\28std::__2::unique_ptr>\20const&\29 9002:SkSL::PrefixExpression::description\28SkSL::OperatorPrecedence\29\20const 9003:SkSL::PrefixExpression::clone\28SkSL::Position\29\20const 9004:SkSL::PostfixExpression::description\28SkSL::OperatorPrecedence\29\20const 9005:SkSL::PostfixExpression::clone\28SkSL::Position\29\20const 9006:SkSL::Poison::description\28SkSL::OperatorPrecedence\29\20const 9007:SkSL::Poison::clone\28SkSL::Position\29\20const 9008:SkSL::PipelineStage::Callbacks::getMainName\28\29 9009:SkSL::Parser::Checkpoint::ForwardingErrorReporter::~ForwardingErrorReporter\28\29.1 9010:SkSL::Parser::Checkpoint::ForwardingErrorReporter::~ForwardingErrorReporter\28\29 9011:SkSL::Parser::Checkpoint::ForwardingErrorReporter::handleError\28std::__2::basic_string_view>\2c\20SkSL::Position\29 9012:SkSL::Nop::description\28\29\20const 9013:SkSL::MultiArgumentConstructor::~MultiArgumentConstructor\28\29 9014:SkSL::ModifiersDeclaration::description\28\29\20const 9015:SkSL::MethodReference::description\28SkSL::OperatorPrecedence\29\20const 9016:SkSL::MethodReference::clone\28SkSL::Position\29\20const 9017:SkSL::MatrixType::slotCount\28\29\20const 9018:SkSL::MatrixType::rows\28\29\20const 9019:SkSL::MatrixType::isAllowedInES2\28\29\20const 9020:SkSL::LiteralType::minimumValue\28\29\20const 9021:SkSL::LiteralType::maximumValue\28\29\20const 9022:SkSL::Literal::getConstantValue\28int\29\20const 9023:SkSL::Literal::description\28SkSL::OperatorPrecedence\29\20const 9024:SkSL::Literal::compareConstant\28SkSL::Expression\20const&\29\20const 9025:SkSL::Literal::clone\28SkSL::Position\29\20const 9026:SkSL::Intrinsics::\28anonymous\20namespace\29::finalize_distance\28double\29 9027:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_uintBitsToFloat\28double\2c\20double\2c\20double\29 9028:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_trunc\28double\2c\20double\2c\20double\29 9029:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_tanh\28double\2c\20double\2c\20double\29 9030:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_tan\28double\2c\20double\2c\20double\29 9031:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_sub\28double\2c\20double\2c\20double\29 9032:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_step\28double\2c\20double\2c\20double\29 9033:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_sqrt\28double\2c\20double\2c\20double\29 9034:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_smoothstep\28double\2c\20double\2c\20double\29 9035:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_sinh\28double\2c\20double\2c\20double\29 9036:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_sin\28double\2c\20double\2c\20double\29 9037:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_saturate\28double\2c\20double\2c\20double\29 9038:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_radians\28double\2c\20double\2c\20double\29 9039:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_pow\28double\2c\20double\2c\20double\29 9040:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_mod\28double\2c\20double\2c\20double\29 9041:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_mix\28double\2c\20double\2c\20double\29 9042:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_min\28double\2c\20double\2c\20double\29 9043:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_max\28double\2c\20double\2c\20double\29 9044:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_log\28double\2c\20double\2c\20double\29 9045:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_log2\28double\2c\20double\2c\20double\29 9046:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_inversesqrt\28double\2c\20double\2c\20double\29 9047:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_intBitsToFloat\28double\2c\20double\2c\20double\29 9048:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_fract\28double\2c\20double\2c\20double\29 9049:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_fma\28double\2c\20double\2c\20double\29 9050:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_floor\28double\2c\20double\2c\20double\29 9051:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_floatBitsToUint\28double\2c\20double\2c\20double\29 9052:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_floatBitsToInt\28double\2c\20double\2c\20double\29 9053:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_exp\28double\2c\20double\2c\20double\29 9054:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_exp2\28double\2c\20double\2c\20double\29 9055:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_div\28double\2c\20double\2c\20double\29 9056:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_degrees\28double\2c\20double\2c\20double\29 9057:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_cosh\28double\2c\20double\2c\20double\29 9058:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_cos\28double\2c\20double\2c\20double\29 9059:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_clamp\28double\2c\20double\2c\20double\29 9060:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_ceil\28double\2c\20double\2c\20double\29 9061:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_atanh\28double\2c\20double\2c\20double\29 9062:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_atan\28double\2c\20double\2c\20double\29 9063:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_atan2\28double\2c\20double\2c\20double\29 9064:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_asinh\28double\2c\20double\2c\20double\29 9065:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_asin\28double\2c\20double\2c\20double\29 9066:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_add\28double\2c\20double\2c\20double\29 9067:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_acosh\28double\2c\20double\2c\20double\29 9068:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_acos\28double\2c\20double\2c\20double\29 9069:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_abs\28double\2c\20double\2c\20double\29 9070:SkSL::Intrinsics::\28anonymous\20namespace\29::compare_notEqual\28double\2c\20double\29 9071:SkSL::Intrinsics::\28anonymous\20namespace\29::compare_lessThan\28double\2c\20double\29 9072:SkSL::Intrinsics::\28anonymous\20namespace\29::compare_lessThanEqual\28double\2c\20double\29 9073:SkSL::Intrinsics::\28anonymous\20namespace\29::compare_greaterThan\28double\2c\20double\29 9074:SkSL::Intrinsics::\28anonymous\20namespace\29::compare_greaterThanEqual\28double\2c\20double\29 9075:SkSL::Intrinsics::\28anonymous\20namespace\29::compare_equal\28double\2c\20double\29 9076:SkSL::Intrinsics::\28anonymous\20namespace\29::coalesce_dot\28double\2c\20double\2c\20double\29 9077:SkSL::Intrinsics::\28anonymous\20namespace\29::coalesce_distance\28double\2c\20double\2c\20double\29 9078:SkSL::Intrinsics::\28anonymous\20namespace\29::coalesce_any\28double\2c\20double\2c\20double\29 9079:SkSL::Intrinsics::\28anonymous\20namespace\29::coalesce_all\28double\2c\20double\2c\20double\29 9080:SkSL::InterfaceBlock::~InterfaceBlock\28\29.1 9081:SkSL::InterfaceBlock::description\28\29\20const 9082:SkSL::IndexExpression::~IndexExpression\28\29.1 9083:SkSL::IndexExpression::~IndexExpression\28\29 9084:SkSL::IndexExpression::description\28SkSL::OperatorPrecedence\29\20const 9085:SkSL::IndexExpression::clone\28SkSL::Position\29\20const 9086:SkSL::IfStatement::~IfStatement\28\29.1 9087:SkSL::IfStatement::~IfStatement\28\29 9088:SkSL::IfStatement::description\28\29\20const 9089:SkSL::GlobalVarDeclaration::description\28\29\20const 9090:SkSL::GenericType::slotType\28unsigned\20long\29\20const 9091:SkSL::GenericType::coercibleTypes\28\29\20const 9092:SkSL::GLSLCodeGenerator::~GLSLCodeGenerator\28\29.1 9093:SkSL::FunctionReference::description\28SkSL::OperatorPrecedence\29\20const 9094:SkSL::FunctionReference::clone\28SkSL::Position\29\20const 9095:SkSL::FunctionPrototype::description\28\29\20const 9096:SkSL::FunctionDefinition::description\28\29\20const 9097:SkSL::FunctionDefinition::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::FunctionDeclaration\20const&\2c\20std::__2::unique_ptr>\2c\20bool\29::Finalizer::~Finalizer\28\29.1 9098:SkSL::FunctionDefinition::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::FunctionDeclaration\20const&\2c\20std::__2::unique_ptr>\2c\20bool\29::Finalizer::~Finalizer\28\29 9099:SkSL::FunctionCall::description\28SkSL::OperatorPrecedence\29\20const 9100:SkSL::FunctionCall::clone\28SkSL::Position\29\20const 9101:SkSL::ForStatement::~ForStatement\28\29.1 9102:SkSL::ForStatement::~ForStatement\28\29 9103:SkSL::ForStatement::description\28\29\20const 9104:SkSL::FieldSymbol::description\28\29\20const 9105:SkSL::FieldAccess::clone\28SkSL::Position\29\20const 9106:SkSL::Extension::description\28\29\20const 9107:SkSL::ExtendedVariable::~ExtendedVariable\28\29.1 9108:SkSL::ExtendedVariable::~ExtendedVariable\28\29 9109:SkSL::ExtendedVariable::setInterfaceBlock\28SkSL::InterfaceBlock*\29 9110:SkSL::ExtendedVariable::mangledName\28\29\20const 9111:SkSL::ExtendedVariable::layout\28\29\20const 9112:SkSL::ExtendedVariable::interfaceBlock\28\29\20const 9113:SkSL::ExtendedVariable::detachDeadInterfaceBlock\28\29 9114:SkSL::ExpressionStatement::description\28\29\20const 9115:SkSL::Expression::getConstantValue\28int\29\20const 9116:SkSL::EmptyExpression::description\28SkSL::OperatorPrecedence\29\20const 9117:SkSL::EmptyExpression::clone\28SkSL::Position\29\20const 9118:SkSL::DoStatement::description\28\29\20const 9119:SkSL::DiscardStatement::description\28\29\20const 9120:SkSL::DebugTracePriv::~DebugTracePriv\28\29.1 9121:SkSL::DebugTracePriv::writeTrace\28SkWStream*\29\20const 9122:SkSL::DebugTracePriv::dump\28SkWStream*\29\20const 9123:SkSL::CountReturnsWithLimit::visitStatement\28SkSL::Statement\20const&\29 9124:SkSL::ContinueStatement::description\28\29\20const 9125:SkSL::ConstructorStruct::clone\28SkSL::Position\29\20const 9126:SkSL::ConstructorSplat::getConstantValue\28int\29\20const 9127:SkSL::ConstructorSplat::clone\28SkSL::Position\29\20const 9128:SkSL::ConstructorScalarCast::clone\28SkSL::Position\29\20const 9129:SkSL::ConstructorMatrixResize::getConstantValue\28int\29\20const 9130:SkSL::ConstructorMatrixResize::clone\28SkSL::Position\29\20const 9131:SkSL::ConstructorDiagonalMatrix::getConstantValue\28int\29\20const 9132:SkSL::ConstructorDiagonalMatrix::clone\28SkSL::Position\29\20const 9133:SkSL::ConstructorCompoundCast::clone\28SkSL::Position\29\20const 9134:SkSL::ConstructorCompound::clone\28SkSL::Position\29\20const 9135:SkSL::ConstructorArrayCast::clone\28SkSL::Position\29\20const 9136:SkSL::ConstructorArray::clone\28SkSL::Position\29\20const 9137:SkSL::Compiler::CompilerErrorReporter::handleError\28std::__2::basic_string_view>\2c\20SkSL::Position\29 9138:SkSL::CodeGenerator::~CodeGenerator\28\29 9139:SkSL::ChildCall::description\28SkSL::OperatorPrecedence\29\20const 9140:SkSL::ChildCall::clone\28SkSL::Position\29\20const 9141:SkSL::BreakStatement::description\28\29\20const 9142:SkSL::Block::~Block\28\29.1 9143:SkSL::Block::~Block\28\29 9144:SkSL::Block::isEmpty\28\29\20const 9145:SkSL::Block::description\28\29\20const 9146:SkSL::BinaryExpression::~BinaryExpression\28\29.1 9147:SkSL::BinaryExpression::~BinaryExpression\28\29 9148:SkSL::BinaryExpression::description\28SkSL::OperatorPrecedence\29\20const 9149:SkSL::BinaryExpression::clone\28SkSL::Position\29\20const 9150:SkSL::ArrayType::slotType\28unsigned\20long\29\20const 9151:SkSL::ArrayType::slotCount\28\29\20const 9152:SkSL::ArrayType::isUnsizedArray\28\29\20const 9153:SkSL::ArrayType::isOrContainsUnsizedArray\28\29\20const 9154:SkSL::ArrayType::isOrContainsAtomic\28\29\20const 9155:SkSL::ArrayType::isBuiltin\28\29\20const 9156:SkSL::ArrayType::isAllowedInUniform\28SkSL::Position*\29\20const 9157:SkSL::AnyConstructor::getConstantValue\28int\29\20const 9158:SkSL::AnyConstructor::description\28SkSL::OperatorPrecedence\29\20const 9159:SkSL::AnyConstructor::compareConstant\28SkSL::Expression\20const&\29\20const 9160:SkSL::Analysis::IsDynamicallyUniformExpression\28SkSL::Expression\20const&\29::IsDynamicallyUniformExpressionVisitor::visitExpression\28SkSL::Expression\20const&\29 9161:SkSL::Analysis::IsCompileTimeConstant\28SkSL::Expression\20const&\29::IsCompileTimeConstantVisitor::visitExpression\28SkSL::Expression\20const&\29 9162:SkSL::Analysis::HasSideEffects\28SkSL::Expression\20const&\29::HasSideEffectsVisitor::visitExpression\28SkSL::Expression\20const&\29 9163:SkSL::Analysis::ContainsVariable\28SkSL::Expression\20const&\2c\20SkSL::Variable\20const&\29::ContainsVariableVisitor::visitExpression\28SkSL::Expression\20const&\29 9164:SkSL::Analysis::ContainsRTAdjust\28SkSL::Expression\20const&\29::ContainsRTAdjustVisitor::visitExpression\28SkSL::Expression\20const&\29 9165:SkSL::Analysis::CheckProgramStructure\28SkSL::Program\20const&\2c\20bool\29::ProgramSizeVisitor::~ProgramSizeVisitor\28\29.1 9166:SkSL::Analysis::CheckProgramStructure\28SkSL::Program\20const&\2c\20bool\29::ProgramSizeVisitor::~ProgramSizeVisitor\28\29 9167:SkSL::Analysis::CheckProgramStructure\28SkSL::Program\20const&\2c\20bool\29::ProgramSizeVisitor::visitStatement\28SkSL::Statement\20const&\29 9168:SkSL::Analysis::CheckProgramStructure\28SkSL::Program\20const&\2c\20bool\29::ProgramSizeVisitor::visitExpression\28SkSL::Expression\20const&\29 9169:SkSL::AliasType::textureAccess\28\29\20const 9170:SkSL::AliasType::slotType\28unsigned\20long\29\20const 9171:SkSL::AliasType::slotCount\28\29\20const 9172:SkSL::AliasType::rows\28\29\20const 9173:SkSL::AliasType::priority\28\29\20const 9174:SkSL::AliasType::isVector\28\29\20const 9175:SkSL::AliasType::isUnsizedArray\28\29\20const 9176:SkSL::AliasType::isStruct\28\29\20const 9177:SkSL::AliasType::isScalar\28\29\20const 9178:SkSL::AliasType::isMultisampled\28\29\20const 9179:SkSL::AliasType::isMatrix\28\29\20const 9180:SkSL::AliasType::isLiteral\28\29\20const 9181:SkSL::AliasType::isInterfaceBlock\28\29\20const 9182:SkSL::AliasType::isDepth\28\29\20const 9183:SkSL::AliasType::isArrayedTexture\28\29\20const 9184:SkSL::AliasType::isArray\28\29\20const 9185:SkSL::AliasType::dimensions\28\29\20const 9186:SkSL::AliasType::componentType\28\29\20const 9187:SkSL::AliasType::columns\28\29\20const 9188:SkSL::AliasType::coercibleTypes\28\29\20const 9189:SkRuntimeShader::~SkRuntimeShader\28\29.1 9190:SkRuntimeShader::type\28\29\20const 9191:SkRuntimeShader::isOpaque\28\29\20const 9192:SkRuntimeShader::getTypeName\28\29\20const 9193:SkRuntimeShader::flatten\28SkWriteBuffer&\29\20const 9194:SkRuntimeShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 9195:SkRuntimeEffect::~SkRuntimeEffect\28\29.1 9196:SkRuntimeEffect::MakeFromSource\28SkString\2c\20SkRuntimeEffect::Options\20const&\2c\20SkSL::ProgramKind\29 9197:SkRuntimeColorFilter::~SkRuntimeColorFilter\28\29.1 9198:SkRuntimeColorFilter::~SkRuntimeColorFilter\28\29 9199:SkRuntimeColorFilter::onIsAlphaUnchanged\28\29\20const 9200:SkRuntimeColorFilter::getTypeName\28\29\20const 9201:SkRuntimeColorFilter::appendStages\28SkStageRec\20const&\2c\20bool\29\20const 9202:SkRuntimeBlender::~SkRuntimeBlender\28\29.1 9203:SkRuntimeBlender::~SkRuntimeBlender\28\29 9204:SkRuntimeBlender::onAppendStages\28SkStageRec\20const&\29\20const 9205:SkRuntimeBlender::getTypeName\28\29\20const 9206:SkRgnClipBlitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 9207:SkRgnClipBlitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 9208:SkRgnClipBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 9209:SkRgnClipBlitter::blitH\28int\2c\20int\2c\20int\29 9210:SkRgnClipBlitter::blitAntiRect\28int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\29 9211:SkRgnClipBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 9212:SkRgnBuilder::~SkRgnBuilder\28\29.1 9213:SkRgnBuilder::blitH\28int\2c\20int\2c\20int\29 9214:SkResourceCache::SetTotalByteLimit\28unsigned\20long\29 9215:SkResourceCache::GetTotalBytesUsed\28\29 9216:SkResourceCache::GetTotalByteLimit\28\29 9217:SkRescaleAndReadPixels\28SkBitmap\2c\20SkImageInfo\20const&\2c\20SkIRect\20const&\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29::Result::~Result\28\29.1 9218:SkRescaleAndReadPixels\28SkBitmap\2c\20SkImageInfo\20const&\2c\20SkIRect\20const&\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29::Result::~Result\28\29 9219:SkRescaleAndReadPixels\28SkBitmap\2c\20SkImageInfo\20const&\2c\20SkIRect\20const&\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29::Result::rowBytes\28int\29\20const 9220:SkRescaleAndReadPixels\28SkBitmap\2c\20SkImageInfo\20const&\2c\20SkIRect\20const&\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29::Result::data\28int\29\20const 9221:SkRefCntSet::~SkRefCntSet\28\29.1 9222:SkRefCntSet::incPtr\28void*\29 9223:SkRefCntSet::decPtr\28void*\29 9224:SkRectClipBlitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 9225:SkRectClipBlitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 9226:SkRectClipBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 9227:SkRectClipBlitter::blitH\28int\2c\20int\2c\20int\29 9228:SkRectClipBlitter::blitAntiRect\28int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\29 9229:SkRectClipBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 9230:SkRecorder::~SkRecorder\28\29.1 9231:SkRecorder::~SkRecorder\28\29 9232:SkRecorder::willSave\28\29 9233:SkRecorder::onResetClip\28\29 9234:SkRecorder::onDrawVerticesObject\28SkVertices\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 9235:SkRecorder::onDrawTextBlob\28SkTextBlob\20const*\2c\20float\2c\20float\2c\20SkPaint\20const&\29 9236:SkRecorder::onDrawSlug\28sktext::gpu::Slug\20const*\2c\20SkPaint\20const&\29 9237:SkRecorder::onDrawShadowRec\28SkPath\20const&\2c\20SkDrawShadowRec\20const&\29 9238:SkRecorder::onDrawRegion\28SkRegion\20const&\2c\20SkPaint\20const&\29 9239:SkRecorder::onDrawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 9240:SkRecorder::onDrawRRect\28SkRRect\20const&\2c\20SkPaint\20const&\29 9241:SkRecorder::onDrawPoints\28SkCanvas::PointMode\2c\20unsigned\20long\2c\20SkPoint\20const*\2c\20SkPaint\20const&\29 9242:SkRecorder::onDrawPicture\28SkPicture\20const*\2c\20SkMatrix\20const*\2c\20SkPaint\20const*\29 9243:SkRecorder::onDrawPath\28SkPath\20const&\2c\20SkPaint\20const&\29 9244:SkRecorder::onDrawPatch\28SkPoint\20const*\2c\20unsigned\20int\20const*\2c\20SkPoint\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 9245:SkRecorder::onDrawPaint\28SkPaint\20const&\29 9246:SkRecorder::onDrawOval\28SkRect\20const&\2c\20SkPaint\20const&\29 9247:SkRecorder::onDrawMesh\28SkMesh\20const&\2c\20sk_sp\2c\20SkPaint\20const&\29 9248:SkRecorder::onDrawImageRect2\28SkImage\20const*\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 9249:SkRecorder::onDrawImageLattice2\28SkImage\20const*\2c\20SkCanvas::Lattice\20const&\2c\20SkRect\20const&\2c\20SkFilterMode\2c\20SkPaint\20const*\29 9250:SkRecorder::onDrawImage2\28SkImage\20const*\2c\20float\2c\20float\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\29 9251:SkRecorder::onDrawGlyphRunList\28sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\29 9252:SkRecorder::onDrawEdgeAAQuad\28SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkBlendMode\29 9253:SkRecorder::onDrawEdgeAAImageSet2\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 9254:SkRecorder::onDrawDrawable\28SkDrawable*\2c\20SkMatrix\20const*\29 9255:SkRecorder::onDrawDRRect\28SkRRect\20const&\2c\20SkRRect\20const&\2c\20SkPaint\20const&\29 9256:SkRecorder::onDrawBehind\28SkPaint\20const&\29 9257:SkRecorder::onDrawAtlas2\28SkImage\20const*\2c\20SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20SkBlendMode\2c\20SkSamplingOptions\20const&\2c\20SkRect\20const*\2c\20SkPaint\20const*\29 9258:SkRecorder::onDrawArc\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 9259:SkRecorder::onDrawAnnotation\28SkRect\20const&\2c\20char\20const*\2c\20SkData*\29 9260:SkRecorder::onDoSaveBehind\28SkRect\20const*\29 9261:SkRecorder::onClipShader\28sk_sp\2c\20SkClipOp\29 9262:SkRecorder::onClipRegion\28SkRegion\20const&\2c\20SkClipOp\29 9263:SkRecorder::onClipRect\28SkRect\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 9264:SkRecorder::onClipRRect\28SkRRect\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 9265:SkRecorder::onClipPath\28SkPath\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 9266:SkRecorder::getSaveLayerStrategy\28SkCanvas::SaveLayerRec\20const&\29 9267:SkRecorder::didTranslate\28float\2c\20float\29 9268:SkRecorder::didSetM44\28SkM44\20const&\29 9269:SkRecorder::didScale\28float\2c\20float\29 9270:SkRecorder::didRestore\28\29 9271:SkRecorder::didConcat44\28SkM44\20const&\29 9272:SkRecordedDrawable::~SkRecordedDrawable\28\29.1 9273:SkRecordedDrawable::~SkRecordedDrawable\28\29 9274:SkRecordedDrawable::onMakePictureSnapshot\28\29 9275:SkRecordedDrawable::onGetBounds\28\29 9276:SkRecordedDrawable::onDraw\28SkCanvas*\29 9277:SkRecordedDrawable::onApproximateBytesUsed\28\29 9278:SkRecordedDrawable::getTypeName\28\29\20const 9279:SkRecordedDrawable::flatten\28SkWriteBuffer&\29\20const 9280:SkRecord::~SkRecord\28\29.1 9281:SkRecord::~SkRecord\28\29 9282:SkRasterPipelineSpriteBlitter::~SkRasterPipelineSpriteBlitter\28\29.1 9283:SkRasterPipelineSpriteBlitter::~SkRasterPipelineSpriteBlitter\28\29 9284:SkRasterPipelineSpriteBlitter::setup\28SkPixmap\20const&\2c\20int\2c\20int\2c\20SkPaint\20const&\29 9285:SkRasterPipelineSpriteBlitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 9286:SkRasterPipelineBlitter::~SkRasterPipelineBlitter\28\29.1 9287:SkRasterPipelineBlitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 9288:SkRasterPipelineBlitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 9289:SkRasterPipelineBlitter::blitH\28int\2c\20int\2c\20int\29 9290:SkRasterPipelineBlitter::blitAntiV2\28int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 9291:SkRasterPipelineBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 9292:SkRasterPipelineBlitter::blitAntiH2\28int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 9293:SkRasterPipelineBlitter::Create\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkArenaAlloc*\2c\20SkRasterPipeline\20const&\2c\20bool\2c\20bool\2c\20SkShader\20const*\29::$_3::__invoke\28SkPixmap*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20long\20long\29 9294:SkRasterPipelineBlitter::Create\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkArenaAlloc*\2c\20SkRasterPipeline\20const&\2c\20bool\2c\20bool\2c\20SkShader\20const*\29::$_2::__invoke\28SkPixmap*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20long\20long\29 9295:SkRasterPipelineBlitter::Create\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkArenaAlloc*\2c\20SkRasterPipeline\20const&\2c\20bool\2c\20bool\2c\20SkShader\20const*\29::$_1::__invoke\28SkPixmap*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20long\20long\29 9296:SkRasterPipelineBlitter::Create\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkArenaAlloc*\2c\20SkRasterPipeline\20const&\2c\20bool\2c\20bool\2c\20SkShader\20const*\29::$_0::__invoke\28SkPixmap*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20long\20long\29 9297:SkRadialGradient::getTypeName\28\29\20const 9298:SkRadialGradient::flatten\28SkWriteBuffer&\29\20const 9299:SkRadialGradient::asGradient\28SkShaderBase::GradientInfo*\2c\20SkMatrix*\29\20const 9300:SkRadialGradient::appendGradientStages\28SkArenaAlloc*\2c\20SkRasterPipeline*\2c\20SkRasterPipeline*\29\20const 9301:SkRTree::~SkRTree\28\29.1 9302:SkRTree::~SkRTree\28\29 9303:SkRTree::search\28SkRect\20const&\2c\20std::__2::vector>*\29\20const 9304:SkRTree::insert\28SkRect\20const*\2c\20int\29 9305:SkRTree::bytesUsed\28\29\20const 9306:SkPtrSet::~SkPtrSet\28\29 9307:SkPngNormalDecoder::~SkPngNormalDecoder\28\29 9308:SkPngNormalDecoder::setRange\28int\2c\20int\2c\20void*\2c\20unsigned\20long\29 9309:SkPngNormalDecoder::decode\28int*\29 9310:SkPngNormalDecoder::decodeAllRows\28void*\2c\20unsigned\20long\2c\20int*\29 9311:SkPngNormalDecoder::RowCallback\28png_struct_def*\2c\20unsigned\20char*\2c\20unsigned\20int\2c\20int\29 9312:SkPngNormalDecoder::AllRowsCallback\28png_struct_def*\2c\20unsigned\20char*\2c\20unsigned\20int\2c\20int\29 9313:SkPngInterlacedDecoder::~SkPngInterlacedDecoder\28\29.1 9314:SkPngInterlacedDecoder::~SkPngInterlacedDecoder\28\29 9315:SkPngInterlacedDecoder::setRange\28int\2c\20int\2c\20void*\2c\20unsigned\20long\29 9316:SkPngInterlacedDecoder::decode\28int*\29 9317:SkPngInterlacedDecoder::decodeAllRows\28void*\2c\20unsigned\20long\2c\20int*\29 9318:SkPngInterlacedDecoder::InterlacedRowCallback\28png_struct_def*\2c\20unsigned\20char*\2c\20unsigned\20int\2c\20int\29 9319:SkPngEncoderImpl::~SkPngEncoderImpl\28\29.1 9320:SkPngEncoderImpl::~SkPngEncoderImpl\28\29 9321:SkPngEncoderImpl::onEncodeRows\28int\29 9322:SkPngDecoder::Decode\28std::__2::unique_ptr>\2c\20SkCodec::Result*\2c\20void*\29 9323:SkPngCodec::onStartIncrementalDecode\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\29 9324:SkPngCodec::onRewind\28\29 9325:SkPngCodec::onIncrementalDecode\28int*\29 9326:SkPngCodec::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int*\29 9327:SkPngCodec::getSampler\28bool\29 9328:SkPngCodec::createColorTable\28SkImageInfo\20const&\29 9329:SkPixmap::erase\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkIRect\20const*\29\20const::$_2::__invoke\28void*\2c\20unsigned\20long\20long\2c\20int\29 9330:SkPixmap::erase\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkIRect\20const*\29\20const::$_1::__invoke\28void*\2c\20unsigned\20long\20long\2c\20int\29 9331:SkPixmap::erase\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkIRect\20const*\29\20const::$_0::__invoke\28void*\2c\20unsigned\20long\20long\2c\20int\29 9332:SkPixelRef::~SkPixelRef\28\29.1 9333:SkPictureShader::~SkPictureShader\28\29.1 9334:SkPictureShader::~SkPictureShader\28\29 9335:SkPictureShader::type\28\29\20const 9336:SkPictureShader::getTypeName\28\29\20const 9337:SkPictureShader::flatten\28SkWriteBuffer&\29\20const 9338:SkPictureShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 9339:SkPictureRecorder*\20emscripten::internal::operator_new\28\29 9340:SkPictureRecord::~SkPictureRecord\28\29.1 9341:SkPictureRecord::willSave\28\29 9342:SkPictureRecord::willRestore\28\29 9343:SkPictureRecord::onResetClip\28\29 9344:SkPictureRecord::onDrawVerticesObject\28SkVertices\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 9345:SkPictureRecord::onDrawTextBlob\28SkTextBlob\20const*\2c\20float\2c\20float\2c\20SkPaint\20const&\29 9346:SkPictureRecord::onDrawSlug\28sktext::gpu::Slug\20const*\2c\20SkPaint\20const&\29 9347:SkPictureRecord::onDrawShadowRec\28SkPath\20const&\2c\20SkDrawShadowRec\20const&\29 9348:SkPictureRecord::onDrawRegion\28SkRegion\20const&\2c\20SkPaint\20const&\29 9349:SkPictureRecord::onDrawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 9350:SkPictureRecord::onDrawRRect\28SkRRect\20const&\2c\20SkPaint\20const&\29 9351:SkPictureRecord::onDrawPoints\28SkCanvas::PointMode\2c\20unsigned\20long\2c\20SkPoint\20const*\2c\20SkPaint\20const&\29 9352:SkPictureRecord::onDrawPicture\28SkPicture\20const*\2c\20SkMatrix\20const*\2c\20SkPaint\20const*\29 9353:SkPictureRecord::onDrawPath\28SkPath\20const&\2c\20SkPaint\20const&\29 9354:SkPictureRecord::onDrawPatch\28SkPoint\20const*\2c\20unsigned\20int\20const*\2c\20SkPoint\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 9355:SkPictureRecord::onDrawPaint\28SkPaint\20const&\29 9356:SkPictureRecord::onDrawOval\28SkRect\20const&\2c\20SkPaint\20const&\29 9357:SkPictureRecord::onDrawImageRect2\28SkImage\20const*\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 9358:SkPictureRecord::onDrawImageLattice2\28SkImage\20const*\2c\20SkCanvas::Lattice\20const&\2c\20SkRect\20const&\2c\20SkFilterMode\2c\20SkPaint\20const*\29 9359:SkPictureRecord::onDrawImage2\28SkImage\20const*\2c\20float\2c\20float\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\29 9360:SkPictureRecord::onDrawEdgeAAQuad\28SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkBlendMode\29 9361:SkPictureRecord::onDrawEdgeAAImageSet2\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 9362:SkPictureRecord::onDrawDrawable\28SkDrawable*\2c\20SkMatrix\20const*\29 9363:SkPictureRecord::onDrawDRRect\28SkRRect\20const&\2c\20SkRRect\20const&\2c\20SkPaint\20const&\29 9364:SkPictureRecord::onDrawBehind\28SkPaint\20const&\29 9365:SkPictureRecord::onDrawAtlas2\28SkImage\20const*\2c\20SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20SkBlendMode\2c\20SkSamplingOptions\20const&\2c\20SkRect\20const*\2c\20SkPaint\20const*\29 9366:SkPictureRecord::onDrawArc\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 9367:SkPictureRecord::onDrawAnnotation\28SkRect\20const&\2c\20char\20const*\2c\20SkData*\29 9368:SkPictureRecord::onDoSaveBehind\28SkRect\20const*\29 9369:SkPictureRecord::onClipShader\28sk_sp\2c\20SkClipOp\29 9370:SkPictureRecord::onClipRegion\28SkRegion\20const&\2c\20SkClipOp\29 9371:SkPictureRecord::onClipRect\28SkRect\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 9372:SkPictureRecord::onClipRRect\28SkRRect\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 9373:SkPictureRecord::onClipPath\28SkPath\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 9374:SkPictureRecord::getSaveLayerStrategy\28SkCanvas::SaveLayerRec\20const&\29 9375:SkPictureRecord::didTranslate\28float\2c\20float\29 9376:SkPictureRecord::didSetM44\28SkM44\20const&\29 9377:SkPictureRecord::didScale\28float\2c\20float\29 9378:SkPictureRecord::didConcat44\28SkM44\20const&\29 9379:SkPictureData::serialize\28SkWStream*\2c\20SkSerialProcs\20const&\2c\20SkRefCntSet*\2c\20bool\29\20const::DevNull::write\28void\20const*\2c\20unsigned\20long\29 9380:SkPerlinNoiseShader::~SkPerlinNoiseShader\28\29.1 9381:SkPerlinNoiseShader::~SkPerlinNoiseShader\28\29 9382:SkPerlinNoiseShader::type\28\29\20const 9383:SkPerlinNoiseShader::getTypeName\28\29\20const 9384:SkPerlinNoiseShader::flatten\28SkWriteBuffer&\29\20const 9385:SkPerlinNoiseShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 9386:SkPath::setIsVolatile\28bool\29 9387:SkPath::setFillType\28SkPathFillType\29 9388:SkPath::isVolatile\28\29\20const 9389:SkPath::getFillType\28\29\20const 9390:SkPath2DPathEffectImpl::~SkPath2DPathEffectImpl\28\29.1 9391:SkPath2DPathEffectImpl::~SkPath2DPathEffectImpl\28\29 9392:SkPath2DPathEffectImpl::next\28SkPoint\20const&\2c\20int\2c\20int\2c\20SkPath*\29\20const 9393:SkPath2DPathEffectImpl::getTypeName\28\29\20const 9394:SkPath2DPathEffectImpl::getFactory\28\29\20const 9395:SkPath2DPathEffectImpl::flatten\28SkWriteBuffer&\29\20const 9396:SkPath2DPathEffectImpl::CreateProc\28SkReadBuffer&\29 9397:SkPath1DPathEffectImpl::~SkPath1DPathEffectImpl\28\29.1 9398:SkPath1DPathEffectImpl::~SkPath1DPathEffectImpl\28\29 9399:SkPath1DPathEffectImpl::onFilterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29\20const 9400:SkPath1DPathEffectImpl::next\28SkPath*\2c\20float\2c\20SkPathMeasure&\29\20const 9401:SkPath1DPathEffectImpl::getTypeName\28\29\20const 9402:SkPath1DPathEffectImpl::getFactory\28\29\20const 9403:SkPath1DPathEffectImpl::flatten\28SkWriteBuffer&\29\20const 9404:SkPath1DPathEffectImpl::begin\28float\29\20const 9405:SkPath1DPathEffectImpl::CreateProc\28SkReadBuffer&\29 9406:SkPath*\20emscripten::internal::operator_new\28\29 9407:SkPairPathEffect::~SkPairPathEffect\28\29.1 9408:SkPaint::setDither\28bool\29 9409:SkPaint::setAntiAlias\28bool\29 9410:SkPaint::getStrokeMiter\28\29\20const 9411:SkPaint::getStrokeJoin\28\29\20const 9412:SkPaint::getStrokeCap\28\29\20const 9413:SkPaint*\20emscripten::internal::operator_new\28\29 9414:SkOTUtils::LocalizedStrings_SingleName::~LocalizedStrings_SingleName\28\29.1 9415:SkOTUtils::LocalizedStrings_SingleName::~LocalizedStrings_SingleName\28\29 9416:SkOTUtils::LocalizedStrings_SingleName::next\28SkTypeface::LocalizedString*\29 9417:SkOTUtils::LocalizedStrings_NameTable::~LocalizedStrings_NameTable\28\29.1 9418:SkOTUtils::LocalizedStrings_NameTable::~LocalizedStrings_NameTable\28\29 9419:SkOTUtils::LocalizedStrings_NameTable::next\28SkTypeface::LocalizedString*\29 9420:SkNoPixelsDevice::~SkNoPixelsDevice\28\29.1 9421:SkNoPixelsDevice::~SkNoPixelsDevice\28\29 9422:SkNoPixelsDevice::replaceClip\28SkIRect\20const&\29 9423:SkNoPixelsDevice::pushClipStack\28\29 9424:SkNoPixelsDevice::popClipStack\28\29 9425:SkNoPixelsDevice::onClipShader\28sk_sp\29 9426:SkNoPixelsDevice::isClipWideOpen\28\29\20const 9427:SkNoPixelsDevice::isClipRect\28\29\20const 9428:SkNoPixelsDevice::isClipEmpty\28\29\20const 9429:SkNoPixelsDevice::isClipAntiAliased\28\29\20const 9430:SkNoPixelsDevice::devClipBounds\28\29\20const 9431:SkNoPixelsDevice::clipRegion\28SkRegion\20const&\2c\20SkClipOp\29 9432:SkNoPixelsDevice::clipRect\28SkRect\20const&\2c\20SkClipOp\2c\20bool\29 9433:SkNoPixelsDevice::clipRRect\28SkRRect\20const&\2c\20SkClipOp\2c\20bool\29 9434:SkNoPixelsDevice::clipPath\28SkPath\20const&\2c\20SkClipOp\2c\20bool\29 9435:SkNoPixelsDevice::android_utils_clipAsRgn\28SkRegion*\29\20const 9436:SkNoDrawCanvas::onDrawTextBlob\28SkTextBlob\20const*\2c\20float\2c\20float\2c\20SkPaint\20const&\29 9437:SkNoDrawCanvas::onDrawAtlas2\28SkImage\20const*\2c\20SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20SkBlendMode\2c\20SkSamplingOptions\20const&\2c\20SkRect\20const*\2c\20SkPaint\20const*\29 9438:SkMipmap::~SkMipmap\28\29.1 9439:SkMipmap::~SkMipmap\28\29 9440:SkMipmap::onDataChange\28void*\2c\20void*\29 9441:SkMipmap::countLevels\28\29\20const 9442:SkMemoryStream::~SkMemoryStream\28\29.1 9443:SkMemoryStream::~SkMemoryStream\28\29 9444:SkMemoryStream::setMemory\28void\20const*\2c\20unsigned\20long\2c\20bool\29 9445:SkMemoryStream::seek\28unsigned\20long\29 9446:SkMemoryStream::rewind\28\29 9447:SkMemoryStream::read\28void*\2c\20unsigned\20long\29 9448:SkMemoryStream::peek\28void*\2c\20unsigned\20long\29\20const 9449:SkMemoryStream::onFork\28\29\20const 9450:SkMemoryStream::onDuplicate\28\29\20const 9451:SkMemoryStream::move\28long\29 9452:SkMemoryStream::isAtEnd\28\29\20const 9453:SkMemoryStream::getMemoryBase\28\29 9454:SkMemoryStream::getLength\28\29\20const 9455:SkMemoryStream::getData\28\29\20const 9456:SkMatrixColorFilter::onIsAlphaUnchanged\28\29\20const 9457:SkMatrixColorFilter::onAsAColorMatrix\28float*\29\20const 9458:SkMatrixColorFilter::getTypeName\28\29\20const 9459:SkMatrixColorFilter::flatten\28SkWriteBuffer&\29\20const 9460:SkMatrixColorFilter::appendStages\28SkStageRec\20const&\2c\20bool\29\20const 9461:SkMatrix::Trans_xy\28SkMatrix\20const&\2c\20float\2c\20float\2c\20SkPoint*\29 9462:SkMatrix::Trans_pts\28SkMatrix\20const&\2c\20SkPoint*\2c\20SkPoint\20const*\2c\20int\29 9463:SkMatrix::Scale_xy\28SkMatrix\20const&\2c\20float\2c\20float\2c\20SkPoint*\29 9464:SkMatrix::Scale_pts\28SkMatrix\20const&\2c\20SkPoint*\2c\20SkPoint\20const*\2c\20int\29 9465:SkMatrix::ScaleTrans_xy\28SkMatrix\20const&\2c\20float\2c\20float\2c\20SkPoint*\29 9466:SkMatrix::Poly4Proc\28SkPoint\20const*\2c\20SkMatrix*\29 9467:SkMatrix::Poly3Proc\28SkPoint\20const*\2c\20SkMatrix*\29 9468:SkMatrix::Poly2Proc\28SkPoint\20const*\2c\20SkMatrix*\29 9469:SkMatrix::Persp_xy\28SkMatrix\20const&\2c\20float\2c\20float\2c\20SkPoint*\29 9470:SkMatrix::Persp_pts\28SkMatrix\20const&\2c\20SkPoint*\2c\20SkPoint\20const*\2c\20int\29 9471:SkMatrix::Identity_xy\28SkMatrix\20const&\2c\20float\2c\20float\2c\20SkPoint*\29 9472:SkMatrix::Identity_pts\28SkMatrix\20const&\2c\20SkPoint*\2c\20SkPoint\20const*\2c\20int\29 9473:SkMatrix::Affine_vpts\28SkMatrix\20const&\2c\20SkPoint*\2c\20SkPoint\20const*\2c\20int\29 9474:SkMaskSwizzler::onSetSampleX\28int\29 9475:SkMaskFilterBase::filterRectsToNine\28SkRect\20const*\2c\20int\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20SkTLazy*\29\20const 9476:SkMaskFilterBase::filterRRectToNine\28SkRRect\20const&\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20SkTLazy*\29\20const 9477:SkMallocPixelRef::MakeAllocate\28SkImageInfo\20const&\2c\20unsigned\20long\29::PixelRef::~PixelRef\28\29.1 9478:SkMallocPixelRef::MakeAllocate\28SkImageInfo\20const&\2c\20unsigned\20long\29::PixelRef::~PixelRef\28\29 9479:SkMakePixelRefWithProc\28int\2c\20int\2c\20unsigned\20long\2c\20void*\2c\20void\20\28*\29\28void*\2c\20void*\29\2c\20void*\29::PixelRef::~PixelRef\28\29.1 9480:SkMakePixelRefWithProc\28int\2c\20int\2c\20unsigned\20long\2c\20void*\2c\20void\20\28*\29\28void*\2c\20void*\29\2c\20void*\29::PixelRef::~PixelRef\28\29 9481:SkLumaColorFilter::Make\28\29 9482:SkLocalMatrixShader::~SkLocalMatrixShader\28\29.1 9483:SkLocalMatrixShader::~SkLocalMatrixShader\28\29 9484:SkLocalMatrixShader::onIsAImage\28SkMatrix*\2c\20SkTileMode*\29\20const 9485:SkLocalMatrixShader::makeAsALocalMatrixShader\28SkMatrix*\29\20const 9486:SkLocalMatrixShader::isOpaque\28\29\20const 9487:SkLocalMatrixShader::isConstant\28\29\20const 9488:SkLocalMatrixShader::getTypeName\28\29\20const 9489:SkLocalMatrixShader::flatten\28SkWriteBuffer&\29\20const 9490:SkLocalMatrixShader::asGradient\28SkShaderBase::GradientInfo*\2c\20SkMatrix*\29\20const 9491:SkLocalMatrixShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 9492:SkLinearGradient::getTypeName\28\29\20const 9493:SkLinearGradient::flatten\28SkWriteBuffer&\29\20const 9494:SkLinearGradient::asGradient\28SkShaderBase::GradientInfo*\2c\20SkMatrix*\29\20const 9495:SkLine2DPathEffectImpl::onFilterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29\20const 9496:SkLine2DPathEffectImpl::nextSpan\28int\2c\20int\2c\20int\2c\20SkPath*\29\20const 9497:SkLine2DPathEffectImpl::getTypeName\28\29\20const 9498:SkLine2DPathEffectImpl::getFactory\28\29\20const 9499:SkLine2DPathEffectImpl::flatten\28SkWriteBuffer&\29\20const 9500:SkLine2DPathEffectImpl::CreateProc\28SkReadBuffer&\29 9501:SkJpegMetadataDecoderImpl::~SkJpegMetadataDecoderImpl\28\29.1 9502:SkJpegMetadataDecoderImpl::~SkJpegMetadataDecoderImpl\28\29 9503:SkJpegMetadataDecoderImpl::getICCProfileData\28bool\29\20const 9504:SkJpegMetadataDecoderImpl::getExifMetadata\28bool\29\20const 9505:SkJpegMemorySourceMgr::skipInputBytes\28unsigned\20long\2c\20unsigned\20char\20const*&\2c\20unsigned\20long&\29 9506:SkJpegMemorySourceMgr::initSource\28unsigned\20char\20const*&\2c\20unsigned\20long&\29 9507:SkJpegDecoder::Decode\28std::__2::unique_ptr>\2c\20SkCodec::Result*\2c\20void*\29 9508:SkJpegCodec::~SkJpegCodec\28\29.1 9509:SkJpegCodec::~SkJpegCodec\28\29 9510:SkJpegCodec::onStartScanlineDecode\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\29 9511:SkJpegCodec::onSkipScanlines\28int\29 9512:SkJpegCodec::onRewind\28\29 9513:SkJpegCodec::onQueryYUVAInfo\28SkYUVAPixmapInfo::SupportedDataTypes\20const&\2c\20SkYUVAPixmapInfo*\29\20const 9514:SkJpegCodec::onGetYUVAPlanes\28SkYUVAPixmaps\20const&\29 9515:SkJpegCodec::onGetScanlines\28void*\2c\20int\2c\20unsigned\20long\29 9516:SkJpegCodec::onGetScaledDimensions\28float\29\20const 9517:SkJpegCodec::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int*\29 9518:SkJpegCodec::onDimensionsSupported\28SkISize\20const&\29 9519:SkJpegCodec::getSampler\28bool\29 9520:SkJpegCodec::conversionSupported\28SkImageInfo\20const&\2c\20bool\2c\20bool\29 9521:SkJpegBufferedSourceMgr::~SkJpegBufferedSourceMgr\28\29.1 9522:SkJpegBufferedSourceMgr::~SkJpegBufferedSourceMgr\28\29 9523:SkJpegBufferedSourceMgr::skipInputBytes\28unsigned\20long\2c\20unsigned\20char\20const*&\2c\20unsigned\20long&\29 9524:SkJpegBufferedSourceMgr::initSource\28unsigned\20char\20const*&\2c\20unsigned\20long&\29 9525:SkJpegBufferedSourceMgr::fillInputBuffer\28unsigned\20char\20const*&\2c\20unsigned\20long&\29 9526:SkImage_Raster::~SkImage_Raster\28\29.1 9527:SkImage_Raster::~SkImage_Raster\28\29 9528:SkImage_Raster::onReinterpretColorSpace\28sk_sp\29\20const 9529:SkImage_Raster::onReadPixels\28GrDirectContext*\2c\20SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20int\2c\20int\2c\20SkImage::CachingHint\29\20const 9530:SkImage_Raster::onPeekPixels\28SkPixmap*\29\20const 9531:SkImage_Raster::onPeekMips\28\29\20const 9532:SkImage_Raster::onPeekBitmap\28\29\20const 9533:SkImage_Raster::onMakeWithMipmaps\28sk_sp\29\20const 9534:SkImage_Raster::onMakeSubset\28skgpu::graphite::Recorder*\2c\20SkIRect\20const&\2c\20SkImage::RequiredProperties\29\20const 9535:SkImage_Raster::onMakeSubset\28GrDirectContext*\2c\20SkIRect\20const&\29\20const 9536:SkImage_Raster::onMakeColorTypeAndColorSpace\28SkColorType\2c\20sk_sp\2c\20GrDirectContext*\29\20const 9537:SkImage_Raster::onHasMipmaps\28\29\20const 9538:SkImage_Raster::onAsLegacyBitmap\28GrDirectContext*\2c\20SkBitmap*\29\20const 9539:SkImage_Raster::notifyAddedToRasterCache\28\29\20const 9540:SkImage_Raster::getROPixels\28GrDirectContext*\2c\20SkBitmap*\2c\20SkImage::CachingHint\29\20const 9541:SkImage_LazyTexture::readPixelsProxy\28GrDirectContext*\2c\20SkPixmap\20const&\29\20const 9542:SkImage_LazyTexture::onMakeSubset\28GrDirectContext*\2c\20SkIRect\20const&\29\20const 9543:SkImage_Lazy::~SkImage_Lazy\28\29 9544:SkImage_Lazy::onReinterpretColorSpace\28sk_sp\29\20const 9545:SkImage_Lazy::onRefEncoded\28\29\20const 9546:SkImage_Lazy::onReadPixels\28GrDirectContext*\2c\20SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20int\2c\20int\2c\20SkImage::CachingHint\29\20const 9547:SkImage_Lazy::onMakeSubset\28skgpu::graphite::Recorder*\2c\20SkIRect\20const&\2c\20SkImage::RequiredProperties\29\20const 9548:SkImage_Lazy::onMakeSubset\28GrDirectContext*\2c\20SkIRect\20const&\29\20const 9549:SkImage_Lazy::onMakeColorTypeAndColorSpace\28SkColorType\2c\20sk_sp\2c\20GrDirectContext*\29\20const 9550:SkImage_Lazy::onIsProtected\28\29\20const 9551:SkImage_Lazy::isValid\28GrRecordingContext*\29\20const 9552:SkImage_Lazy::getROPixels\28GrDirectContext*\2c\20SkBitmap*\2c\20SkImage::CachingHint\29\20const 9553:SkImage_GaneshBase::~SkImage_GaneshBase\28\29 9554:SkImage_GaneshBase::onReadPixels\28GrDirectContext*\2c\20SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20int\2c\20int\2c\20SkImage::CachingHint\29\20const 9555:SkImage_GaneshBase::onMakeSubset\28skgpu::graphite::Recorder*\2c\20SkIRect\20const&\2c\20SkImage::RequiredProperties\29\20const 9556:SkImage_GaneshBase::makeSubset\28GrDirectContext*\2c\20SkIRect\20const&\29\20const 9557:SkImage_GaneshBase::makeColorTypeAndColorSpace\28skgpu::graphite::Recorder*\2c\20SkColorType\2c\20sk_sp\2c\20SkImage::RequiredProperties\29\20const 9558:SkImage_GaneshBase::makeColorTypeAndColorSpace\28GrDirectContext*\2c\20SkColorType\2c\20sk_sp\29\20const 9559:SkImage_GaneshBase::isValid\28GrRecordingContext*\29\20const 9560:SkImage_GaneshBase::getROPixels\28GrDirectContext*\2c\20SkBitmap*\2c\20SkImage::CachingHint\29\20const 9561:SkImage_GaneshBase::directContext\28\29\20const 9562:SkImage_Ganesh::~SkImage_Ganesh\28\29.1 9563:SkImage_Ganesh::textureSize\28\29\20const 9564:SkImage_Ganesh::onReinterpretColorSpace\28sk_sp\29\20const 9565:SkImage_Ganesh::onMakeColorTypeAndColorSpace\28SkColorType\2c\20sk_sp\2c\20GrDirectContext*\29\20const 9566:SkImage_Ganesh::onIsProtected\28\29\20const 9567:SkImage_Ganesh::onHasMipmaps\28\29\20const 9568:SkImage_Ganesh::onAsyncRescaleAndReadPixels\28SkImageInfo\20const&\2c\20SkIRect\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29\20const 9569:SkImage_Ganesh::onAsyncRescaleAndReadPixelsYUV420\28SkYUVColorSpace\2c\20bool\2c\20sk_sp\2c\20SkIRect\2c\20SkISize\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29\20const 9570:SkImage_Ganesh::generatingSurfaceIsDeleted\28\29 9571:SkImage_Ganesh::flush\28GrDirectContext*\2c\20GrFlushInfo\20const&\29\20const 9572:SkImage_Ganesh::asView\28GrRecordingContext*\2c\20skgpu::Mipmapped\2c\20GrImageTexGenPolicy\29\20const 9573:SkImage_Ganesh::asFragmentProcessor\28GrRecordingContext*\2c\20SkSamplingOptions\2c\20SkTileMode\20const*\2c\20SkMatrix\20const&\2c\20SkRect\20const*\2c\20SkRect\20const*\29\20const 9574:SkImage_Base::onAsyncRescaleAndReadPixels\28SkImageInfo\20const&\2c\20SkIRect\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29\20const 9575:SkImage_Base::notifyAddedToRasterCache\28\29\20const 9576:SkImage_Base::makeSubset\28skgpu::graphite::Recorder*\2c\20SkIRect\20const&\2c\20SkImage::RequiredProperties\29\20const 9577:SkImage_Base::makeSubset\28GrDirectContext*\2c\20SkIRect\20const&\29\20const 9578:SkImage_Base::makeColorTypeAndColorSpace\28skgpu::graphite::Recorder*\2c\20SkColorType\2c\20sk_sp\2c\20SkImage::RequiredProperties\29\20const 9579:SkImage_Base::makeColorTypeAndColorSpace\28GrDirectContext*\2c\20SkColorType\2c\20sk_sp\29\20const 9580:SkImage_Base::makeColorSpace\28skgpu::graphite::Recorder*\2c\20sk_sp\2c\20SkImage::RequiredProperties\29\20const 9581:SkImage_Base::makeColorSpace\28GrDirectContext*\2c\20sk_sp\29\20const 9582:SkImage_Base::isTextureBacked\28\29\20const 9583:SkImage_Base::isLazyGenerated\28\29\20const 9584:SkImageShader::~SkImageShader\28\29.1 9585:SkImageShader::~SkImageShader\28\29 9586:SkImageShader::type\28\29\20const 9587:SkImageShader::onIsAImage\28SkMatrix*\2c\20SkTileMode*\29\20const 9588:SkImageShader::isOpaque\28\29\20const 9589:SkImageShader::getTypeName\28\29\20const 9590:SkImageShader::flatten\28SkWriteBuffer&\29\20const 9591:SkImageShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 9592:SkImageGenerator::~SkImageGenerator\28\29 9593:SkImageFilters::Compose\28sk_sp\2c\20sk_sp\29 9594:SkImage::~SkImage\28\29 9595:SkIcoDecoder::Decode\28std::__2::unique_ptr>\2c\20SkCodec::Result*\2c\20void*\29 9596:SkIcoCodec::~SkIcoCodec\28\29.1 9597:SkIcoCodec::~SkIcoCodec\28\29 9598:SkIcoCodec::onStartScanlineDecode\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\29 9599:SkIcoCodec::onStartIncrementalDecode\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\29 9600:SkIcoCodec::onSkipScanlines\28int\29 9601:SkIcoCodec::onIncrementalDecode\28int*\29 9602:SkIcoCodec::onGetScanlines\28void*\2c\20int\2c\20unsigned\20long\29 9603:SkIcoCodec::onGetScanlineOrder\28\29\20const 9604:SkIcoCodec::onGetScaledDimensions\28float\29\20const 9605:SkIcoCodec::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int*\29 9606:SkIcoCodec::onDimensionsSupported\28SkISize\20const&\29 9607:SkIcoCodec::getSampler\28bool\29 9608:SkIcoCodec::conversionSupported\28SkImageInfo\20const&\2c\20bool\2c\20bool\29 9609:SkGradientBaseShader::onAsLuminanceColor\28SkRGBA4f<\28SkAlphaType\293>*\29\20const 9610:SkGradientBaseShader::isOpaque\28\29\20const 9611:SkGradientBaseShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 9612:SkGifDecoder::Decode\28std::__2::unique_ptr>\2c\20SkCodec::Result*\2c\20void*\29 9613:SkGaussianColorFilter::getTypeName\28\29\20const 9614:SkGaussianColorFilter::appendStages\28SkStageRec\20const&\2c\20bool\29\20const 9615:SkGammaColorSpaceLuminance::toLuma\28float\2c\20float\29\20const 9616:SkGammaColorSpaceLuminance::fromLuma\28float\2c\20float\29\20const 9617:SkFontStyleSet_Custom::~SkFontStyleSet_Custom\28\29.1 9618:SkFontStyleSet_Custom::~SkFontStyleSet_Custom\28\29 9619:SkFontStyleSet_Custom::getStyle\28int\2c\20SkFontStyle*\2c\20SkString*\29 9620:SkFontScanner_FreeType::~SkFontScanner_FreeType\28\29.1 9621:SkFontScanner_FreeType::~SkFontScanner_FreeType\28\29 9622:SkFontScanner_FreeType::scanFile\28SkStreamAsset*\2c\20int*\29\20const 9623:SkFontScanner_FreeType::scanFace\28SkStreamAsset*\2c\20int\2c\20int*\29\20const 9624:SkFontMgr_Custom::~SkFontMgr_Custom\28\29.1 9625:SkFontMgr_Custom::~SkFontMgr_Custom\28\29 9626:SkFontMgr_Custom::onMatchFamily\28char\20const*\29\20const 9627:SkFontMgr_Custom::onMatchFamilyStyle\28char\20const*\2c\20SkFontStyle\20const&\29\20const 9628:SkFontMgr_Custom::onMakeFromStreamIndex\28std::__2::unique_ptr>\2c\20int\29\20const 9629:SkFontMgr_Custom::onMakeFromStreamArgs\28std::__2::unique_ptr>\2c\20SkFontArguments\20const&\29\20const 9630:SkFontMgr_Custom::onMakeFromFile\28char\20const*\2c\20int\29\20const 9631:SkFontMgr_Custom::onMakeFromData\28sk_sp\2c\20int\29\20const 9632:SkFontMgr_Custom::onLegacyMakeTypeface\28char\20const*\2c\20SkFontStyle\29\20const 9633:SkFontMgr_Custom::onGetFamilyName\28int\2c\20SkString*\29\20const 9634:SkFont::setScaleX\28float\29 9635:SkFont::setEmbeddedBitmaps\28bool\29 9636:SkFont::isEmbolden\28\29\20const 9637:SkFont::getSkewX\28\29\20const 9638:SkFont::getSize\28\29\20const 9639:SkFont::getScaleX\28\29\20const 9640:SkFont*\20emscripten::internal::operator_new\2c\20float\2c\20float\2c\20float>\28sk_sp&&\2c\20float&&\2c\20float&&\2c\20float&&\29 9641:SkFont*\20emscripten::internal::operator_new\2c\20float>\28sk_sp&&\2c\20float&&\29 9642:SkFont*\20emscripten::internal::operator_new>\28sk_sp&&\29 9643:SkFont*\20emscripten::internal::operator_new\28\29 9644:SkFILEStream::~SkFILEStream\28\29.1 9645:SkFILEStream::~SkFILEStream\28\29 9646:SkFILEStream::seek\28unsigned\20long\29 9647:SkFILEStream::rewind\28\29 9648:SkFILEStream::read\28void*\2c\20unsigned\20long\29 9649:SkFILEStream::onFork\28\29\20const 9650:SkFILEStream::onDuplicate\28\29\20const 9651:SkFILEStream::move\28long\29 9652:SkFILEStream::isAtEnd\28\29\20const 9653:SkFILEStream::getPosition\28\29\20const 9654:SkFILEStream::getLength\28\29\20const 9655:SkEncoder::~SkEncoder\28\29 9656:SkEmptyShader::getTypeName\28\29\20const 9657:SkEmptyPicture::~SkEmptyPicture\28\29 9658:SkEmptyPicture::cullRect\28\29\20const 9659:SkEmptyPicture::approximateBytesUsed\28\29\20const 9660:SkEmptyFontMgr::onMatchFamily\28char\20const*\29\20const 9661:SkEdgeBuilder::~SkEdgeBuilder\28\29 9662:SkEdgeBuilder::build\28SkPath\20const&\2c\20SkIRect\20const*\2c\20bool\29::$_0::__invoke\28SkEdgeClipper*\2c\20bool\2c\20void*\29 9663:SkDynamicMemoryWStream::~SkDynamicMemoryWStream\28\29.1 9664:SkDrawable::onMakePictureSnapshot\28\29 9665:SkDrawBase::~SkDrawBase\28\29 9666:SkDraw::paintMasks\28SkZip\2c\20SkPaint\20const&\29\20const 9667:SkDiscretePathEffectImpl::onFilterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29\20const 9668:SkDiscretePathEffectImpl::getTypeName\28\29\20const 9669:SkDiscretePathEffectImpl::getFactory\28\29\20const 9670:SkDiscretePathEffectImpl::computeFastBounds\28SkRect*\29\20const 9671:SkDiscretePathEffectImpl::CreateProc\28SkReadBuffer&\29 9672:SkDevice::~SkDevice\28\29 9673:SkDevice::strikeDeviceInfo\28\29\20const 9674:SkDevice::drawSlug\28SkCanvas*\2c\20sktext::gpu::Slug\20const*\2c\20SkPaint\20const&\29 9675:SkDevice::drawRegion\28SkRegion\20const&\2c\20SkPaint\20const&\29 9676:SkDevice::drawPatch\28SkPoint\20const*\2c\20unsigned\20int\20const*\2c\20SkPoint\20const*\2c\20sk_sp\2c\20SkPaint\20const&\29 9677:SkDevice::drawImageLattice\28SkImage\20const*\2c\20SkCanvas::Lattice\20const&\2c\20SkRect\20const&\2c\20SkFilterMode\2c\20SkPaint\20const&\29 9678:SkDevice::drawEdgeAAQuad\28SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkBlendMode\29 9679:SkDevice::drawEdgeAAImageSet\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 9680:SkDevice::drawDRRect\28SkRRect\20const&\2c\20SkRRect\20const&\2c\20SkPaint\20const&\29 9681:SkDevice::drawCoverageMask\28SkSpecialImage\20const*\2c\20SkMatrix\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\29 9682:SkDevice::drawAtlas\28SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20sk_sp\2c\20SkPaint\20const&\29 9683:SkDevice::drawAsTiledImageRect\28SkCanvas*\2c\20SkImage\20const*\2c\20SkRect\20const*\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 9684:SkDevice::createImageFilteringBackend\28SkSurfaceProps\20const&\2c\20SkColorType\29\20const 9685:SkDashImpl::~SkDashImpl\28\29.1 9686:SkDashImpl::~SkDashImpl\28\29 9687:SkDashImpl::onFilterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29\20const 9688:SkDashImpl::onAsPoints\28SkPathEffectBase::PointData*\2c\20SkPath\20const&\2c\20SkStrokeRec\20const&\2c\20SkMatrix\20const&\2c\20SkRect\20const*\29\20const 9689:SkDashImpl::onAsADash\28SkPathEffect::DashInfo*\29\20const 9690:SkDashImpl::getTypeName\28\29\20const 9691:SkDashImpl::flatten\28SkWriteBuffer&\29\20const 9692:SkCustomTypefaceBuilder::MakeFromStream\28std::__2::unique_ptr>\2c\20SkFontArguments\20const&\29 9693:SkCornerPathEffectImpl::onFilterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29\20const 9694:SkCornerPathEffectImpl::getTypeName\28\29\20const 9695:SkCornerPathEffectImpl::getFactory\28\29\20const 9696:SkCornerPathEffectImpl::flatten\28SkWriteBuffer&\29\20const 9697:SkCornerPathEffectImpl::CreateProc\28SkReadBuffer&\29 9698:SkCornerPathEffect::Make\28float\29 9699:SkContourMeasureIter*\20emscripten::internal::operator_new\28SkPath\20const&\2c\20bool&&\2c\20float&&\29 9700:SkContourMeasure::~SkContourMeasure\28\29.1 9701:SkContourMeasure::~SkContourMeasure\28\29 9702:SkContourMeasure::isClosed\28\29\20const 9703:SkConicalGradient::getTypeName\28\29\20const 9704:SkConicalGradient::flatten\28SkWriteBuffer&\29\20const 9705:SkConicalGradient::asGradient\28SkShaderBase::GradientInfo*\2c\20SkMatrix*\29\20const 9706:SkConicalGradient::appendGradientStages\28SkArenaAlloc*\2c\20SkRasterPipeline*\2c\20SkRasterPipeline*\29\20const 9707:SkComposePathEffect::~SkComposePathEffect\28\29 9708:SkComposePathEffect::onFilterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29\20const 9709:SkComposePathEffect::getTypeName\28\29\20const 9710:SkComposePathEffect::computeFastBounds\28SkRect*\29\20const 9711:SkComposeColorFilter::onIsAlphaUnchanged\28\29\20const 9712:SkComposeColorFilter::getTypeName\28\29\20const 9713:SkComposeColorFilter::appendStages\28SkStageRec\20const&\2c\20bool\29\20const 9714:SkColorSpaceXformColorFilter::~SkColorSpaceXformColorFilter\28\29.1 9715:SkColorSpaceXformColorFilter::~SkColorSpaceXformColorFilter\28\29 9716:SkColorSpaceXformColorFilter::getTypeName\28\29\20const 9717:SkColorSpaceXformColorFilter::flatten\28SkWriteBuffer&\29\20const 9718:SkColorSpaceXformColorFilter::appendStages\28SkStageRec\20const&\2c\20bool\29\20const 9719:SkColorShader::onAsLuminanceColor\28SkRGBA4f<\28SkAlphaType\293>*\29\20const 9720:SkColorShader::isOpaque\28\29\20const 9721:SkColorShader::getTypeName\28\29\20const 9722:SkColorShader::flatten\28SkWriteBuffer&\29\20const 9723:SkColorShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 9724:SkColorPalette::~SkColorPalette\28\29.1 9725:SkColorPalette::~SkColorPalette\28\29 9726:SkColorFilters::SRGBToLinearGamma\28\29 9727:SkColorFilters::LinearToSRGBGamma\28\29 9728:SkColorFilters::Lerp\28float\2c\20sk_sp\2c\20sk_sp\29 9729:SkColorFilters::Compose\28sk_sp\20const&\2c\20sk_sp\29 9730:SkColorFilterShader::~SkColorFilterShader\28\29.1 9731:SkColorFilterShader::~SkColorFilterShader\28\29 9732:SkColorFilterShader::isOpaque\28\29\20const 9733:SkColorFilterShader::getTypeName\28\29\20const 9734:SkColorFilterShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 9735:SkColorFilterBase::onFilterColor4f\28SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkColorSpace*\29\20const 9736:SkColor4Shader::~SkColor4Shader\28\29.1 9737:SkColor4Shader::~SkColor4Shader\28\29 9738:SkColor4Shader::onAsLuminanceColor\28SkRGBA4f<\28SkAlphaType\293>*\29\20const 9739:SkColor4Shader::isOpaque\28\29\20const 9740:SkColor4Shader::getTypeName\28\29\20const 9741:SkColor4Shader::flatten\28SkWriteBuffer&\29\20const 9742:SkColor4Shader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 9743:SkCodecImageGenerator::~SkCodecImageGenerator\28\29.1 9744:SkCodecImageGenerator::~SkCodecImageGenerator\28\29 9745:SkCodecImageGenerator::onRefEncodedData\28\29 9746:SkCodecImageGenerator::onQueryYUVAInfo\28SkYUVAPixmapInfo::SupportedDataTypes\20const&\2c\20SkYUVAPixmapInfo*\29\20const 9747:SkCodecImageGenerator::onGetYUVAPlanes\28SkYUVAPixmaps\20const&\29 9748:SkCodecImageGenerator::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkImageGenerator::Options\20const&\29 9749:SkCodec::onStartScanlineDecode\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\29 9750:SkCodec::onStartIncrementalDecode\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\29 9751:SkCodec::onOutputScanline\28int\29\20const 9752:SkCodec::onGetScaledDimensions\28float\29\20const 9753:SkCodec::getEncodedData\28\29\20const 9754:SkCodec::conversionSupported\28SkImageInfo\20const&\2c\20bool\2c\20bool\29 9755:SkCanvas::rotate\28float\2c\20float\2c\20float\29 9756:SkCanvas::recordingContext\28\29\20const 9757:SkCanvas::recorder\28\29\20const 9758:SkCanvas::onPeekPixels\28SkPixmap*\29 9759:SkCanvas::onNewSurface\28SkImageInfo\20const&\2c\20SkSurfaceProps\20const&\29 9760:SkCanvas::onImageInfo\28\29\20const 9761:SkCanvas::onGetProps\28SkSurfaceProps*\2c\20bool\29\20const 9762:SkCanvas::onDrawVerticesObject\28SkVertices\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 9763:SkCanvas::onDrawTextBlob\28SkTextBlob\20const*\2c\20float\2c\20float\2c\20SkPaint\20const&\29 9764:SkCanvas::onDrawSlug\28sktext::gpu::Slug\20const*\2c\20SkPaint\20const&\29 9765:SkCanvas::onDrawShadowRec\28SkPath\20const&\2c\20SkDrawShadowRec\20const&\29 9766:SkCanvas::onDrawRegion\28SkRegion\20const&\2c\20SkPaint\20const&\29 9767:SkCanvas::onDrawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 9768:SkCanvas::onDrawRRect\28SkRRect\20const&\2c\20SkPaint\20const&\29 9769:SkCanvas::onDrawPoints\28SkCanvas::PointMode\2c\20unsigned\20long\2c\20SkPoint\20const*\2c\20SkPaint\20const&\29 9770:SkCanvas::onDrawPicture\28SkPicture\20const*\2c\20SkMatrix\20const*\2c\20SkPaint\20const*\29 9771:SkCanvas::onDrawPath\28SkPath\20const&\2c\20SkPaint\20const&\29 9772:SkCanvas::onDrawPatch\28SkPoint\20const*\2c\20unsigned\20int\20const*\2c\20SkPoint\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 9773:SkCanvas::onDrawPaint\28SkPaint\20const&\29 9774:SkCanvas::onDrawOval\28SkRect\20const&\2c\20SkPaint\20const&\29 9775:SkCanvas::onDrawMesh\28SkMesh\20const&\2c\20sk_sp\2c\20SkPaint\20const&\29 9776:SkCanvas::onDrawImageRect2\28SkImage\20const*\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 9777:SkCanvas::onDrawImageLattice2\28SkImage\20const*\2c\20SkCanvas::Lattice\20const&\2c\20SkRect\20const&\2c\20SkFilterMode\2c\20SkPaint\20const*\29 9778:SkCanvas::onDrawImage2\28SkImage\20const*\2c\20float\2c\20float\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\29 9779:SkCanvas::onDrawGlyphRunList\28sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\29 9780:SkCanvas::onDrawEdgeAAQuad\28SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkBlendMode\29 9781:SkCanvas::onDrawEdgeAAImageSet2\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 9782:SkCanvas::onDrawDrawable\28SkDrawable*\2c\20SkMatrix\20const*\29 9783:SkCanvas::onDrawDRRect\28SkRRect\20const&\2c\20SkRRect\20const&\2c\20SkPaint\20const&\29 9784:SkCanvas::onDrawBehind\28SkPaint\20const&\29 9785:SkCanvas::onDrawAtlas2\28SkImage\20const*\2c\20SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20SkBlendMode\2c\20SkSamplingOptions\20const&\2c\20SkRect\20const*\2c\20SkPaint\20const*\29 9786:SkCanvas::onDrawArc\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 9787:SkCanvas::onDrawAnnotation\28SkRect\20const&\2c\20char\20const*\2c\20SkData*\29 9788:SkCanvas::onDiscard\28\29 9789:SkCanvas::onConvertGlyphRunListToSlug\28sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\29 9790:SkCanvas::onAccessTopLayerPixels\28SkPixmap*\29 9791:SkCanvas::isClipRect\28\29\20const 9792:SkCanvas::isClipEmpty\28\29\20const 9793:SkCanvas::getSaveCount\28\29\20const 9794:SkCanvas::getBaseLayerSize\28\29\20const 9795:SkCanvas::drawTextBlob\28sk_sp\20const&\2c\20float\2c\20float\2c\20SkPaint\20const&\29 9796:SkCanvas::drawPicture\28sk_sp\20const&\29 9797:SkCanvas::drawCircle\28float\2c\20float\2c\20float\2c\20SkPaint\20const&\29 9798:SkCanvas*\20emscripten::internal::operator_new\28float&&\2c\20float&&\29 9799:SkCanvas*\20emscripten::internal::operator_new\28\29 9800:SkCachedData::~SkCachedData\28\29.1 9801:SkCTMShader::~SkCTMShader\28\29 9802:SkCTMShader::isConstant\28\29\20const 9803:SkCTMShader::getTypeName\28\29\20const 9804:SkCTMShader::asGradient\28SkShaderBase::GradientInfo*\2c\20SkMatrix*\29\20const 9805:SkCTMShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 9806:SkBreakIterator_client::~SkBreakIterator_client\28\29.1 9807:SkBreakIterator_client::~SkBreakIterator_client\28\29 9808:SkBreakIterator_client::status\28\29 9809:SkBreakIterator_client::setText\28char\20const*\2c\20int\29 9810:SkBreakIterator_client::setText\28char16_t\20const*\2c\20int\29 9811:SkBreakIterator_client::next\28\29 9812:SkBreakIterator_client::isDone\28\29 9813:SkBreakIterator_client::first\28\29 9814:SkBreakIterator_client::current\28\29 9815:SkBmpStandardCodec::~SkBmpStandardCodec\28\29.1 9816:SkBmpStandardCodec::~SkBmpStandardCodec\28\29 9817:SkBmpStandardCodec::onPrepareToDecode\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\29 9818:SkBmpStandardCodec::onInIco\28\29\20const 9819:SkBmpStandardCodec::getSampler\28bool\29 9820:SkBmpStandardCodec::decodeRows\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\29 9821:SkBmpRLESampler::onSetSampleX\28int\29 9822:SkBmpRLESampler::fillWidth\28\29\20const 9823:SkBmpRLECodec::~SkBmpRLECodec\28\29.1 9824:SkBmpRLECodec::~SkBmpRLECodec\28\29 9825:SkBmpRLECodec::skipRows\28int\29 9826:SkBmpRLECodec::onPrepareToDecode\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\29 9827:SkBmpRLECodec::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\2c\20int*\29 9828:SkBmpRLECodec::getSampler\28bool\29 9829:SkBmpRLECodec::decodeRows\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\29 9830:SkBmpMaskCodec::~SkBmpMaskCodec\28\29.1 9831:SkBmpMaskCodec::~SkBmpMaskCodec\28\29 9832:SkBmpMaskCodec::onPrepareToDecode\28SkImageInfo\20const&\2c\20SkCodec::Options\20const&\29 9833:SkBmpMaskCodec::getSampler\28bool\29 9834:SkBmpMaskCodec::decodeRows\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkCodec::Options\20const&\29 9835:SkBmpDecoder::Decode\28std::__2::unique_ptr>\2c\20SkCodec::Result*\2c\20void*\29 9836:SkBmpCodec::~SkBmpCodec\28\29 9837:SkBmpCodec::skipRows\28int\29 9838:SkBmpCodec::onSkipScanlines\28int\29 9839:SkBmpCodec::onRewind\28\29 9840:SkBmpCodec::onGetScanlines\28void*\2c\20int\2c\20unsigned\20long\29 9841:SkBmpCodec::onGetScanlineOrder\28\29\20const 9842:SkBlurMaskFilterImpl::getTypeName\28\29\20const 9843:SkBlurMaskFilterImpl::flatten\28SkWriteBuffer&\29\20const 9844:SkBlurMaskFilterImpl::filterRectsToNine\28SkRect\20const*\2c\20int\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20SkTLazy*\29\20const 9845:SkBlurMaskFilterImpl::filterRRectToNine\28SkRRect\20const&\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20SkTLazy*\29\20const 9846:SkBlurMaskFilterImpl::filterMask\28SkMaskBuilder*\2c\20SkMask\20const&\2c\20SkMatrix\20const&\2c\20SkIPoint*\29\20const 9847:SkBlurMaskFilterImpl::computeFastBounds\28SkRect\20const&\2c\20SkRect*\29\20const 9848:SkBlurMaskFilterImpl::asImageFilter\28SkMatrix\20const&\29\20const 9849:SkBlurMaskFilterImpl::asABlur\28SkMaskFilterBase::BlurRec*\29\20const 9850:SkBlockMemoryStream::~SkBlockMemoryStream\28\29.1 9851:SkBlockMemoryStream::~SkBlockMemoryStream\28\29 9852:SkBlockMemoryStream::seek\28unsigned\20long\29 9853:SkBlockMemoryStream::rewind\28\29 9854:SkBlockMemoryStream::read\28void*\2c\20unsigned\20long\29 9855:SkBlockMemoryStream::peek\28void*\2c\20unsigned\20long\29\20const 9856:SkBlockMemoryStream::onFork\28\29\20const 9857:SkBlockMemoryStream::onDuplicate\28\29\20const 9858:SkBlockMemoryStream::move\28long\29 9859:SkBlockMemoryStream::isAtEnd\28\29\20const 9860:SkBlockMemoryStream::getMemoryBase\28\29 9861:SkBlockMemoryRefCnt::~SkBlockMemoryRefCnt\28\29.1 9862:SkBlockMemoryRefCnt::~SkBlockMemoryRefCnt\28\29 9863:SkBlitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 9864:SkBlitter::blitAntiV2\28int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 9865:SkBlitter::blitAntiRect\28int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\29 9866:SkBlitter::blitAntiH2\28int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 9867:SkBlitter::allocBlitMemory\28unsigned\20long\29 9868:SkBlenderBase::asBlendMode\28\29\20const 9869:SkBlendShader::getTypeName\28\29\20const 9870:SkBlendShader::flatten\28SkWriteBuffer&\29\20const 9871:SkBlendShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 9872:SkBlendModeColorFilter::onIsAlphaUnchanged\28\29\20const 9873:SkBlendModeColorFilter::onAsAColorMode\28unsigned\20int*\2c\20SkBlendMode*\29\20const 9874:SkBlendModeColorFilter::getTypeName\28\29\20const 9875:SkBlendModeColorFilter::flatten\28SkWriteBuffer&\29\20const 9876:SkBlendModeColorFilter::appendStages\28SkStageRec\20const&\2c\20bool\29\20const 9877:SkBlendModeBlender::onAppendStages\28SkStageRec\20const&\29\20const 9878:SkBlendModeBlender::getTypeName\28\29\20const 9879:SkBlendModeBlender::flatten\28SkWriteBuffer&\29\20const 9880:SkBlendModeBlender::asBlendMode\28\29\20const 9881:SkBitmapDevice::~SkBitmapDevice\28\29.1 9882:SkBitmapDevice::~SkBitmapDevice\28\29 9883:SkBitmapDevice::snapSpecial\28SkIRect\20const&\2c\20bool\29 9884:SkBitmapDevice::setImmutable\28\29 9885:SkBitmapDevice::replaceClip\28SkIRect\20const&\29 9886:SkBitmapDevice::pushClipStack\28\29 9887:SkBitmapDevice::popClipStack\28\29 9888:SkBitmapDevice::onWritePixels\28SkPixmap\20const&\2c\20int\2c\20int\29 9889:SkBitmapDevice::onReadPixels\28SkPixmap\20const&\2c\20int\2c\20int\29 9890:SkBitmapDevice::onPeekPixels\28SkPixmap*\29 9891:SkBitmapDevice::onDrawGlyphRunList\28SkCanvas*\2c\20sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\29 9892:SkBitmapDevice::onClipShader\28sk_sp\29 9893:SkBitmapDevice::onAccessPixels\28SkPixmap*\29 9894:SkBitmapDevice::makeSurface\28SkImageInfo\20const&\2c\20SkSurfaceProps\20const&\29 9895:SkBitmapDevice::makeSpecial\28SkImage\20const*\29 9896:SkBitmapDevice::makeSpecial\28SkBitmap\20const&\29 9897:SkBitmapDevice::isClipWideOpen\28\29\20const 9898:SkBitmapDevice::isClipRect\28\29\20const 9899:SkBitmapDevice::isClipEmpty\28\29\20const 9900:SkBitmapDevice::isClipAntiAliased\28\29\20const 9901:SkBitmapDevice::getRasterHandle\28\29\20const 9902:SkBitmapDevice::drawVertices\28SkVertices\20const*\2c\20sk_sp\2c\20SkPaint\20const&\2c\20bool\29 9903:SkBitmapDevice::drawSpecial\28SkSpecialImage*\2c\20SkMatrix\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 9904:SkBitmapDevice::drawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 9905:SkBitmapDevice::drawRRect\28SkRRect\20const&\2c\20SkPaint\20const&\29 9906:SkBitmapDevice::drawPoints\28SkCanvas::PointMode\2c\20unsigned\20long\2c\20SkPoint\20const*\2c\20SkPaint\20const&\29 9907:SkBitmapDevice::drawPath\28SkPath\20const&\2c\20SkPaint\20const&\2c\20bool\29 9908:SkBitmapDevice::drawPaint\28SkPaint\20const&\29 9909:SkBitmapDevice::drawOval\28SkRect\20const&\2c\20SkPaint\20const&\29 9910:SkBitmapDevice::drawImageRect\28SkImage\20const*\2c\20SkRect\20const*\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 9911:SkBitmapDevice::drawAtlas\28SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20sk_sp\2c\20SkPaint\20const&\29 9912:SkBitmapDevice::devClipBounds\28\29\20const 9913:SkBitmapDevice::createDevice\28SkDevice::CreateInfo\20const&\2c\20SkPaint\20const*\29 9914:SkBitmapDevice::clipRegion\28SkRegion\20const&\2c\20SkClipOp\29 9915:SkBitmapDevice::clipRect\28SkRect\20const&\2c\20SkClipOp\2c\20bool\29 9916:SkBitmapDevice::clipRRect\28SkRRect\20const&\2c\20SkClipOp\2c\20bool\29 9917:SkBitmapDevice::clipPath\28SkPath\20const&\2c\20SkClipOp\2c\20bool\29 9918:SkBitmapDevice::android_utils_clipAsRgn\28SkRegion*\29\20const 9919:SkBitmapCache::Rec::~Rec\28\29.1 9920:SkBitmapCache::Rec::~Rec\28\29 9921:SkBitmapCache::Rec::postAddInstall\28void*\29 9922:SkBitmapCache::Rec::getCategory\28\29\20const 9923:SkBitmapCache::Rec::canBePurged\28\29 9924:SkBitmapCache::Rec::bytesUsed\28\29\20const 9925:SkBitmapCache::Rec::ReleaseProc\28void*\2c\20void*\29 9926:SkBitmapCache::Rec::Finder\28SkResourceCache::Rec\20const&\2c\20void*\29 9927:SkBinaryWriteBuffer::~SkBinaryWriteBuffer\28\29.1 9928:SkBinaryWriteBuffer::write\28SkM44\20const&\29 9929:SkBinaryWriteBuffer::writeTypeface\28SkTypeface*\29 9930:SkBinaryWriteBuffer::writeString\28std::__2::basic_string_view>\29 9931:SkBinaryWriteBuffer::writeStream\28SkStream*\2c\20unsigned\20long\29 9932:SkBinaryWriteBuffer::writeScalar\28float\29 9933:SkBinaryWriteBuffer::writeSampling\28SkSamplingOptions\20const&\29 9934:SkBinaryWriteBuffer::writeRegion\28SkRegion\20const&\29 9935:SkBinaryWriteBuffer::writeRect\28SkRect\20const&\29 9936:SkBinaryWriteBuffer::writePoint\28SkPoint\20const&\29 9937:SkBinaryWriteBuffer::writePointArray\28SkPoint\20const*\2c\20unsigned\20int\29 9938:SkBinaryWriteBuffer::writePoint3\28SkPoint3\20const&\29 9939:SkBinaryWriteBuffer::writePath\28SkPath\20const&\29 9940:SkBinaryWriteBuffer::writePaint\28SkPaint\20const&\29 9941:SkBinaryWriteBuffer::writePad32\28void\20const*\2c\20unsigned\20long\29 9942:SkBinaryWriteBuffer::writeMatrix\28SkMatrix\20const&\29 9943:SkBinaryWriteBuffer::writeImage\28SkImage\20const*\29 9944:SkBinaryWriteBuffer::writeColor4fArray\28SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20unsigned\20int\29 9945:SkBigPicture::~SkBigPicture\28\29.1 9946:SkBigPicture::~SkBigPicture\28\29 9947:SkBigPicture::playback\28SkCanvas*\2c\20SkPicture::AbortCallback*\29\20const 9948:SkBigPicture::cullRect\28\29\20const 9949:SkBigPicture::approximateOpCount\28bool\29\20const 9950:SkBigPicture::approximateBytesUsed\28\29\20const 9951:SkBidiSubsetFactory::errorName\28UErrorCode\29\20const 9952:SkBidiSubsetFactory::bidi_setPara\28UBiDi*\2c\20char16_t\20const*\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char*\2c\20UErrorCode*\29\20const 9953:SkBidiSubsetFactory::bidi_reorderVisual\28unsigned\20char\20const*\2c\20int\2c\20int*\29\20const 9954:SkBidiSubsetFactory::bidi_openSized\28int\2c\20int\2c\20UErrorCode*\29\20const 9955:SkBidiSubsetFactory::bidi_getLevelAt\28UBiDi\20const*\2c\20int\29\20const 9956:SkBidiSubsetFactory::bidi_getLength\28UBiDi\20const*\29\20const 9957:SkBidiSubsetFactory::bidi_getDirection\28UBiDi\20const*\29\20const 9958:SkBidiSubsetFactory::bidi_close_callback\28\29\20const 9959:SkBezierCubic::Subdivide\28double\20const*\2c\20double\2c\20double*\29 9960:SkBasicEdgeBuilder::recoverClip\28SkIRect\20const&\29\20const 9961:SkBasicEdgeBuilder::allocEdges\28unsigned\20long\2c\20unsigned\20long*\29 9962:SkBasicEdgeBuilder::addQuad\28SkPoint\20const*\29 9963:SkBasicEdgeBuilder::addPolyLine\28SkPoint\20const*\2c\20char*\2c\20char**\29 9964:SkBasicEdgeBuilder::addLine\28SkPoint\20const*\29 9965:SkBasicEdgeBuilder::addCubic\28SkPoint\20const*\29 9966:SkBaseShadowTessellator::~SkBaseShadowTessellator\28\29 9967:SkBBoxHierarchy::insert\28SkRect\20const*\2c\20SkBBoxHierarchy::Metadata\20const*\2c\20int\29 9968:SkArenaAlloc::SkipPod\28char*\29 9969:SkArenaAlloc::NextBlock\28char*\29 9970:SkAnimatedImage::~SkAnimatedImage\28\29.1 9971:SkAnimatedImage::~SkAnimatedImage\28\29 9972:SkAnimatedImage::reset\28\29 9973:SkAnimatedImage::onGetBounds\28\29 9974:SkAnimatedImage::onDraw\28SkCanvas*\29 9975:SkAnimatedImage::getRepetitionCount\28\29\20const 9976:SkAnimatedImage::getCurrentFrame\28\29 9977:SkAnimatedImage::currentFrameDuration\28\29 9978:SkAndroidCodecAdapter::onGetSupportedSubset\28SkIRect*\29\20const 9979:SkAndroidCodecAdapter::onGetSampledDimensions\28int\29\20const 9980:SkAndroidCodecAdapter::onGetAndroidPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkAndroidCodec::AndroidOptions\20const&\29 9981:SkAnalyticEdgeBuilder::recoverClip\28SkIRect\20const&\29\20const 9982:SkAnalyticEdgeBuilder::allocEdges\28unsigned\20long\2c\20unsigned\20long*\29 9983:SkAnalyticEdgeBuilder::addQuad\28SkPoint\20const*\29 9984:SkAnalyticEdgeBuilder::addPolyLine\28SkPoint\20const*\2c\20char*\2c\20char**\29 9985:SkAnalyticEdgeBuilder::addLine\28SkPoint\20const*\29 9986:SkAnalyticEdgeBuilder::addCubic\28SkPoint\20const*\29 9987:SkAAClipBlitter::~SkAAClipBlitter\28\29.1 9988:SkAAClipBlitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 9989:SkAAClipBlitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 9990:SkAAClipBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 9991:SkAAClipBlitter::blitH\28int\2c\20int\2c\20int\29 9992:SkAAClipBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 9993:SkAAClip::Builder::operateY\28SkAAClip\20const&\2c\20SkAAClip\20const&\2c\20SkClipOp\29::$_1::__invoke\28unsigned\20int\2c\20unsigned\20int\29 9994:SkAAClip::Builder::operateY\28SkAAClip\20const&\2c\20SkAAClip\20const&\2c\20SkClipOp\29::$_0::__invoke\28unsigned\20int\2c\20unsigned\20int\29 9995:SkAAClip::Builder::Blitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 9996:SkAAClip::Builder::Blitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 9997:SkAAClip::Builder::Blitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 9998:SkAAClip::Builder::Blitter::blitH\28int\2c\20int\2c\20int\29 9999:SkAAClip::Builder::Blitter::blitAntiRect\28int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\29 10000:SkA8_Coverage_Blitter::~SkA8_Coverage_Blitter\28\29.1 10001:SkA8_Coverage_Blitter::~SkA8_Coverage_Blitter\28\29 10002:SkA8_Coverage_Blitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 10003:SkA8_Coverage_Blitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 10004:SkA8_Coverage_Blitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 10005:SkA8_Coverage_Blitter::blitH\28int\2c\20int\2c\20int\29 10006:SkA8_Coverage_Blitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 10007:SkA8_Blitter::~SkA8_Blitter\28\29.1 10008:SkA8_Blitter::~SkA8_Blitter\28\29 10009:SkA8_Blitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 10010:SkA8_Blitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 10011:SkA8_Blitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 10012:SkA8_Blitter::blitH\28int\2c\20int\2c\20int\29 10013:SkA8_Blitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 10014:SkA8Blitter_Choose\28SkPixmap\20const&\2c\20SkMatrix\20const&\2c\20SkPaint\20const&\2c\20SkArenaAlloc*\2c\20bool\2c\20sk_sp\2c\20SkSurfaceProps\20const&\29 10015:Sk2DPathEffect::nextSpan\28int\2c\20int\2c\20int\2c\20SkPath*\29\20const 10016:Sk2DPathEffect::flatten\28SkWriteBuffer&\29\20const 10017:SimpleVFilter16i_C 10018:SimpleVFilter16_C 10019:SimpleTextStyle*\20emscripten::internal::raw_constructor\28\29 10020:SimpleTextStyle*\20emscripten::internal::MemberAccess::getWire\28SimpleTextStyle\20SimpleParagraphStyle::*\20const&\2c\20SimpleParagraphStyle\20const&\29 10021:SimpleStrutStyle*\20emscripten::internal::raw_constructor\28\29 10022:SimpleStrutStyle*\20emscripten::internal::MemberAccess::getWire\28SimpleStrutStyle\20SimpleParagraphStyle::*\20const&\2c\20SimpleParagraphStyle\20const&\29 10023:SimpleParagraphStyle*\20emscripten::internal::raw_constructor\28\29 10024:SimpleHFilter16i_C 10025:SimpleHFilter16_C 10026:SimpleFontStyle*\20emscripten::internal::raw_constructor\28\29 10027:ShaderPDXferProcessor::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10028:ShaderPDXferProcessor::name\28\29\20const 10029:ShaderPDXferProcessor::makeProgramImpl\28\29\20const 10030:SafeRLEAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\29 10031:SafeRLEAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20int\29 10032:SafeRLEAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 10033:RuntimeEffectUniform*\20emscripten::internal::raw_constructor\28\29 10034:RuntimeEffectRPCallbacks::toLinearSrgb\28void\20const*\29 10035:RuntimeEffectRPCallbacks::fromLinearSrgb\28void\20const*\29 10036:RuntimeEffectRPCallbacks::appendShader\28int\29 10037:RuntimeEffectRPCallbacks::appendColorFilter\28int\29 10038:RuntimeEffectRPCallbacks::appendBlender\28int\29 10039:RunBasedAdditiveBlitter::~RunBasedAdditiveBlitter\28\29 10040:RunBasedAdditiveBlitter::getRealBlitter\28bool\29 10041:RunBasedAdditiveBlitter::flush_if_y_changed\28int\2c\20int\29 10042:RunBasedAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\29 10043:RunBasedAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20int\29 10044:RunBasedAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 10045:Round_Up_To_Grid 10046:Round_To_Half_Grid 10047:Round_To_Grid 10048:Round_To_Double_Grid 10049:Round_Super_45 10050:Round_Super 10051:Round_None 10052:Round_Down_To_Grid 10053:RoundJoiner\28SkPath*\2c\20SkPath*\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20float\2c\20bool\2c\20bool\29 10054:RoundCapper\28SkPath*\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPath*\29 10055:Reset 10056:Read_CVT_Stretched 10057:Read_CVT 10058:RD4_C 10059:Project_y 10060:Project 10061:ProcessRows 10062:PredictorAdd9_C 10063:PredictorAdd8_C 10064:PredictorAdd7_C 10065:PredictorAdd6_C 10066:PredictorAdd5_C 10067:PredictorAdd4_C 10068:PredictorAdd3_C 10069:PredictorAdd2_C 10070:PredictorAdd1_C 10071:PredictorAdd13_C 10072:PredictorAdd12_C 10073:PredictorAdd11_C 10074:PredictorAdd10_C 10075:PredictorAdd0_C 10076:PrePostInverseBlitterProc\28SkBlitter*\2c\20int\2c\20bool\29 10077:PorterDuffXferProcessor::onHasSecondaryOutput\28\29\20const 10078:PorterDuffXferProcessor::onGetBlendInfo\28skgpu::BlendInfo*\29\20const 10079:PorterDuffXferProcessor::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10080:PorterDuffXferProcessor::name\28\29\20const 10081:PorterDuffXferProcessor::makeProgramImpl\28\29\20const::Impl::emitOutputsForBlendState\28GrXferProcessor::ProgramImpl::EmitArgs\20const&\29 10082:PorterDuffXferProcessor::makeProgramImpl\28\29\20const 10083:ParseVP8X 10084:PackRGB_C 10085:PDLCDXferProcessor::onIsEqual\28GrXferProcessor\20const&\29\20const 10086:PDLCDXferProcessor::onGetBlendInfo\28skgpu::BlendInfo*\29\20const 10087:PDLCDXferProcessor::name\28\29\20const 10088:PDLCDXferProcessor::makeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrXferProcessor\20const&\29 10089:PDLCDXferProcessor::makeProgramImpl\28\29\20const::Impl::emitOutputsForBlendState\28GrXferProcessor::ProgramImpl::EmitArgs\20const&\29 10090:PDLCDXferProcessor::makeProgramImpl\28\29\20const 10091:OT::match_glyph\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29 10092:OT::match_coverage\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29 10093:OT::match_class_cached\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29 10094:OT::match_class_cached2\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29 10095:OT::match_class_cached1\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29 10096:OT::match_class\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29 10097:OT::hb_ot_apply_context_t::return_t\20OT::Layout::GSUB_impl::SubstLookup::dispatch_recurse_func\28OT::hb_ot_apply_context_t*\2c\20unsigned\20int\29 10098:OT::hb_ot_apply_context_t::return_t\20OT::Layout::GPOS_impl::PosLookup::dispatch_recurse_func\28OT::hb_ot_apply_context_t*\2c\20unsigned\20int\29 10099:OT::cff1::accelerator_t::gname_t::cmp\28void\20const*\2c\20void\20const*\29 10100:OT::Layout::Common::RangeRecord::cmp_range\28void\20const*\2c\20void\20const*\29 10101:OT::ColorLine::static_get_color_stops\28hb_color_line_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20hb_color_stop_t*\2c\20void*\29 10102:OT::ColorLine::static_get_color_stops\28hb_color_line_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20hb_color_stop_t*\2c\20void*\29 10103:OT::CmapSubtableFormat4::accelerator_t::get_glyph_func\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\29 10104:Move_CVT_Stretched 10105:Move_CVT 10106:MiterJoiner\28SkPath*\2c\20SkPath*\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20float\2c\20bool\2c\20bool\29 10107:MaskAdditiveBlitter::~MaskAdditiveBlitter\28\29.1 10108:MaskAdditiveBlitter::~MaskAdditiveBlitter\28\29 10109:MaskAdditiveBlitter::getWidth\28\29 10110:MaskAdditiveBlitter::getRealBlitter\28bool\29 10111:MaskAdditiveBlitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 10112:MaskAdditiveBlitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 10113:MaskAdditiveBlitter::blitAntiRect\28int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\29 10114:MaskAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\29 10115:MaskAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20int\29 10116:MaskAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 10117:MapAlpha_C 10118:MapARGB_C 10119:MakeRenderTarget\28sk_sp\2c\20int\2c\20int\29 10120:MakeRenderTarget\28sk_sp\2c\20SimpleImageInfo\29 10121:MakePathFromVerbsPointsWeights\28unsigned\20long\2c\20int\2c\20unsigned\20long\2c\20int\2c\20unsigned\20long\2c\20int\29 10122:MakePathFromSVGString\28std::__2::basic_string\2c\20std::__2::allocator>\29 10123:MakePathFromOp\28SkPath\20const&\2c\20SkPath\20const&\2c\20SkPathOp\29 10124:MakePathFromInterpolation\28SkPath\20const&\2c\20SkPath\20const&\2c\20float\29 10125:MakePathFromCmds\28unsigned\20long\2c\20int\29 10126:MakeOnScreenGLSurface\28sk_sp\2c\20int\2c\20int\2c\20sk_sp\29 10127:MakeImageFromGenerator\28SimpleImageInfo\2c\20emscripten::val\29 10128:MakeGrContext\28\29 10129:MakeAsWinding\28SkPath\20const&\29 10130:LD4_C 10131:JpegDecoderMgr::returnFailure\28char\20const*\2c\20SkCodec::Result\29 10132:JpegDecoderMgr::init\28\29 10133:JpegDecoderMgr::SourceMgr::SkipInputData\28jpeg_decompress_struct*\2c\20long\29 10134:JpegDecoderMgr::SourceMgr::InitSource\28jpeg_decompress_struct*\29 10135:JpegDecoderMgr::SourceMgr::FillInputBuffer\28jpeg_decompress_struct*\29 10136:JpegDecoderMgr::JpegDecoderMgr\28SkStream*\29 10137:IsValidSimpleFormat 10138:IsValidExtendedFormat 10139:InverseBlitter::blitH\28int\2c\20int\2c\20int\29 10140:Init 10141:HorizontalUnfilter_C 10142:HorizontalFilter_C 10143:Horish_SkAntiHairBlitter::drawLine\28int\2c\20int\2c\20int\2c\20int\29 10144:Horish_SkAntiHairBlitter::drawCap\28int\2c\20int\2c\20int\2c\20int\29 10145:HasAlpha8b_C 10146:HasAlpha32b_C 10147:HU4_C 10148:HLine_SkAntiHairBlitter::drawLine\28int\2c\20int\2c\20int\2c\20int\29 10149:HLine_SkAntiHairBlitter::drawCap\28int\2c\20int\2c\20int\2c\20int\29 10150:HFilter8i_C 10151:HFilter8_C 10152:HFilter16i_C 10153:HFilter16_C 10154:HE8uv_C 10155:HE4_C 10156:HE16_C 10157:HD4_C 10158:GradientUnfilter_C 10159:GradientFilter_C 10160:GrYUVtoRGBEffect::onMakeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 10161:GrYUVtoRGBEffect::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 10162:GrYUVtoRGBEffect::onMakeProgramImpl\28\29\20const 10163:GrYUVtoRGBEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 10164:GrYUVtoRGBEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10165:GrYUVtoRGBEffect::name\28\29\20const 10166:GrYUVtoRGBEffect::clone\28\29\20const 10167:GrXferProcessor::ProgramImpl::emitWriteSwizzle\28GrGLSLXPFragmentBuilder*\2c\20skgpu::Swizzle\20const&\2c\20char\20const*\2c\20char\20const*\29\20const 10168:GrXferProcessor::ProgramImpl::emitOutputsForBlendState\28GrXferProcessor::ProgramImpl::EmitArgs\20const&\29 10169:GrXferProcessor::ProgramImpl::emitBlendCodeForDstRead\28GrGLSLXPFragmentBuilder*\2c\20GrGLSLUniformHandler*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20GrXferProcessor\20const&\29 10170:GrWritePixelsTask::~GrWritePixelsTask\28\29.1 10171:GrWritePixelsTask::onMakeClosed\28GrRecordingContext*\2c\20SkIRect*\29 10172:GrWritePixelsTask::onExecute\28GrOpFlushState*\29 10173:GrWritePixelsTask::gatherProxyIntervals\28GrResourceAllocator*\29\20const 10174:GrWaitRenderTask::~GrWaitRenderTask\28\29.1 10175:GrWaitRenderTask::onIsUsed\28GrSurfaceProxy*\29\20const 10176:GrWaitRenderTask::onExecute\28GrOpFlushState*\29 10177:GrWaitRenderTask::gatherProxyIntervals\28GrResourceAllocator*\29\20const 10178:GrTriangulator::~GrTriangulator\28\29 10179:GrTransferFromRenderTask::~GrTransferFromRenderTask\28\29.1 10180:GrTransferFromRenderTask::onExecute\28GrOpFlushState*\29 10181:GrTransferFromRenderTask::gatherProxyIntervals\28GrResourceAllocator*\29\20const 10182:GrThreadSafeCache::Trampoline::~Trampoline\28\29.1 10183:GrThreadSafeCache::Trampoline::~Trampoline\28\29 10184:GrTextureResolveRenderTask::~GrTextureResolveRenderTask\28\29.1 10185:GrTextureResolveRenderTask::onExecute\28GrOpFlushState*\29 10186:GrTextureResolveRenderTask::gatherProxyIntervals\28GrResourceAllocator*\29\20const 10187:GrTextureRenderTargetProxy::~GrTextureRenderTargetProxy\28\29.1 10188:GrTextureRenderTargetProxy::~GrTextureRenderTargetProxy\28\29 10189:GrTextureRenderTargetProxy::onUninstantiatedGpuMemorySize\28\29\20const 10190:GrTextureRenderTargetProxy::instantiate\28GrResourceProvider*\29 10191:GrTextureRenderTargetProxy::createSurface\28GrResourceProvider*\29\20const 10192:GrTextureProxy::~GrTextureProxy\28\29.2 10193:GrTextureProxy::~GrTextureProxy\28\29.1 10194:GrTextureProxy::onUninstantiatedGpuMemorySize\28\29\20const 10195:GrTextureProxy::instantiate\28GrResourceProvider*\29 10196:GrTextureProxy::createSurface\28GrResourceProvider*\29\20const 10197:GrTextureProxy::callbackDesc\28\29\20const 10198:GrTextureEffect::~GrTextureEffect\28\29.1 10199:GrTextureEffect::~GrTextureEffect\28\29 10200:GrTextureEffect::onMakeProgramImpl\28\29\20const 10201:GrTextureEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 10202:GrTextureEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10203:GrTextureEffect::name\28\29\20const 10204:GrTextureEffect::clone\28\29\20const 10205:GrTextureEffect::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 10206:GrTextureEffect::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 10207:GrTexture::onGpuMemorySize\28\29\20const 10208:GrTDeferredProxyUploader>::~GrTDeferredProxyUploader\28\29.1 10209:GrTDeferredProxyUploader>::freeData\28\29 10210:GrTDeferredProxyUploader<\28anonymous\20namespace\29::SoftwarePathData>::~GrTDeferredProxyUploader\28\29.1 10211:GrTDeferredProxyUploader<\28anonymous\20namespace\29::SoftwarePathData>::~GrTDeferredProxyUploader\28\29 10212:GrTDeferredProxyUploader<\28anonymous\20namespace\29::SoftwarePathData>::freeData\28\29 10213:GrSurfaceProxy::getUniqueKey\28\29\20const 10214:GrSurface::~GrSurface\28\29 10215:GrSurface::getResourceType\28\29\20const 10216:GrStrokeTessellationShader::~GrStrokeTessellationShader\28\29.1 10217:GrStrokeTessellationShader::~GrStrokeTessellationShader\28\29 10218:GrStrokeTessellationShader::name\28\29\20const 10219:GrStrokeTessellationShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 10220:GrStrokeTessellationShader::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10221:GrStrokeTessellationShader::Impl::~Impl\28\29.1 10222:GrStrokeTessellationShader::Impl::~Impl\28\29 10223:GrStrokeTessellationShader::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 10224:GrStrokeTessellationShader::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 10225:GrSkSLFP::~GrSkSLFP\28\29.1 10226:GrSkSLFP::~GrSkSLFP\28\29 10227:GrSkSLFP::onMakeProgramImpl\28\29\20const 10228:GrSkSLFP::onIsEqual\28GrFragmentProcessor\20const&\29\20const 10229:GrSkSLFP::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10230:GrSkSLFP::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 10231:GrSkSLFP::clone\28\29\20const 10232:GrSkSLFP::Impl::~Impl\28\29.1 10233:GrSkSLFP::Impl::~Impl\28\29 10234:GrSkSLFP::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 10235:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::toLinearSrgb\28std::__2::basic_string\2c\20std::__2::allocator>\29 10236:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::sampleShader\28int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 10237:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::sampleColorFilter\28int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 10238:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::sampleBlender\28int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 10239:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::getMangledName\28char\20const*\29 10240:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::fromLinearSrgb\28std::__2::basic_string\2c\20std::__2::allocator>\29 10241:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::defineFunction\28char\20const*\2c\20char\20const*\2c\20bool\29 10242:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::declareUniform\28SkSL::VarDeclaration\20const*\29 10243:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::declareFunction\28char\20const*\29 10244:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 10245:GrSimpleMesh*\20SkArenaAlloc::allocUninitializedArray\28unsigned\20long\29::'lambda'\28char*\29::__invoke\28char*\29 10246:GrRingBuffer::FinishSubmit\28void*\29 10247:GrResourceCache::CompareTimestamp\28GrGpuResource*\20const&\2c\20GrGpuResource*\20const&\29 10248:GrRenderTask::~GrRenderTask\28\29 10249:GrRenderTask::disown\28GrDrawingManager*\29 10250:GrRenderTargetProxy::~GrRenderTargetProxy\28\29.1 10251:GrRenderTargetProxy::~GrRenderTargetProxy\28\29 10252:GrRenderTargetProxy::onUninstantiatedGpuMemorySize\28\29\20const 10253:GrRenderTargetProxy::instantiate\28GrResourceProvider*\29 10254:GrRenderTargetProxy::createSurface\28GrResourceProvider*\29\20const 10255:GrRenderTargetProxy::callbackDesc\28\29\20const 10256:GrRecordingContext::~GrRecordingContext\28\29.1 10257:GrRecordingContext::abandoned\28\29 10258:GrRRectShadowGeoProc::~GrRRectShadowGeoProc\28\29.1 10259:GrRRectShadowGeoProc::~GrRRectShadowGeoProc\28\29 10260:GrRRectShadowGeoProc::onTextureSampler\28int\29\20const 10261:GrRRectShadowGeoProc::name\28\29\20const 10262:GrRRectShadowGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 10263:GrRRectShadowGeoProc::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 10264:GrQuadEffect::name\28\29\20const 10265:GrQuadEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const 10266:GrQuadEffect::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10267:GrQuadEffect::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 10268:GrQuadEffect::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 10269:GrPorterDuffXPFactory::makeXferProcessor\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 10270:GrPorterDuffXPFactory::analysisProperties\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\20const&\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 10271:GrPerlinNoise2Effect::~GrPerlinNoise2Effect\28\29.1 10272:GrPerlinNoise2Effect::~GrPerlinNoise2Effect\28\29 10273:GrPerlinNoise2Effect::onMakeProgramImpl\28\29\20const 10274:GrPerlinNoise2Effect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 10275:GrPerlinNoise2Effect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10276:GrPerlinNoise2Effect::name\28\29\20const 10277:GrPerlinNoise2Effect::clone\28\29\20const 10278:GrPerlinNoise2Effect::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 10279:GrPerlinNoise2Effect::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 10280:GrPathTessellationShader::Impl::~Impl\28\29 10281:GrPathTessellationShader::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 10282:GrPathTessellationShader::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 10283:GrOpsRenderPass::~GrOpsRenderPass\28\29 10284:GrOpsRenderPass::onExecuteDrawable\28std::__2::unique_ptr>\29 10285:GrOpsRenderPass::onDrawIndirect\28GrBuffer\20const*\2c\20unsigned\20long\2c\20int\29 10286:GrOpsRenderPass::onDrawIndexedIndirect\28GrBuffer\20const*\2c\20unsigned\20long\2c\20int\29 10287:GrOpFlushState::~GrOpFlushState\28\29.1 10288:GrOpFlushState::~GrOpFlushState\28\29 10289:GrOpFlushState::writeView\28\29\20const 10290:GrOpFlushState::usesMSAASurface\28\29\20const 10291:GrOpFlushState::tokenTracker\28\29 10292:GrOpFlushState::threadSafeCache\28\29\20const 10293:GrOpFlushState::strikeCache\28\29\20const 10294:GrOpFlushState::smallPathAtlasManager\28\29\20const 10295:GrOpFlushState::sampledProxyArray\28\29 10296:GrOpFlushState::rtProxy\28\29\20const 10297:GrOpFlushState::resourceProvider\28\29\20const 10298:GrOpFlushState::renderPassBarriers\28\29\20const 10299:GrOpFlushState::recordDraw\28GrGeometryProcessor\20const*\2c\20GrSimpleMesh\20const*\2c\20int\2c\20GrSurfaceProxy\20const*\20const*\2c\20GrPrimitiveType\29 10300:GrOpFlushState::putBackVertices\28int\2c\20unsigned\20long\29 10301:GrOpFlushState::putBackIndirectDraws\28int\29 10302:GrOpFlushState::putBackIndices\28int\29 10303:GrOpFlushState::putBackIndexedIndirectDraws\28int\29 10304:GrOpFlushState::makeVertexSpace\28unsigned\20long\2c\20int\2c\20sk_sp*\2c\20int*\29 10305:GrOpFlushState::makeVertexSpaceAtLeast\28unsigned\20long\2c\20int\2c\20int\2c\20sk_sp*\2c\20int*\2c\20int*\29 10306:GrOpFlushState::makeIndexSpace\28int\2c\20sk_sp*\2c\20int*\29 10307:GrOpFlushState::makeIndexSpaceAtLeast\28int\2c\20int\2c\20sk_sp*\2c\20int*\2c\20int*\29 10308:GrOpFlushState::makeDrawIndirectSpace\28int\2c\20sk_sp*\2c\20unsigned\20long*\29 10309:GrOpFlushState::makeDrawIndexedIndirectSpace\28int\2c\20sk_sp*\2c\20unsigned\20long*\29 10310:GrOpFlushState::dstProxyView\28\29\20const 10311:GrOpFlushState::colorLoadOp\28\29\20const 10312:GrOpFlushState::atlasManager\28\29\20const 10313:GrOpFlushState::appliedClip\28\29\20const 10314:GrOpFlushState::addInlineUpload\28std::__2::function&\29>&&\29 10315:GrOp::~GrOp\28\29 10316:GrOnFlushCallbackObject::postFlush\28skgpu::AtlasToken\29 10317:GrModulateAtlasCoverageEffect::onMakeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 10318:GrModulateAtlasCoverageEffect::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 10319:GrModulateAtlasCoverageEffect::onMakeProgramImpl\28\29\20const 10320:GrModulateAtlasCoverageEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 10321:GrModulateAtlasCoverageEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10322:GrModulateAtlasCoverageEffect::name\28\29\20const 10323:GrModulateAtlasCoverageEffect::clone\28\29\20const 10324:GrMeshDrawOp::onPrepare\28GrOpFlushState*\29 10325:GrMeshDrawOp::onPrePrepare\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 10326:GrMatrixEffect::onMakeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 10327:GrMatrixEffect::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 10328:GrMatrixEffect::onMakeProgramImpl\28\29\20const 10329:GrMatrixEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 10330:GrMatrixEffect::name\28\29\20const 10331:GrMatrixEffect::clone\28\29\20const 10332:GrMakeUniqueKeyInvalidationListener\28skgpu::UniqueKey*\2c\20unsigned\20int\29::Listener::~Listener\28\29.1 10333:GrMakeUniqueKeyInvalidationListener\28skgpu::UniqueKey*\2c\20unsigned\20int\29::Listener::~Listener\28\29 10334:GrMakeUniqueKeyInvalidationListener\28skgpu::UniqueKey*\2c\20unsigned\20int\29::$_0::__invoke\28void\20const*\2c\20void*\29 10335:GrImageContext::~GrImageContext\28\29.1 10336:GrImageContext::~GrImageContext\28\29 10337:GrHardClip::apply\28GrRecordingContext*\2c\20skgpu::ganesh::SurfaceDrawContext*\2c\20GrDrawOp*\2c\20GrAAType\2c\20GrAppliedClip*\2c\20SkRect*\29\20const 10338:GrGpuResource::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 10339:GrGpuBuffer::~GrGpuBuffer\28\29 10340:GrGpuBuffer::unref\28\29\20const 10341:GrGpuBuffer::getResourceType\28\29\20const 10342:GrGpuBuffer::computeScratchKey\28skgpu::ScratchKey*\29\20const 10343:GrGeometryProcessor::onTextureSampler\28int\29\20const 10344:GrGeometryProcessor::ProgramImpl::~ProgramImpl\28\29 10345:GrGLVaryingHandler::~GrGLVaryingHandler\28\29 10346:GrGLUniformHandler::~GrGLUniformHandler\28\29.1 10347:GrGLUniformHandler::~GrGLUniformHandler\28\29 10348:GrGLUniformHandler::samplerVariable\28GrResourceHandle\29\20const 10349:GrGLUniformHandler::samplerSwizzle\28GrResourceHandle\29\20const 10350:GrGLUniformHandler::internalAddUniformArray\28GrProcessor\20const*\2c\20unsigned\20int\2c\20SkSLType\2c\20char\20const*\2c\20bool\2c\20int\2c\20char\20const**\29 10351:GrGLUniformHandler::getUniformCStr\28GrResourceHandle\29\20const 10352:GrGLUniformHandler::appendUniformDecls\28GrShaderFlags\2c\20SkString*\29\20const 10353:GrGLUniformHandler::addSampler\28GrBackendFormat\20const&\2c\20GrSamplerState\2c\20skgpu::Swizzle\20const&\2c\20char\20const*\2c\20GrShaderCaps\20const*\29 10354:GrGLTextureRenderTarget::~GrGLTextureRenderTarget\28\29 10355:GrGLTextureRenderTarget::onSetLabel\28\29 10356:GrGLTextureRenderTarget::onRelease\28\29 10357:GrGLTextureRenderTarget::onGpuMemorySize\28\29\20const 10358:GrGLTextureRenderTarget::onAbandon\28\29 10359:GrGLTextureRenderTarget::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 10360:GrGLTextureRenderTarget::backendFormat\28\29\20const 10361:GrGLTexture::~GrGLTexture\28\29.1 10362:GrGLTexture::~GrGLTexture\28\29 10363:GrGLTexture::textureParamsModified\28\29 10364:GrGLTexture::onStealBackendTexture\28GrBackendTexture*\2c\20std::__2::function*\29 10365:GrGLTexture::getBackendTexture\28\29\20const 10366:GrGLSemaphore::~GrGLSemaphore\28\29.1 10367:GrGLSemaphore::~GrGLSemaphore\28\29 10368:GrGLSemaphore::setIsOwned\28\29 10369:GrGLSemaphore::backendSemaphore\28\29\20const 10370:GrGLSLVertexBuilder::~GrGLSLVertexBuilder\28\29 10371:GrGLSLVertexBuilder::onFinalize\28\29 10372:GrGLSLUniformHandler::inputSamplerSwizzle\28GrResourceHandle\29\20const 10373:GrGLSLFragmentShaderBuilder::~GrGLSLFragmentShaderBuilder\28\29.1 10374:GrGLSLFragmentShaderBuilder::~GrGLSLFragmentShaderBuilder\28\29 10375:GrGLSLFragmentShaderBuilder::onFinalize\28\29 10376:GrGLSLFragmentShaderBuilder::hasSecondaryOutput\28\29\20const 10377:GrGLSLFragmentShaderBuilder::forceHighPrecision\28\29 10378:GrGLSLFragmentShaderBuilder::enableAdvancedBlendEquationIfNeeded\28skgpu::BlendEquation\29 10379:GrGLRenderTarget::~GrGLRenderTarget\28\29.1 10380:GrGLRenderTarget::~GrGLRenderTarget\28\29 10381:GrGLRenderTarget::onGpuMemorySize\28\29\20const 10382:GrGLRenderTarget::getBackendRenderTarget\28\29\20const 10383:GrGLRenderTarget::completeStencilAttachment\28GrAttachment*\2c\20bool\29 10384:GrGLRenderTarget::canAttemptStencilAttachment\28bool\29\20const 10385:GrGLRenderTarget::backendFormat\28\29\20const 10386:GrGLRenderTarget::alwaysClearStencil\28\29\20const 10387:GrGLProgramDataManager::~GrGLProgramDataManager\28\29.1 10388:GrGLProgramDataManager::~GrGLProgramDataManager\28\29 10389:GrGLProgramDataManager::setMatrix4fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 10390:GrGLProgramDataManager::setMatrix4f\28GrResourceHandle\2c\20float\20const*\29\20const 10391:GrGLProgramDataManager::setMatrix3fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 10392:GrGLProgramDataManager::setMatrix3f\28GrResourceHandle\2c\20float\20const*\29\20const 10393:GrGLProgramDataManager::setMatrix2fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 10394:GrGLProgramDataManager::setMatrix2f\28GrResourceHandle\2c\20float\20const*\29\20const 10395:GrGLProgramDataManager::set4iv\28GrResourceHandle\2c\20int\2c\20int\20const*\29\20const 10396:GrGLProgramDataManager::set4i\28GrResourceHandle\2c\20int\2c\20int\2c\20int\2c\20int\29\20const 10397:GrGLProgramDataManager::set4f\28GrResourceHandle\2c\20float\2c\20float\2c\20float\2c\20float\29\20const 10398:GrGLProgramDataManager::set3iv\28GrResourceHandle\2c\20int\2c\20int\20const*\29\20const 10399:GrGLProgramDataManager::set3i\28GrResourceHandle\2c\20int\2c\20int\2c\20int\29\20const 10400:GrGLProgramDataManager::set3fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 10401:GrGLProgramDataManager::set3f\28GrResourceHandle\2c\20float\2c\20float\2c\20float\29\20const 10402:GrGLProgramDataManager::set2iv\28GrResourceHandle\2c\20int\2c\20int\20const*\29\20const 10403:GrGLProgramDataManager::set2i\28GrResourceHandle\2c\20int\2c\20int\29\20const 10404:GrGLProgramDataManager::set2f\28GrResourceHandle\2c\20float\2c\20float\29\20const 10405:GrGLProgramDataManager::set1iv\28GrResourceHandle\2c\20int\2c\20int\20const*\29\20const 10406:GrGLProgramDataManager::set1i\28GrResourceHandle\2c\20int\29\20const 10407:GrGLProgramDataManager::set1fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 10408:GrGLProgramDataManager::set1f\28GrResourceHandle\2c\20float\29\20const 10409:GrGLProgramBuilder::~GrGLProgramBuilder\28\29.1 10410:GrGLProgramBuilder::varyingHandler\28\29 10411:GrGLProgramBuilder::caps\28\29\20const 10412:GrGLProgram::~GrGLProgram\28\29.1 10413:GrGLOpsRenderPass::~GrGLOpsRenderPass\28\29 10414:GrGLOpsRenderPass::onSetScissorRect\28SkIRect\20const&\29 10415:GrGLOpsRenderPass::onEnd\28\29 10416:GrGLOpsRenderPass::onDraw\28int\2c\20int\29 10417:GrGLOpsRenderPass::onDrawInstanced\28int\2c\20int\2c\20int\2c\20int\29 10418:GrGLOpsRenderPass::onDrawIndirect\28GrBuffer\20const*\2c\20unsigned\20long\2c\20int\29 10419:GrGLOpsRenderPass::onDrawIndexed\28int\2c\20int\2c\20unsigned\20short\2c\20unsigned\20short\2c\20int\29 10420:GrGLOpsRenderPass::onDrawIndexedInstanced\28int\2c\20int\2c\20int\2c\20int\2c\20int\29 10421:GrGLOpsRenderPass::onDrawIndexedIndirect\28GrBuffer\20const*\2c\20unsigned\20long\2c\20int\29 10422:GrGLOpsRenderPass::onClear\28GrScissorState\20const&\2c\20std::__2::array\29 10423:GrGLOpsRenderPass::onClearStencilClip\28GrScissorState\20const&\2c\20bool\29 10424:GrGLOpsRenderPass::onBindTextures\28GrGeometryProcessor\20const&\2c\20GrSurfaceProxy\20const*\20const*\2c\20GrPipeline\20const&\29 10425:GrGLOpsRenderPass::onBindPipeline\28GrProgramInfo\20const&\2c\20SkRect\20const&\29 10426:GrGLOpsRenderPass::onBindBuffers\28sk_sp\2c\20sk_sp\2c\20sk_sp\2c\20GrPrimitiveRestart\29 10427:GrGLOpsRenderPass::onBegin\28\29 10428:GrGLOpsRenderPass::inlineUpload\28GrOpFlushState*\2c\20std::__2::function&\29>&\29 10429:GrGLInterface::~GrGLInterface\28\29.1 10430:GrGLInterface::~GrGLInterface\28\29 10431:GrGLGpu::~GrGLGpu\28\29.1 10432:GrGLGpu::xferBarrier\28GrRenderTarget*\2c\20GrXferBarrierType\29 10433:GrGLGpu::wrapBackendSemaphore\28GrBackendSemaphore\20const&\2c\20GrSemaphoreWrapType\2c\20GrWrapOwnership\29 10434:GrGLGpu::willExecute\28\29 10435:GrGLGpu::waitSemaphore\28GrSemaphore*\29 10436:GrGLGpu::submit\28GrOpsRenderPass*\29 10437:GrGLGpu::stagingBufferManager\28\29 10438:GrGLGpu::refPipelineBuilder\28\29 10439:GrGLGpu::prepareTextureForCrossContextUsage\28GrTexture*\29 10440:GrGLGpu::precompileShader\28SkData\20const&\2c\20SkData\20const&\29 10441:GrGLGpu::pipelineBuilder\28\29 10442:GrGLGpu::onWritePixels\28GrSurface*\2c\20SkIRect\2c\20GrColorType\2c\20GrColorType\2c\20GrMipLevel\20const*\2c\20int\2c\20bool\29 10443:GrGLGpu::onWrapRenderableBackendTexture\28GrBackendTexture\20const&\2c\20int\2c\20GrWrapOwnership\2c\20GrWrapCacheable\29 10444:GrGLGpu::onWrapCompressedBackendTexture\28GrBackendTexture\20const&\2c\20GrWrapOwnership\2c\20GrWrapCacheable\29 10445:GrGLGpu::onWrapBackendTexture\28GrBackendTexture\20const&\2c\20GrWrapOwnership\2c\20GrWrapCacheable\2c\20GrIOType\29 10446:GrGLGpu::onWrapBackendRenderTarget\28GrBackendRenderTarget\20const&\29 10447:GrGLGpu::onUpdateCompressedBackendTexture\28GrBackendTexture\20const&\2c\20sk_sp\2c\20void\20const*\2c\20unsigned\20long\29 10448:GrGLGpu::onTransferPixelsTo\28GrTexture*\2c\20SkIRect\2c\20GrColorType\2c\20GrColorType\2c\20sk_sp\2c\20unsigned\20long\2c\20unsigned\20long\29 10449:GrGLGpu::onTransferPixelsFrom\28GrSurface*\2c\20SkIRect\2c\20GrColorType\2c\20GrColorType\2c\20sk_sp\2c\20unsigned\20long\29 10450:GrGLGpu::onTransferFromBufferToBuffer\28sk_sp\2c\20unsigned\20long\2c\20sk_sp\2c\20unsigned\20long\2c\20unsigned\20long\29 10451:GrGLGpu::onSubmitToGpu\28GrSyncCpu\29 10452:GrGLGpu::onResolveRenderTarget\28GrRenderTarget*\2c\20SkIRect\20const&\29 10453:GrGLGpu::onResetTextureBindings\28\29 10454:GrGLGpu::onResetContext\28unsigned\20int\29 10455:GrGLGpu::onRegenerateMipMapLevels\28GrTexture*\29 10456:GrGLGpu::onReadPixels\28GrSurface*\2c\20SkIRect\2c\20GrColorType\2c\20GrColorType\2c\20void*\2c\20unsigned\20long\29 10457:GrGLGpu::onGetOpsRenderPass\28GrRenderTarget*\2c\20bool\2c\20GrAttachment*\2c\20GrSurfaceOrigin\2c\20SkIRect\20const&\2c\20GrOpsRenderPass::LoadAndStoreInfo\20const&\2c\20GrOpsRenderPass::StencilLoadAndStoreInfo\20const&\2c\20skia_private::TArray\20const&\2c\20GrXferBarrierFlags\29 10458:GrGLGpu::onDumpJSON\28SkJSONWriter*\29\20const 10459:GrGLGpu::onCreateTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20int\2c\20unsigned\20int\2c\20std::__2::basic_string_view>\29 10460:GrGLGpu::onCreateCompressedTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20skgpu::Budgeted\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20void\20const*\2c\20unsigned\20long\29 10461:GrGLGpu::onCreateCompressedBackendTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\29 10462:GrGLGpu::onCreateBuffer\28unsigned\20long\2c\20GrGpuBufferType\2c\20GrAccessPattern\29 10463:GrGLGpu::onCreateBackendTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20skgpu::Renderable\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 10464:GrGLGpu::onCopySurface\28GrSurface*\2c\20SkIRect\20const&\2c\20GrSurface*\2c\20SkIRect\20const&\2c\20SkFilterMode\29 10465:GrGLGpu::onClearBackendTexture\28GrBackendTexture\20const&\2c\20sk_sp\2c\20std::__2::array\29 10466:GrGLGpu::makeStencilAttachment\28GrBackendFormat\20const&\2c\20SkISize\2c\20int\29 10467:GrGLGpu::makeSemaphore\28bool\29 10468:GrGLGpu::makeMSAAAttachment\28SkISize\2c\20GrBackendFormat\20const&\2c\20int\2c\20skgpu::Protected\2c\20GrMemoryless\29 10469:GrGLGpu::insertSemaphore\28GrSemaphore*\29 10470:GrGLGpu::getPreferredStencilFormat\28GrBackendFormat\20const&\29 10471:GrGLGpu::finishOutstandingGpuWork\28\29 10472:GrGLGpu::disconnect\28GrGpu::DisconnectType\29 10473:GrGLGpu::deleteBackendTexture\28GrBackendTexture\20const&\29 10474:GrGLGpu::compile\28GrProgramDesc\20const&\2c\20GrProgramInfo\20const&\29 10475:GrGLGpu::checkFinishProcs\28\29 10476:GrGLGpu::addFinishedProc\28void\20\28*\29\28void*\29\2c\20void*\29 10477:GrGLGpu::ProgramCache::~ProgramCache\28\29.1 10478:GrGLGpu::ProgramCache::~ProgramCache\28\29 10479:GrGLFunction::GrGLFunction\28void\20\28*\29\28unsigned\20int\2c\20unsigned\20int\2c\20float\29\29::'lambda'\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20float\29::__invoke\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20float\29 10480:GrGLFunction::GrGLFunction\28void\20\28*\29\28int\2c\20float\2c\20float\2c\20float\29\29::'lambda'\28void\20const*\2c\20int\2c\20float\2c\20float\2c\20float\29::__invoke\28void\20const*\2c\20int\2c\20float\2c\20float\2c\20float\29 10481:GrGLFunction::GrGLFunction\28void\20\28*\29\28float\2c\20float\2c\20float\2c\20float\29\29::'lambda'\28void\20const*\2c\20float\2c\20float\2c\20float\2c\20float\29::__invoke\28void\20const*\2c\20float\2c\20float\2c\20float\2c\20float\29 10482:GrGLFunction::GrGLFunction\28void\20\28*\29\28float\29\29::'lambda'\28void\20const*\2c\20float\29::__invoke\28void\20const*\2c\20float\29 10483:GrGLFunction::GrGLFunction\28void\20\28*\29\28__GLsync*\2c\20unsigned\20int\2c\20unsigned\20long\20long\29\29::'lambda'\28void\20const*\2c\20__GLsync*\2c\20unsigned\20int\2c\20unsigned\20long\20long\29::__invoke\28void\20const*\2c\20__GLsync*\2c\20unsigned\20int\2c\20unsigned\20long\20long\29 10484:GrGLFunction::GrGLFunction\28void\20\28*\29\28\29\29::'lambda'\28void\20const*\29::__invoke\28void\20const*\29 10485:GrGLFunction::GrGLFunction\28unsigned\20int\20\28*\29\28__GLsync*\2c\20unsigned\20int\2c\20unsigned\20long\20long\29\29::'lambda'\28void\20const*\2c\20__GLsync*\2c\20unsigned\20int\2c\20unsigned\20long\20long\29::__invoke\28void\20const*\2c\20__GLsync*\2c\20unsigned\20int\2c\20unsigned\20long\20long\29 10486:GrGLFunction::GrGLFunction\28unsigned\20int\20\28*\29\28\29\29::'lambda'\28void\20const*\29::__invoke\28void\20const*\29 10487:GrGLCaps::~GrGLCaps\28\29.1 10488:GrGLCaps::surfaceSupportsReadPixels\28GrSurface\20const*\29\20const 10489:GrGLCaps::supportedWritePixelsColorType\28GrColorType\2c\20GrBackendFormat\20const&\2c\20GrColorType\29\20const 10490:GrGLCaps::onSurfaceSupportsWritePixels\28GrSurface\20const*\29\20const 10491:GrGLCaps::onSupportsDynamicMSAA\28GrRenderTargetProxy\20const*\29\20const 10492:GrGLCaps::onSupportedReadPixelsColorType\28GrColorType\2c\20GrBackendFormat\20const&\2c\20GrColorType\29\20const 10493:GrGLCaps::onIsWindowRectanglesSupportedForRT\28GrBackendRenderTarget\20const&\29\20const 10494:GrGLCaps::onGetReadSwizzle\28GrBackendFormat\20const&\2c\20GrColorType\29\20const 10495:GrGLCaps::onGetDstSampleFlagsForProxy\28GrRenderTargetProxy\20const*\29\20const 10496:GrGLCaps::onGetDefaultBackendFormat\28GrColorType\29\20const 10497:GrGLCaps::onDumpJSON\28SkJSONWriter*\29\20const 10498:GrGLCaps::onCanCopySurface\28GrSurfaceProxy\20const*\2c\20SkIRect\20const&\2c\20GrSurfaceProxy\20const*\2c\20SkIRect\20const&\29\20const 10499:GrGLCaps::onAreColorTypeAndFormatCompatible\28GrColorType\2c\20GrBackendFormat\20const&\29\20const 10500:GrGLCaps::onApplyOptionsOverrides\28GrContextOptions\20const&\29 10501:GrGLCaps::maxRenderTargetSampleCount\28GrBackendFormat\20const&\29\20const 10502:GrGLCaps::makeDesc\28GrRenderTarget*\2c\20GrProgramInfo\20const&\2c\20GrCaps::ProgramDescOverrideFlags\29\20const 10503:GrGLCaps::isFormatTexturable\28GrBackendFormat\20const&\2c\20GrTextureType\29\20const 10504:GrGLCaps::isFormatSRGB\28GrBackendFormat\20const&\29\20const 10505:GrGLCaps::isFormatRenderable\28GrBackendFormat\20const&\2c\20int\29\20const 10506:GrGLCaps::isFormatCopyable\28GrBackendFormat\20const&\29\20const 10507:GrGLCaps::isFormatAsColorTypeRenderable\28GrColorType\2c\20GrBackendFormat\20const&\2c\20int\29\20const 10508:GrGLCaps::getWriteSwizzle\28GrBackendFormat\20const&\2c\20GrColorType\29\20const 10509:GrGLCaps::getRenderTargetSampleCount\28int\2c\20GrBackendFormat\20const&\29\20const 10510:GrGLCaps::getDstCopyRestrictions\28GrRenderTargetProxy\20const*\2c\20GrColorType\29\20const 10511:GrGLCaps::getBackendFormatFromCompressionType\28SkTextureCompressionType\29\20const 10512:GrGLCaps::computeFormatKey\28GrBackendFormat\20const&\29\20const 10513:GrGLBuffer::~GrGLBuffer\28\29.1 10514:GrGLBuffer::~GrGLBuffer\28\29 10515:GrGLBuffer::setMemoryBacking\28SkTraceMemoryDump*\2c\20SkString\20const&\29\20const 10516:GrGLBuffer::onUpdateData\28void\20const*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\29 10517:GrGLBuffer::onUnmap\28GrGpuBuffer::MapType\29 10518:GrGLBuffer::onSetLabel\28\29 10519:GrGLBuffer::onRelease\28\29 10520:GrGLBuffer::onMap\28GrGpuBuffer::MapType\29 10521:GrGLBuffer::onClearToZero\28\29 10522:GrGLBuffer::onAbandon\28\29 10523:GrGLBackendTextureData::~GrGLBackendTextureData\28\29.1 10524:GrGLBackendTextureData::~GrGLBackendTextureData\28\29 10525:GrGLBackendTextureData::isSameTexture\28GrBackendTextureData\20const*\29\20const 10526:GrGLBackendTextureData::isProtected\28\29\20const 10527:GrGLBackendTextureData::getBackendFormat\28\29\20const 10528:GrGLBackendTextureData::equal\28GrBackendTextureData\20const*\29\20const 10529:GrGLBackendTextureData::copyTo\28SkAnySubclass&\29\20const 10530:GrGLBackendRenderTargetData::isProtected\28\29\20const 10531:GrGLBackendRenderTargetData::getBackendFormat\28\29\20const 10532:GrGLBackendRenderTargetData::equal\28GrBackendRenderTargetData\20const*\29\20const 10533:GrGLBackendRenderTargetData::copyTo\28SkAnySubclass&\29\20const 10534:GrGLBackendFormatData::toString\28\29\20const 10535:GrGLBackendFormatData::stencilBits\28\29\20const 10536:GrGLBackendFormatData::equal\28GrBackendFormatData\20const*\29\20const 10537:GrGLBackendFormatData::desc\28\29\20const 10538:GrGLBackendFormatData::copyTo\28SkAnySubclass&\29\20const 10539:GrGLBackendFormatData::compressionType\28\29\20const 10540:GrGLBackendFormatData::channelMask\28\29\20const 10541:GrGLBackendFormatData::bytesPerBlock\28\29\20const 10542:GrGLAttachment::~GrGLAttachment\28\29 10543:GrGLAttachment::setMemoryBacking\28SkTraceMemoryDump*\2c\20SkString\20const&\29\20const 10544:GrGLAttachment::onSetLabel\28\29 10545:GrGLAttachment::onRelease\28\29 10546:GrGLAttachment::onAbandon\28\29 10547:GrGLAttachment::backendFormat\28\29\20const 10548:GrFragmentProcessor::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 10549:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 10550:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::onMakeProgramImpl\28\29\20const 10551:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::onIsEqual\28GrFragmentProcessor\20const&\29\20const 10552:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10553:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::name\28\29\20const 10554:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 10555:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::clone\28\29\20const 10556:GrFragmentProcessor::SurfaceColor\28\29::SurfaceColorProcessor::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 10557:GrFragmentProcessor::SurfaceColor\28\29::SurfaceColorProcessor::onMakeProgramImpl\28\29\20const 10558:GrFragmentProcessor::SurfaceColor\28\29::SurfaceColorProcessor::name\28\29\20const 10559:GrFragmentProcessor::SurfaceColor\28\29::SurfaceColorProcessor::clone\28\29\20const 10560:GrFragmentProcessor::ProgramImpl::~ProgramImpl\28\29 10561:GrFragmentProcessor::HighPrecision\28std::__2::unique_ptr>\29::HighPrecisionFragmentProcessor::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 10562:GrFragmentProcessor::HighPrecision\28std::__2::unique_ptr>\29::HighPrecisionFragmentProcessor::onMakeProgramImpl\28\29\20const 10563:GrFragmentProcessor::HighPrecision\28std::__2::unique_ptr>\29::HighPrecisionFragmentProcessor::name\28\29\20const 10564:GrFragmentProcessor::HighPrecision\28std::__2::unique_ptr>\29::HighPrecisionFragmentProcessor::clone\28\29\20const 10565:GrFragmentProcessor::DeviceSpace\28std::__2::unique_ptr>\29::DeviceSpace::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 10566:GrFragmentProcessor::DeviceSpace\28std::__2::unique_ptr>\29::DeviceSpace::onMakeProgramImpl\28\29\20const 10567:GrFragmentProcessor::DeviceSpace\28std::__2::unique_ptr>\29::DeviceSpace::name\28\29\20const 10568:GrFragmentProcessor::DeviceSpace\28std::__2::unique_ptr>\29::DeviceSpace::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 10569:GrFragmentProcessor::DeviceSpace\28std::__2::unique_ptr>\29::DeviceSpace::clone\28\29\20const 10570:GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29::ComposeProcessor::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 10571:GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29::ComposeProcessor::onMakeProgramImpl\28\29\20const 10572:GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29::ComposeProcessor::name\28\29\20const 10573:GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29::ComposeProcessor::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 10574:GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29::ComposeProcessor::clone\28\29\20const 10575:GrFixedClip::~GrFixedClip\28\29.1 10576:GrFixedClip::~GrFixedClip\28\29 10577:GrExternalTextureGenerator::onGenerateTexture\28GrRecordingContext*\2c\20SkImageInfo\20const&\2c\20skgpu::Mipmapped\2c\20GrImageTexGenPolicy\29 10578:GrEagerDynamicVertexAllocator::lock\28unsigned\20long\2c\20int\29 10579:GrDynamicAtlas::~GrDynamicAtlas\28\29.1 10580:GrDynamicAtlas::~GrDynamicAtlas\28\29 10581:GrDrawOp::usesStencil\28\29\20const 10582:GrDrawOp::usesMSAA\28\29\20const 10583:GrDrawOp::fixedFunctionFlags\28\29\20const 10584:GrDistanceFieldPathGeoProc::~GrDistanceFieldPathGeoProc\28\29.1 10585:GrDistanceFieldPathGeoProc::~GrDistanceFieldPathGeoProc\28\29 10586:GrDistanceFieldPathGeoProc::onTextureSampler\28int\29\20const 10587:GrDistanceFieldPathGeoProc::name\28\29\20const 10588:GrDistanceFieldPathGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 10589:GrDistanceFieldPathGeoProc::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10590:GrDistanceFieldPathGeoProc::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 10591:GrDistanceFieldPathGeoProc::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 10592:GrDistanceFieldLCDTextGeoProc::~GrDistanceFieldLCDTextGeoProc\28\29.1 10593:GrDistanceFieldLCDTextGeoProc::~GrDistanceFieldLCDTextGeoProc\28\29 10594:GrDistanceFieldLCDTextGeoProc::name\28\29\20const 10595:GrDistanceFieldLCDTextGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 10596:GrDistanceFieldLCDTextGeoProc::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10597:GrDistanceFieldLCDTextGeoProc::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 10598:GrDistanceFieldLCDTextGeoProc::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 10599:GrDistanceFieldA8TextGeoProc::~GrDistanceFieldA8TextGeoProc\28\29.1 10600:GrDistanceFieldA8TextGeoProc::~GrDistanceFieldA8TextGeoProc\28\29 10601:GrDistanceFieldA8TextGeoProc::name\28\29\20const 10602:GrDistanceFieldA8TextGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 10603:GrDistanceFieldA8TextGeoProc::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10604:GrDistanceFieldA8TextGeoProc::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 10605:GrDistanceFieldA8TextGeoProc::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 10606:GrDisableColorXPFactory::makeXferProcessor\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 10607:GrDisableColorXPFactory::analysisProperties\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\20const&\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 10608:GrDirectContext::~GrDirectContext\28\29.1 10609:GrDirectContext::releaseResourcesAndAbandonContext\28\29 10610:GrDirectContext::init\28\29 10611:GrDirectContext::abandoned\28\29 10612:GrDirectContext::abandonContext\28\29 10613:GrDeferredProxyUploader::~GrDeferredProxyUploader\28\29.1 10614:GrDeferredProxyUploader::~GrDeferredProxyUploader\28\29 10615:GrCpuVertexAllocator::~GrCpuVertexAllocator\28\29.1 10616:GrCpuVertexAllocator::~GrCpuVertexAllocator\28\29 10617:GrCpuVertexAllocator::unlock\28int\29 10618:GrCpuVertexAllocator::lock\28unsigned\20long\2c\20int\29 10619:GrCpuBuffer::unref\28\29\20const 10620:GrCoverageSetOpXPFactory::makeXferProcessor\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 10621:GrCoverageSetOpXPFactory::analysisProperties\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\20const&\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 10622:GrCopyRenderTask::~GrCopyRenderTask\28\29.1 10623:GrCopyRenderTask::onMakeSkippable\28\29 10624:GrCopyRenderTask::onMakeClosed\28GrRecordingContext*\2c\20SkIRect*\29 10625:GrCopyRenderTask::onExecute\28GrOpFlushState*\29 10626:GrCopyRenderTask::gatherProxyIntervals\28GrResourceAllocator*\29\20const 10627:GrConvexPolyEffect::onMakeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 10628:GrConvexPolyEffect::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 10629:GrConvexPolyEffect::onMakeProgramImpl\28\29\20const 10630:GrConvexPolyEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 10631:GrConvexPolyEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10632:GrConvexPolyEffect::name\28\29\20const 10633:GrConvexPolyEffect::clone\28\29\20const 10634:GrContext_Base::~GrContext_Base\28\29.1 10635:GrContextThreadSafeProxy::~GrContextThreadSafeProxy\28\29.1 10636:GrContextThreadSafeProxy::isValidCharacterizationForVulkan\28sk_sp\2c\20bool\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20bool\2c\20bool\29 10637:GrConicEffect::name\28\29\20const 10638:GrConicEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const 10639:GrConicEffect::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10640:GrConicEffect::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 10641:GrConicEffect::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 10642:GrColorSpaceXformEffect::~GrColorSpaceXformEffect\28\29.1 10643:GrColorSpaceXformEffect::~GrColorSpaceXformEffect\28\29 10644:GrColorSpaceXformEffect::onMakeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 10645:GrColorSpaceXformEffect::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 10646:GrColorSpaceXformEffect::onMakeProgramImpl\28\29\20const 10647:GrColorSpaceXformEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 10648:GrColorSpaceXformEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10649:GrColorSpaceXformEffect::name\28\29\20const 10650:GrColorSpaceXformEffect::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 10651:GrColorSpaceXformEffect::clone\28\29\20const 10652:GrCaps::~GrCaps\28\29 10653:GrCaps::getDstCopyRestrictions\28GrRenderTargetProxy\20const*\2c\20GrColorType\29\20const 10654:GrBitmapTextGeoProc::~GrBitmapTextGeoProc\28\29.1 10655:GrBitmapTextGeoProc::~GrBitmapTextGeoProc\28\29 10656:GrBitmapTextGeoProc::onTextureSampler\28int\29\20const 10657:GrBitmapTextGeoProc::name\28\29\20const 10658:GrBitmapTextGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 10659:GrBitmapTextGeoProc::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10660:GrBitmapTextGeoProc::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 10661:GrBitmapTextGeoProc::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 10662:GrBicubicEffect::onMakeProgramImpl\28\29\20const 10663:GrBicubicEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 10664:GrBicubicEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10665:GrBicubicEffect::name\28\29\20const 10666:GrBicubicEffect::clone\28\29\20const 10667:GrBicubicEffect::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 10668:GrBicubicEffect::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 10669:GrAttachment::onGpuMemorySize\28\29\20const 10670:GrAttachment::getResourceType\28\29\20const 10671:GrAttachment::computeScratchKey\28skgpu::ScratchKey*\29\20const 10672:GrAtlasManager::~GrAtlasManager\28\29.1 10673:GrAtlasManager::preFlush\28GrOnFlushResourceProvider*\29 10674:GrAtlasManager::postFlush\28skgpu::AtlasToken\29 10675:GrAATriangulator::tessellate\28GrTriangulator::VertexList\20const&\2c\20GrTriangulator::Comparator\20const&\29 10676:GetRectsForRange\28skia::textlayout::Paragraph&\2c\20unsigned\20int\2c\20unsigned\20int\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\29 10677:GetRectsForPlaceholders\28skia::textlayout::Paragraph&\29 10678:GetLineMetrics\28skia::textlayout::Paragraph&\29 10679:GetLineMetricsAt\28skia::textlayout::Paragraph&\2c\20unsigned\20long\29 10680:GetGlyphInfoAt\28skia::textlayout::Paragraph&\2c\20unsigned\20long\29 10681:GetCoeffsFast 10682:GetCoeffsAlt 10683:GetClosestGlyphInfoAtCoordinate\28skia::textlayout::Paragraph&\2c\20float\2c\20float\29 10684:FontMgrRunIterator::~FontMgrRunIterator\28\29.1 10685:FontMgrRunIterator::~FontMgrRunIterator\28\29 10686:FontMgrRunIterator::currentFont\28\29\20const 10687:FontMgrRunIterator::consume\28\29 10688:ExtractGreen_C 10689:ExtractAlpha_C 10690:ExtractAlphaRows 10691:ExternalWebGLTexture::~ExternalWebGLTexture\28\29.1 10692:ExternalWebGLTexture::~ExternalWebGLTexture\28\29 10693:ExternalWebGLTexture::getBackendTexture\28\29 10694:ExternalWebGLTexture::dispose\28\29 10695:ExportAlphaRGBA4444 10696:ExportAlpha 10697:Equals\28SkPath\20const&\2c\20SkPath\20const&\29 10698:End 10699:EmitYUV 10700:EmitSampledRGB 10701:EmitRescaledYUV 10702:EmitRescaledRGB 10703:EmitRescaledAlphaYUV 10704:EmitRescaledAlphaRGB 10705:EmitFancyRGB 10706:EmitAlphaYUV 10707:EmitAlphaRGBA4444 10708:EmitAlphaRGB 10709:EllipticalRRectOp::onPrepareDraws\28GrMeshDrawTarget*\29 10710:EllipticalRRectOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 10711:EllipticalRRectOp::name\28\29\20const 10712:EllipticalRRectOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 10713:EllipseOp::onPrepareDraws\28GrMeshDrawTarget*\29 10714:EllipseOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 10715:EllipseOp::name\28\29\20const 10716:EllipseOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 10717:EllipseGeometryProcessor::name\28\29\20const 10718:EllipseGeometryProcessor::makeProgramImpl\28GrShaderCaps\20const&\29\20const 10719:EllipseGeometryProcessor::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10720:EllipseGeometryProcessor::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 10721:Dual_Project 10722:DitherCombine8x8_C 10723:DispatchAlpha_C 10724:DispatchAlphaToGreen_C 10725:DisableColorXP::onGetBlendInfo\28skgpu::BlendInfo*\29\20const 10726:DisableColorXP::name\28\29\20const 10727:DisableColorXP::makeProgramImpl\28\29\20const::Impl::emitOutputsForBlendState\28GrXferProcessor::ProgramImpl::EmitArgs\20const&\29 10728:DisableColorXP::makeProgramImpl\28\29\20const 10729:Direct_Move_Y 10730:Direct_Move_X 10731:Direct_Move_Orig_Y 10732:Direct_Move_Orig_X 10733:Direct_Move_Orig 10734:Direct_Move 10735:DefaultGeoProc::name\28\29\20const 10736:DefaultGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 10737:DefaultGeoProc::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10738:DefaultGeoProc::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 10739:DefaultGeoProc::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 10740:DataFontLoader::loadSystemFonts\28SkFontScanner\20const*\2c\20skia_private::TArray\2c\20true>*\29\20const 10741:DIEllipseOp::~DIEllipseOp\28\29.1 10742:DIEllipseOp::~DIEllipseOp\28\29 10743:DIEllipseOp::visitProxies\28std::__2::function\20const&\29\20const 10744:DIEllipseOp::onPrepareDraws\28GrMeshDrawTarget*\29 10745:DIEllipseOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 10746:DIEllipseOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 10747:DIEllipseOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 10748:DIEllipseOp::name\28\29\20const 10749:DIEllipseOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 10750:DIEllipseGeometryProcessor::name\28\29\20const 10751:DIEllipseGeometryProcessor::makeProgramImpl\28GrShaderCaps\20const&\29\20const 10752:DIEllipseGeometryProcessor::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10753:DIEllipseGeometryProcessor::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 10754:DC8uv_C 10755:DC8uvNoTop_C 10756:DC8uvNoTopLeft_C 10757:DC8uvNoLeft_C 10758:DC4_C 10759:DC16_C 10760:DC16NoTop_C 10761:DC16NoTopLeft_C 10762:DC16NoLeft_C 10763:CustomXPFactory::makeXferProcessor\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 10764:CustomXPFactory::analysisProperties\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\20const&\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 10765:CustomXP::xferBarrierType\28GrCaps\20const&\29\20const 10766:CustomXP::onGetBlendInfo\28skgpu::BlendInfo*\29\20const 10767:CustomXP::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10768:CustomXP::name\28\29\20const 10769:CustomXP::makeProgramImpl\28\29\20const::Impl::emitOutputsForBlendState\28GrXferProcessor::ProgramImpl::EmitArgs\20const&\29 10770:CustomXP::makeProgramImpl\28\29\20const 10771:CustomTeardown 10772:CustomSetup 10773:CustomPut 10774:Current_Ppem_Stretched 10775:Current_Ppem 10776:Cr_z_zcfree 10777:Cr_z_zcalloc 10778:CoverageSetOpXP::onGetBlendInfo\28skgpu::BlendInfo*\29\20const 10779:CoverageSetOpXP::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10780:CoverageSetOpXP::name\28\29\20const 10781:CoverageSetOpXP::makeProgramImpl\28\29\20const::Impl::emitOutputsForBlendState\28GrXferProcessor::ProgramImpl::EmitArgs\20const&\29 10782:CoverageSetOpXP::makeProgramImpl\28\29\20const 10783:CopyPath\28SkPath\20const&\29 10784:ConvertRGB24ToY_C 10785:ConvertBGR24ToY_C 10786:ConvertARGBToY_C 10787:ColorTableEffect::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 10788:ColorTableEffect::onMakeProgramImpl\28\29\20const 10789:ColorTableEffect::name\28\29\20const 10790:ColorTableEffect::clone\28\29\20const 10791:CircularRRectOp::visitProxies\28std::__2::function\20const&\29\20const 10792:CircularRRectOp::onPrepareDraws\28GrMeshDrawTarget*\29 10793:CircularRRectOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 10794:CircularRRectOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 10795:CircularRRectOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 10796:CircularRRectOp::name\28\29\20const 10797:CircularRRectOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 10798:CircleOp::~CircleOp\28\29.1 10799:CircleOp::~CircleOp\28\29 10800:CircleOp::visitProxies\28std::__2::function\20const&\29\20const 10801:CircleOp::programInfo\28\29 10802:CircleOp::onPrepareDraws\28GrMeshDrawTarget*\29 10803:CircleOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 10804:CircleOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 10805:CircleOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 10806:CircleOp::name\28\29\20const 10807:CircleOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 10808:CircleGeometryProcessor::name\28\29\20const 10809:CircleGeometryProcessor::makeProgramImpl\28GrShaderCaps\20const&\29\20const 10810:CircleGeometryProcessor::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10811:CircleGeometryProcessor::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 10812:CanInterpolate\28SkPath\20const&\2c\20SkPath\20const&\29 10813:ButtCapper\28SkPath*\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPath*\29 10814:ButtCapDashedCircleOp::visitProxies\28std::__2::function\20const&\29\20const 10815:ButtCapDashedCircleOp::programInfo\28\29 10816:ButtCapDashedCircleOp::onPrepareDraws\28GrMeshDrawTarget*\29 10817:ButtCapDashedCircleOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 10818:ButtCapDashedCircleOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 10819:ButtCapDashedCircleOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 10820:ButtCapDashedCircleOp::name\28\29\20const 10821:ButtCapDashedCircleOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 10822:ButtCapDashedCircleGeometryProcessor::name\28\29\20const 10823:ButtCapDashedCircleGeometryProcessor::makeProgramImpl\28GrShaderCaps\20const&\29\20const 10824:ButtCapDashedCircleGeometryProcessor::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10825:ButtCapDashedCircleGeometryProcessor::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 10826:BluntJoiner\28SkPath*\2c\20SkPath*\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20float\2c\20bool\2c\20bool\29 10827:BlendFragmentProcessor::onMakeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 10828:BlendFragmentProcessor::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 10829:BlendFragmentProcessor::onMakeProgramImpl\28\29\20const 10830:BlendFragmentProcessor::onIsEqual\28GrFragmentProcessor\20const&\29\20const 10831:BlendFragmentProcessor::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10832:BlendFragmentProcessor::name\28\29\20const 10833:BlendFragmentProcessor::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 10834:BlendFragmentProcessor::clone\28\29\20const 10835:AutoCleanPng::infoCallback\28unsigned\20long\29 10836:AutoCleanPng::decodeBounds\28\29 10837:ApplyTrim\28SkPath&\2c\20float\2c\20float\2c\20bool\29 10838:ApplyTransform\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 10839:ApplyStroke\28SkPath&\2c\20StrokeOpts\29 10840:ApplySimplify\28SkPath&\29 10841:ApplyRewind\28SkPath&\29 10842:ApplyReset\28SkPath&\29 10843:ApplyRQuadTo\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\29 10844:ApplyRMoveTo\28SkPath&\2c\20float\2c\20float\29 10845:ApplyRLineTo\28SkPath&\2c\20float\2c\20float\29 10846:ApplyRCubicTo\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 10847:ApplyRConicTo\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 10848:ApplyRArcToArcSize\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20bool\2c\20bool\2c\20float\2c\20float\29 10849:ApplyQuadTo\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\29 10850:ApplyPathOp\28SkPath&\2c\20SkPath\20const&\2c\20SkPathOp\29 10851:ApplyMoveTo\28SkPath&\2c\20float\2c\20float\29 10852:ApplyLineTo\28SkPath&\2c\20float\2c\20float\29 10853:ApplyDash\28SkPath&\2c\20float\2c\20float\2c\20float\29 10854:ApplyCubicTo\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 10855:ApplyConicTo\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 10856:ApplyClose\28SkPath&\29 10857:ApplyArcToTangent\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 10858:ApplyArcToArcSize\28SkPath&\2c\20float\2c\20float\2c\20float\2c\20bool\2c\20bool\2c\20float\2c\20float\29 10859:ApplyAlphaMultiply_C 10860:ApplyAlphaMultiply_16b_C 10861:ApplyAddPath\28SkPath&\2c\20SkPath\20const&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20bool\29 10862:AlphaReplace_C 10863:$_3::__invoke\28unsigned\20char*\2c\20unsigned\20char\2c\20int\2c\20unsigned\20char\29 10864:$_2::__invoke\28unsigned\20char*\2c\20unsigned\20char\2c\20int\29 10865:$_1::__invoke\28unsigned\20char*\2c\20unsigned\20char\2c\20int\2c\20unsigned\20char\29 10866:$_0::__invoke\28unsigned\20char*\2c\20unsigned\20char\2c\20int\29 ================================================ FILE: legacy/dist/canvaskit/skwasm.js ================================================ var skwasm = (() => { var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; return ( function(moduleArg = {}) { function aa(){d.buffer!=h.buffer&&l();return h}function p(){d.buffer!=h.buffer&&l();return ca}function q(){d.buffer!=h.buffer&&l();return da}function t(){d.buffer!=h.buffer&&l();return ea}function v(){d.buffer!=h.buffer&&l();return fa}function ha(){d.buffer!=h.buffer&&l();return ia}var w=moduleArg,ja,ka;w.ready=new Promise((a,b)=>{ja=a;ka=b}); var la=Object.assign({},w),ma="./this.program",na=(a,b)=>{throw b;},oa="object"==typeof window,pa="function"==typeof importScripts,x="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,A=w.ENVIRONMENT_IS_PTHREAD||!1,C="";function qa(a){return w.locateFile?w.locateFile(a,C):C+a}var ra,sa,ta; if(x){var fs=require("fs"),ua=require("path");C=pa?ua.dirname(C)+"/":__dirname+"/";ra=(b,c)=>{b=b.startsWith("file://")?new URL(b):ua.normalize(b);return fs.readFileSync(b,c?void 0:"utf8")};ta=b=>{b=ra(b,!0);b.buffer||(b=new Uint8Array(b));return b};sa=(b,c,e,f=!0)=>{b=b.startsWith("file://")?new URL(b):ua.normalize(b);fs.readFile(b,f?void 0:"utf8",(g,k)=>{g?e(g):c(f?k.buffer:k)})};!w.thisProgram&&1{process.exitCode= b;throw c;};w.inspect=()=>"[Emscripten Module object]";let a;try{a=require("worker_threads")}catch(b){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),b;}global.Worker=a.Worker}else if(oa||pa)pa?C=self.location.href:"undefined"!=typeof document&&document.currentScript&&(C=document.currentScript.src),_scriptDir&&(C=_scriptDir),0!==C.indexOf("blob:")?C=C.substr(0,C.replace(/[?#].*/,"").lastIndexOf("/")+1):C="",x||(ra=a=>{var b= new XMLHttpRequest;b.open("GET",a,!1);b.send(null);return b.responseText},pa&&(ta=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),sa=(a,b,c)=>{var e=new XMLHttpRequest;e.open("GET",a,!0);e.responseType="arraybuffer";e.onload=()=>{200==e.status||0==e.status&&e.response?b(e.response):c()};e.onerror=c;e.send(null)});x&&"undefined"==typeof performance&&(global.performance=require("perf_hooks").performance); var va=console.log.bind(console),wa=console.error.bind(console);x&&(va=(...a)=>fs.writeSync(1,a.join(" ")+"\n"),wa=(...a)=>fs.writeSync(2,a.join(" ")+"\n"));var xa=w.print||va,D=w.printErr||wa;Object.assign(w,la);la=null;w.thisProgram&&(ma=w.thisProgram);w.quit&&(na=w.quit);var ya;w.wasmBinary&&(ya=w.wasmBinary);var noExitRuntime=w.noExitRuntime||!0;"object"!=typeof WebAssembly&&za("no native wasm support detected");var d,F,Aa,Ba=!1,Ca,h,ca,Da,Ea,da,ea,fa,ia; function l(){var a=d.buffer;w.HEAP8=h=new Int8Array(a);w.HEAP16=Da=new Int16Array(a);w.HEAP32=da=new Int32Array(a);w.HEAPU8=ca=new Uint8Array(a);w.HEAPU16=Ea=new Uint16Array(a);w.HEAPU32=ea=new Uint32Array(a);w.HEAPF32=fa=new Float32Array(a);w.HEAPF64=ia=new Float64Array(a)}var Fa=w.INITIAL_MEMORY||16777216;65536<=Fa||za("INITIAL_MEMORY should be larger than STACK_SIZE, was "+Fa+"! (STACK_SIZE=65536)"); if(A)d=w.wasmMemory;else if(w.wasmMemory)d=w.wasmMemory;else if(d=new WebAssembly.Memory({initial:Fa/65536,maximum:32768,shared:!0}),!(d.buffer instanceof SharedArrayBuffer))throw D("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),x&&D("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)"), Error("bad memory");l();Fa=d.buffer.byteLength;var G,Ga=[],Ha=[],Ia=[],Ja=0;function Ka(){return noExitRuntime||0{if(!b.ok)throw"failed to load wasm binary file at '"+a+"'";return b.arrayBuffer()}).catch(()=>Ra(a));if(sa)return new Promise((b,c)=>{sa(a,e=>b(new Uint8Array(e)),c)})}return Promise.resolve().then(()=>Ra(a))}function Ta(a,b,c){return Sa(a).then(e=>WebAssembly.instantiate(e,b)).then(e=>e).then(c,e=>{D("failed to asynchronously prepare wasm: "+e);za(e)})} function Ua(a,b){var c=Qa;return ya||"function"!=typeof WebAssembly.instantiateStreaming||Pa(c)||c.startsWith("file://")||x||"function"!=typeof fetch?Ta(c,a,b):fetch(c,{credentials:"same-origin"}).then(e=>WebAssembly.instantiateStreaming(e,a).then(b,function(f){D("wasm streaming compile failed: "+f);D("falling back to ArrayBuffer instantiation");return Ta(c,a,b)}))}function Va(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a} function Wa(a){a.terminate();a.onmessage=()=>{}}function Xa(a){(a=I.g[a])||za();I.Aa(a)}function Ya(a){var b=I.ma();if(!b)return 6;I.u.push(b);I.g[a.m]=b;b.m=a.m;var c={cmd:"run",start_routine:a.Ba,arg:a.ka,pthread_ptr:a.m};c.D=a.D;c.S=a.S;x&&b.unref();b.postMessage(c,a.Ha);return 0} var Za="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,$a=(a,b,c)=>{var e=b+c;for(c=b;a[c]&&!(c>=e);)++c;if(16f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else e+=String.fromCharCode(f)}return e}, J=(a,b)=>a?$a(p(),a,b):"";function ab(a){if(A)return K(1,1,a);Ca=a;if(!Ka()){I.Ca();if(w.onExit)w.onExit(a);Ba=!0}na(a,new Va(a))} var cb=a=>{Ca=a;if(A)throw bb(a),"unwind";ab(a)},I={o:[],u:[],ha:[],g:{},R:function(){A?I.ra():I.qa()},qa:function(){for(var a=1;a--;)I.X();Ga.unshift(()=>{Na();I.ta(()=>Oa())})},ra:function(){I.receiveObjectTransfer=I.za;I.threadInitTLS=I.ga;I.setExitStatus=I.fa;noExitRuntime=!1},fa:function(a){Ca=a},Oa:["$terminateWorker"],Ca:function(){for(var a of I.u)Wa(a);for(a of I.o)Wa(a);I.o=[];I.u=[];I.g=[]},Aa:function(a){var b=a.m;delete I.g[b];I.o.push(a);I.u.splice(I.u.indexOf(a),1);a.m=0;db(b)},za:function(a){"undefined"!= typeof eb&&(Object.assign(L,a.S),!w.canvas&&a.D&&L[a.D]&&(w.canvas=L[a.D].F,w.canvas.id=a.D))},ga:function(){I.ha.forEach(a=>a())},ba:a=>new Promise(b=>{a.onmessage=g=>{g=g.data;var k=g.cmd;if(g.targetThread&&g.targetThread!=fb()){var n=I.g[g.Na];n?n.postMessage(g,g.transferList):D('Internal error! Worker sent a message "'+k+'" to target pthread '+g.targetThread+", but that thread no longer exists!")}else if("checkMailbox"===k)gb();else if("spawnThread"===k)Ya(g);else if("cleanupThread"===k)Xa(g.thread); else if("killThread"===k)g=g.thread,k=I.g[g],delete I.g[g],Wa(k),db(g),I.u.splice(I.u.indexOf(k),1),k.m=0;else if("cancelThread"===k)I.g[g.thread].postMessage({cmd:"cancel"});else if("loaded"===k)a.loaded=!0,x&&!a.m&&a.unref(),b(a);else if("alert"===k)alert("Thread "+g.threadId+": "+g.text);else if("setimmediate"===g.target)a.postMessage(g);else if("callHandler"===k)w[g.handler](...g.args);else k&&D("worker sent an unknown command "+k)};a.onerror=g=>{D("worker sent an error! "+g.filename+":"+g.lineno+ ": "+g.message);throw g;};x&&(a.on("message",function(g){a.onmessage({data:g})}),a.on("error",function(g){a.onerror(g)}));var c=[],e=["onExit","onAbort","print","printErr"],f;for(f of e)w.hasOwnProperty(f)&&c.push(f);a.postMessage({cmd:"load",handlers:c,urlOrBlob:w.mainScriptUrlOrBlob||_scriptDir,wasmMemory:d,wasmModule:Aa})}),ta:function(a){if(A)return a();Promise.all(I.o.map(I.ba)).then(a)},X:function(){var a=qa("skwasm.worker.js");a=new Worker(a);I.o.push(a)},ma:function(){0==I.o.length&&(I.X(), I.ba(I.o[0]));return I.o.pop()}};w.PThread=I;var hb=a=>{for(;0>2];a=q()[a+56>>2];ib(b,b-a);M(b)};function bb(a){if(A)return K(2,0,a);cb(a)}w.invokeEntryPoint=function(a,b){a=G.get(a)(b);Ka()?I.fa(a):jb(a)};function kb(a){this.C=a-24;this.ua=function(b){t()[this.C+4>>2]=b};this.sa=function(b){t()[this.C+8>>2]=b};this.R=function(b,c){this.na();this.ua(b);this.sa(c)};this.na=function(){t()[this.C+16>>2]=0}}var lb=0,mb=0; function nb(a,b,c,e){return A?K(3,1,a,b,c,e):ob(a,b,c,e)} function ob(a,b,c,e){if("undefined"==typeof SharedArrayBuffer)return D("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var f=[],g=0,k=b?t()[b+40>>2]:0;4294967295==k?k="#canvas":k&&(k=J(k).trim());k&&(k=k.split(","));var n={},r=w.canvas?w.canvas.id:"",u;for(u in k){var y=k[u].trim();try{if("#canvas"==y){if(!w.canvas){D('pthread_create: could not find canvas with ID "'+y+'" to transfer to thread!');g=28;break}y=w.canvas.id}if(L[y]){var V=L[y];L[y]=null;w.canvas instanceof OffscreenCanvas&&y===w.canvas.id&&(w.canvas=null)}else if(!A){var E=w.canvas&&w.canvas.id===y?w.canvas:document.querySelector(y);if(!E){D('pthread_create: could not find canvas with ID "'+y+'" to transfer to thread!');g=28;break}if(E.Y){D('pthread_create: cannot transfer canvas with ID "'+y+'" to thread, since the current thread does not have control over it!');g=63;break}if(E.transferControlToOffscreen)E.h||(E.h=pb(12),q()[E.h>>2]=E.width,q()[E.h+4>>2]=E.height,q()[E.h+8>>2]=0),V={F:E.transferControlToOffscreen(), h:E.h,id:E.id},E.Y=!0;else return D('pthread_create: cannot transfer control of canvas "'+y+'" to pthread, because current browser does not support OffscreenCanvas!'),D("pthread_create: Build with -sOFFSCREEN_FRAMEBUFFER to enable fallback proxying of GL commands from pthread to main thread."),52}V&&(f.push(V.F),n[V.id]=V)}catch(m){return D('pthread_create: failed to transfer control of canvas "'+y+'" to OffscreenCanvas! Error: '+m),28}}if(A&&(0===f.length||g))return nb(a,b,c,e);if(g)return g;for(E of Object.values(n))q()[E.h+ 8>>2]=a;a={Ba:c,m:a,ka:e,D:r,S:n,Ha:f};return A?(a.Ja="spawnThread",postMessage(a,f),0):Ya(a)}function qb(a,b,c){return A?K(4,1,a,b,c):0}function rb(a,b){if(A)return K(5,1,a,b)}function sb(a,b,c){return A?K(6,1,a,b,c):0}function tb(a,b,c,e){if(A)return K(7,1,a,b,c,e)}var ub=a=>{if(!Ba)try{if(a(),!Ka())try{A?jb(Ca):cb(Ca)}catch(b){b instanceof Va||"unwind"==b||na(1,b)}}catch(b){b instanceof Va||"unwind"==b||na(1,b)}}; function vb(a){"function"===typeof Atomics.Ia&&(Atomics.Ia(q(),a>>2,a).value.then(gb),a+=128,Atomics.store(q(),a>>2,1))}w.__emscripten_thread_mailbox_await=vb;function gb(){var a=fb();a&&(vb(a),ub(()=>wb()))}w.checkMailbox=gb; var xb=a=>{var b=N();a=a();M(b);return a},yb=a=>{for(var b=0,c=0;c=e?b++:2047>=e?b+=2:55296<=e&&57343>=e?(b+=4,++c):b+=3}return b},zb=(a,b,c,e)=>{if(!(0=k){var n=a.charCodeAt(++g);k=65536+((k&1023)<<10)|n&1023}if(127>=k){if(c>=e)break;b[c++]=k}else{if(2047>=k){if(c+1>=e)break;b[c++]=192|k>>6}else{if(65535>=k){if(c+2>=e)break;b[c++]=224|k>>12}else{if(c+3>=e)break; b[c++]=240|k>>18;b[c++]=128|k>>12&63}b[c++]=128|k>>6&63}b[c++]=128|k&63}}b[c]=0;return c-f},Ab=a=>{var b=yb(a)+1,c=pb(b);c&&zb(a,p(),c,b);return c};function Bb(a,b,c,e){b=b?J(b):"";xb(function(){var f=Cb(12),g=0;b&&(g=Ab(b));q()[f>>2]=g;q()[f+4>>2]=c;q()[f+8>>2]=e;Db(a,654311424,0,g,f)})} function Eb(a){var b=a.getExtension("ANGLE_instanced_arrays");b&&(a.vertexAttribDivisor=function(c,e){b.vertexAttribDivisorANGLE(c,e)},a.drawArraysInstanced=function(c,e,f,g){b.drawArraysInstancedANGLE(c,e,f,g)},a.drawElementsInstanced=function(c,e,f,g,k){b.drawElementsInstancedANGLE(c,e,f,g,k)})} function Fb(a){var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=function(){return b.createVertexArrayOES()},a.deleteVertexArray=function(c){b.deleteVertexArrayOES(c)},a.bindVertexArray=function(c){b.bindVertexArrayOES(c)},a.isVertexArray=function(c){return b.isVertexArrayOES(c)})}function Gb(a){var b=a.getExtension("WEBGL_draw_buffers");b&&(a.drawBuffers=function(c,e){b.drawBuffersWEBGL(c,e)})} function Hb(a){a.Z=a.getExtension("WEBGL_draw_instanced_base_vertex_base_instance")}function Ib(a){a.ea=a.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance")}function Jb(a){a.Ma=a.getExtension("WEBGL_multi_draw")}var Kb=1,Lb=[],O=[],Mb=[],Nb=[],P=[],Q=[],Ob=[],Pb={},L={},R=[],Qb=[],Rb={},Sb={},Tb=4;function S(a){Ub||(Ub=a)}function Vb(a){for(var b=Kb++,c=a.length;c>2]=fb();var e={handle:c,attributes:b,version:b.da,s:a};a.canvas&&(a.canvas.I=e);Pb[c]=e;("undefined"==typeof b.aa||b.aa)&&Yb(e);return c} function Yb(a){a||(a=T);if(!a.pa){a.pa=!0;var b=a.s;Eb(b);Fb(b);Gb(b);Hb(b);Ib(b);2<=a.version&&(b.$=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.$)b.$=b.getExtension("EXT_disjoint_timer_query");Jb(b);(b.getSupportedExtensions()||[]).forEach(function(c){c.includes("lose_context")||c.includes("debug")||b.getExtension(c)})}}var eb={},Ub,T; function Zb(a){a=2>2]=b,q()[e.h+4>>2]=c);if(e.F||!e.Y)e.F&&(e=e.F),a=!1,e.I&&e.I.s&&(a=e.I.s.getParameter(2978),a=0===a[0]&&0===a[1]&&a[2]===e.width&&a[3]===e.height),e.width=b,e.height=c,a&&e.I.s.viewport(0,0,b,c);else return e.h?(e=q()[e.h+8>>2],Bb(e,a,b,c),1):-4;return 0} function ac(a,b,c){return A?K(8,1,a,b,c):$b(a,b,c)}function bc(a,b,c,e,f,g,k,n){return A?K(9,1,a,b,c,e,f,g,k,n):-52}function cc(a,b,c,e,f,g,k){if(A)return K(10,1,a,b,c,e,f,g,k)}function dc(a,b){U.bindFramebuffer(a,Mb[b])}function ec(a){U.clear(a)}function fc(a,b,c,e){U.clearColor(a,b,c,e)}function gc(a){U.clearStencil(a)} function hc(a,b,c){if(b){var e=void 0;switch(a){case 36346:e=1;break;case 36344:0!=c&&1!=c&&S(1280);return;case 34814:case 36345:e=0;break;case 34466:var f=U.getParameter(34467);e=f?f.length:0;break;case 33309:if(2>T.version){S(1282);return}e=2*(U.getSupportedExtensions()||[]).length;break;case 33307:case 33308:if(2>T.version){S(1280);return}e=33307==a?3:0}if(void 0===e)switch(f=U.getParameter(a),typeof f){case "number":e=f;break;case "boolean":e=f?1:0;break;case "string":S(1280);return;case "object":if(null=== f)switch(a){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:e=0;break;default:S(1280);return}else{if(f instanceof Float32Array||f instanceof Uint32Array||f instanceof Int32Array||f instanceof Array){for(a=0;a>2]=f[a];break;case 2:v()[b+4*a>>2]=f[a];break;case 4:aa()[b+a>>0]=f[a]?1:0}return}try{e=f.name| 0}catch(g){S(1280);D("GL_INVALID_ENUM in glGet"+c+"v: Unknown object returned from WebGL getParameter("+a+")! (error: "+g+")");return}}break;default:S(1280);D("GL_INVALID_ENUM in glGet"+c+"v: Native code calling glGet"+c+"v("+a+") and it returns "+f+" of type "+typeof f+"!");return}switch(c){case 1:c=e;t()[b>>2]=c;t()[b+4>>2]=(c-t()[b>>2])/4294967296;break;case 0:q()[b>>2]=e;break;case 2:v()[b>>2]=e;break;case 4:aa()[b>>0]=e?1:0}}else S(1281)}function ic(a,b){hc(a,b,0)} function K(a,b){var c=arguments.length-2,e=arguments;return xb(()=>{for(var f=Cb(8*c),g=f>>3,k=0;k{if(!mc){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:ma||"./this.program"},b;for(b in lc)void 0===lc[b]?delete a[b]:a[b]=lc[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);mc=c}return mc},mc; function oc(a,b){if(A)return K(11,1,a,b);var c=0;nc().forEach(function(e,f){var g=b+c;f=t()[a+4*f>>2]=g;for(g=0;g>0]=e.charCodeAt(g);aa()[f>>0]=0;c+=e.length+1});return 0}function pc(a,b){if(A)return K(12,1,a,b);var c=nc();t()[a>>2]=c.length;var e=0;c.forEach(function(f){e+=f.length+1});t()[b>>2]=e;return 0}function qc(a){return A?K(13,1,a):52}function rc(a,b,c,e,f,g){return A?K(14,1,a,b,c,e,f,g):52}function sc(a,b,c,e){return A?K(15,1,a,b,c,e):52} function tc(a,b,c,e,f){return A?K(16,1,a,b,c,e,f):70}var uc=[null,[],[]];function vc(a,b,c,e){if(A)return K(17,1,a,b,c,e);for(var f=0,g=0;g>2],n=t()[b+4>>2];b+=8;for(var r=0;r>2]=f;return 0}function wc(a){U.bindVertexArray(Ob[a])}function xc(a,b){for(var c=0;c>2];U.deleteVertexArray(Ob[e]);Ob[e]=null}}var yc=[]; function zc(a,b,c,e){U.drawElements(a,b,c,e)}function Ac(a,b,c,e){for(var f=0;f>2]=k}}function Bc(a,b){Ac(a,b,"createVertexArray",Ob)}function Cc(a){return"]"==a.slice(-1)&&a.lastIndexOf("[")}function Dc(a){a-=5120;0==a?a=aa():1==a?a=p():2==a?(d.buffer!=h.buffer&&l(),a=Da):4==a?a=q():6==a?a=v():5==a||28922==a||28520==a||30779==a||30782==a?a=t():(d.buffer!=h.buffer&&l(),a=Ea);return a} function Ec(a,b,c,e,f){a=Dc(a);var g=31-Math.clz32(a.BYTES_PER_ELEMENT),k=Tb;return a.subarray(f>>g,f+e*(c*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[b-6402]||1)*(1<>g)}function W(a){var b=U.la;if(b){var c=b.H[a];"number"==typeof c&&(b.H[a]=c=U.getUniformLocation(b,b.ia[a]+(00===a%4&&(0!==a%100||0===a%400),Tc=[31,29,31,30,31,30,31,31,30,31,30,31],Uc=[31,28,31,30,31,30,31,31,30,31,30,31];function Vc(a){var b=Array(yb(a)+1);zb(a,b,0,b.length);return b} var Wc=(a,b)=>{aa().set(a,b)},Xc=(a,b,c,e)=>{function f(m,z,B){for(m="number"==typeof m?m.toString():m||"";m.lengthKc?-1:0ba-m.getDate())z-=ba-m.getDate()+1,m.setDate(1),11>B?m.setMonth(B+1):(m.setMonth(0),m.setFullYear(m.getFullYear()+1));else{m.setDate(m.getDate()+z);break}}B=new Date(m.getFullYear()+1,0,4);z=n(new Date(m.getFullYear(), 0,4));B=n(B);return 0>=k(z,m)?0>=k(B,m)?m.getFullYear()+1:m.getFullYear():m.getFullYear()-1}var u=q()[e+40>>2];e={Fa:q()[e>>2],Ea:q()[e+4>>2],M:q()[e+8>>2],V:q()[e+12>>2],N:q()[e+16>>2],A:q()[e+20>>2],l:q()[e+24>>2],v:q()[e+28>>2],Pa:q()[e+32>>2],Da:q()[e+36>>2],Ga:u?J(u):""};c=J(c);u={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y", "%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var y in u)c=c.replace(new RegExp(y,"g"),u[y]);var V="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),E="January February March April May June July August September October November December".split(" ");u={"%a":m=>V[m.l].substring(0,3),"%A":m=>V[m.l],"%b":m=>E[m.N].substring(0,3),"%B":m=>E[m.N],"%C":m=>g((m.A+1900)/100| 0,2),"%d":m=>g(m.V,2),"%e":m=>f(m.V,2," "),"%g":m=>r(m).toString().substring(2),"%G":m=>r(m),"%H":m=>g(m.M,2),"%I":m=>{m=m.M;0==m?m=12:12{for(var z=0,B=0;B<=m.N-1;z+=(Sc(m.A+1900)?Tc:Uc)[B++]);return g(m.V+z,3)},"%m":m=>g(m.N+1,2),"%M":m=>g(m.Ea,2),"%n":()=>"\n","%p":m=>0<=m.M&&12>m.M?"AM":"PM","%S":m=>g(m.Fa,2),"%t":()=>"\t","%u":m=>m.l||7,"%U":m=>g(Math.floor((m.v+7-m.l)/7),2),"%V":m=>{var z=Math.floor((m.v+7-(m.l+6)%7)/7);2>=(m.l+371-m.v-2)%7&&z++;if(z)53==z&& (B=(m.l+371-m.v)%7,4==B||3==B&&Sc(m.A)||(z=1));else{z=52;var B=(m.l+7-m.v-1)%7;(4==B||5==B&&Sc(m.A%400-1))&&z++}return g(z,2)},"%w":m=>m.l,"%W":m=>g(Math.floor((m.v+7-(m.l+6)%7)/7),2),"%y":m=>(m.A+1900).toString().substring(2),"%Y":m=>m.A+1900,"%z":m=>{m=m.Da;var z=0<=m;m=Math.abs(m)/60;return(z?"+":"-")+String("0000"+(m/60*100+m%60)).slice(-4)},"%Z":m=>m.Ga,"%%":()=>"%"};c=c.replace(/%%/g,"\x00\x00");for(y in u)c.includes(y)&&(c=c.replace(new RegExp(y,"g"),u[y](e)));c=c.replace(/\0\0/g,"%");y=Vc(c); if(y.length>b)return 0;Wc(y,a);return y.length-1},Yc=void 0,Zc=[];I.R();for(var U,Y=0;32>Y;++Y)yc.push(Array(Y));var $c=new Float32Array(288);for(Y=0;288>Y;++Y)X[Y]=$c.subarray(0,Y+1);var ad=new Int32Array(288);for(Y=0;288>Y;++Y)Fc[Y]=ad.subarray(0,Y+1); (function(){const a=new Map,b=new Map;let c;Qc=function(e,f,g){I.g[e].postMessage({G:"setAssociatedObject",T:f,object:g},[g])};Mc=function(e){return b.get(e)};Rc=function(e){I.g[e].postMessage({G:"syncTimeOrigin",timeOrigin:performance.timeOrigin})};Nc=function(e){function f({data:g}){var k=g.G;if(k)switch(k){case "syncTimeOrigin":c=performance.timeOrigin-g.timeOrigin;break;case "renderPictures":bd(g.U,g.wa,g.va,g.O,performance.now()+c);break;case "onRenderComplete":cd(g.U,g.O,{imageBitmaps:g.oa, rasterStartMilliseconds:g.ya,rasterEndMilliseconds:g.xa});break;case "setAssociatedObject":b.set(g.T,g.object);break;case "disposeAssociatedObject":g=g.T;k=b.get(g);k.close&&k.close();b.delete(g);break;default:console.warn(`unrecognized skwasm message: ${k}`)}}e?I.g[e].addEventListener("message",f):addEventListener("message",f)};Jc=function(e,f,g,k,n){I.g[e].postMessage({G:"renderPictures",U:f,wa:g,va:k,O:n})};Ic=function(e,f){e=new OffscreenCanvas(e,f);f=Wb(e);a.set(f,e);return f};Oc=function(e, f,g){e=a.get(e);e.width=f;e.height=g};Gc=function(e,f,g,k){k||(k=[]);e=a.get(e);k.push(createImageBitmap(e,0,0,f,g));return k};Pc=async function(e,f,g,k){f=f?await Promise.all(f):[];postMessage({G:"onRenderComplete",U:e,O:k,oa:f,ya:g,xa:performance.now()+c},[...f])};Hc=function(e,f,g){const k=T.s,n=k.createTexture();k.bindTexture(k.TEXTURE_2D,n);k.pixelStorei(k.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0);k.texImage2D(k.TEXTURE_2D,0,k.RGBA,f,g,0,k.RGBA,k.UNSIGNED_BYTE,e);k.pixelStorei(k.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !1);k.bindTexture(k.TEXTURE_2D,null);e=Vb(P);P[e]=n;return e};Lc=function(e,f){I.g[e].postMessage({G:"disposeAssociatedObject",T:f})}})(); var dd=[null,ab,bb,nb,qb,rb,sb,tb,ac,bc,cc,oc,pc,qc,rc,sc,tc,vc],qd={__cxa_throw:function(a,b,c){(new kb(a)).R(b,c);lb=a;mb++;throw lb;},__emscripten_init_main_thread_js:function(a){ed(a,!pa,1,!oa,65536,!1);I.ga()},__emscripten_thread_cleanup:function(a){A?postMessage({cmd:"cleanupThread",thread:a}):Xa(a)},__pthread_create_js:ob,__syscall_fcntl64:qb,__syscall_fstat64:rb,__syscall_ioctl:sb,__syscall_openat:tb,_emscripten_get_now_is_monotonic:()=>!0,_emscripten_notify_mailbox_postmessage:function(a, b){a==b?setTimeout(()=>gb()):A?postMessage({targetThread:a,cmd:"checkMailbox"}):(a=I.g[a])&&a.postMessage({cmd:"checkMailbox"})},_emscripten_set_offscreencanvas_size:function(a,b,c){return Zb(a)?$b(a,b,c):ac(a,b,c)},_emscripten_thread_mailbox_await:vb,_emscripten_thread_set_strongref:function(a){x&&I.g[a].ref()},_emscripten_throw_longjmp:()=>{throw Infinity;},_mmap_js:bc,_munmap_js:cc,abort:()=>{za("")},emscripten_check_blocking_allowed:function(){},emscripten_exit_with_live_runtime:()=>{Ja+=1;throw"unwind"; },emscripten_get_now:()=>performance.timeOrigin+performance.now(),emscripten_glBindFramebuffer:dc,emscripten_glClear:ec,emscripten_glClearColor:fc,emscripten_glClearStencil:gc,emscripten_glGetIntegerv:ic,emscripten_receive_on_main_thread_js:function(a,b,c,e){I.La=b;kc.length=c;b=e>>3;for(e=0;e{var b=p().length;a>>>=0;if(a<=b||2147483648=c;c*=2){var e=b*(1+.2/c);e=Math.min(e,a+100663296);var f=Math; e=Math.max(a,e);a:{f=f.min.call(f,2147483648,e+(65536-e%65536)%65536)-d.buffer.byteLength+65535>>>16;try{d.grow(f);l();var g=1;break a}catch(k){}g=void 0}if(g)return!0}return!1},emscripten_webgl_enable_extension:function(a,b){a=Pb[a];b=J(b);b.startsWith("GL_")&&(b=b.substr(3));"ANGLE_instanced_arrays"==b&&Eb(U);"OES_vertex_array_object"==b&&Fb(U);"WEBGL_draw_buffers"==b&&Gb(U);"WEBGL_draw_instanced_base_vertex_base_instance"==b&&Hb(U);"WEBGL_multi_draw_instanced_base_vertex_base_instance"==b&&Ib(U); "WEBGL_multi_draw"==b&&Jb(U);return!!a.s.getExtension(b)},emscripten_webgl_get_current_context:function(){return T?T.handle:0},emscripten_webgl_make_context_current:function(a){T=Pb[a];w.Ka=U=T&&T.s;return!a||U?0:-5},environ_get:oc,environ_sizes_get:pc,exit:cb,fd_close:qc,fd_pread:rc,fd_read:sc,fd_seek:tc,fd_write:vc,glActiveTexture:function(a){U.activeTexture(a)},glAttachShader:function(a,b){U.attachShader(O[a],Q[b])},glBindAttribLocation:function(a,b,c){U.bindAttribLocation(O[a],b,J(c))},glBindBuffer:function(a, b){35051==a?U.P=b:35052==a&&(U.B=b);U.bindBuffer(a,Lb[b])},glBindFramebuffer:dc,glBindRenderbuffer:function(a,b){U.bindRenderbuffer(a,Nb[b])},glBindSampler:function(a,b){U.bindSampler(a,R[b])},glBindTexture:function(a,b){U.bindTexture(a,P[b])},glBindVertexArray:wc,glBindVertexArrayOES:wc,glBlendColor:function(a,b,c,e){U.blendColor(a,b,c,e)},glBlendEquation:function(a){U.blendEquation(a)},glBlendFunc:function(a,b){U.blendFunc(a,b)},glBlitFramebuffer:function(a,b,c,e,f,g,k,n,r,u){U.blitFramebuffer(a, b,c,e,f,g,k,n,r,u)},glBufferData:function(a,b,c,e){2<=T.version?c&&b?U.bufferData(a,p(),e,c,b):U.bufferData(a,b,e):U.bufferData(a,c?p().subarray(c,c+b):b,e)},glBufferSubData:function(a,b,c,e){2<=T.version?c&&U.bufferSubData(a,b,p(),e,c):U.bufferSubData(a,b,p().subarray(e,e+c))},glCheckFramebufferStatus:function(a){return U.checkFramebufferStatus(a)},glClear:ec,glClearColor:fc,glClearStencil:gc,glClientWaitSync:function(a,b,c,e){return U.clientWaitSync(Qb[a],b,(c>>>0)+4294967296*e)},glColorMask:function(a, b,c,e){U.colorMask(!!a,!!b,!!c,!!e)},glCompileShader:function(a){U.compileShader(Q[a])},glCompressedTexImage2D:function(a,b,c,e,f,g,k,n){2<=T.version?U.B||!k?U.compressedTexImage2D(a,b,c,e,f,g,k,n):U.compressedTexImage2D(a,b,c,e,f,g,p(),n,k):U.compressedTexImage2D(a,b,c,e,f,g,n?p().subarray(n,n+k):null)},glCompressedTexSubImage2D:function(a,b,c,e,f,g,k,n,r){2<=T.version?U.B||!n?U.compressedTexSubImage2D(a,b,c,e,f,g,k,n,r):U.compressedTexSubImage2D(a,b,c,e,f,g,k,p(),r,n):U.compressedTexSubImage2D(a, b,c,e,f,g,k,r?p().subarray(r,r+n):null)},glCopyBufferSubData:function(a,b,c,e,f){U.copyBufferSubData(a,b,c,e,f)},glCopyTexSubImage2D:function(a,b,c,e,f,g,k,n){U.copyTexSubImage2D(a,b,c,e,f,g,k,n)},glCreateProgram:function(){var a=Vb(O),b=U.createProgram();b.name=a;b.L=b.J=b.K=0;b.W=1;O[a]=b;return a},glCreateShader:function(a){var b=Vb(Q);Q[b]=U.createShader(a);return b},glCullFace:function(a){U.cullFace(a)},glDeleteBuffers:function(a,b){for(var c=0;c>2],f=Lb[e];f&&(U.deleteBuffer(f), f.name=0,Lb[e]=null,e==U.P&&(U.P=0),e==U.B&&(U.B=0))}},glDeleteFramebuffers:function(a,b){for(var c=0;c>2],f=Mb[e];f&&(U.deleteFramebuffer(f),f.name=0,Mb[e]=null)}},glDeleteProgram:function(a){if(a){var b=O[a];b?(U.deleteProgram(b),b.name=0,O[a]=null):S(1281)}},glDeleteRenderbuffers:function(a,b){for(var c=0;c>2],f=Nb[e];f&&(U.deleteRenderbuffer(f),f.name=0,Nb[e]=null)}},glDeleteSamplers:function(a,b){for(var c=0;c>2],f=R[e]; f&&(U.deleteSampler(f),f.name=0,R[e]=null)}},glDeleteShader:function(a){if(a){var b=Q[a];b?(U.deleteShader(b),Q[a]=null):S(1281)}},glDeleteSync:function(a){if(a){var b=Qb[a];b?(U.deleteSync(b),b.name=0,Qb[a]=null):S(1281)}},glDeleteTextures:function(a,b){for(var c=0;c>2],f=P[e];f&&(U.deleteTexture(f),f.name=0,P[e]=null)}},glDeleteVertexArrays:xc,glDeleteVertexArraysOES:xc,glDepthMask:function(a){U.depthMask(!!a)},glDisable:function(a){U.disable(a)},glDisableVertexAttribArray:function(a){U.disableVertexAttribArray(a)}, glDrawArrays:function(a,b,c){U.drawArrays(a,b,c)},glDrawArraysInstanced:function(a,b,c,e){U.drawArraysInstanced(a,b,c,e)},glDrawArraysInstancedBaseInstanceWEBGL:function(a,b,c,e,f){U.Z.drawArraysInstancedBaseInstanceWEBGL(a,b,c,e,f)},glDrawBuffers:function(a,b){for(var c=yc[a],e=0;e>2];U.drawBuffers(c)},glDrawElements:zc,glDrawElementsInstanced:function(a,b,c,e,f){U.drawElementsInstanced(a,b,c,e,f)},glDrawElementsInstancedBaseVertexBaseInstanceWEBGL:function(a,b,c,e,f,g,k){U.Z.drawElementsInstancedBaseVertexBaseInstanceWEBGL(a, b,c,e,f,g,k)},glDrawRangeElements:function(a,b,c,e,f,g){zc(a,e,f,g)},glEnable:function(a){U.enable(a)},glEnableVertexAttribArray:function(a){U.enableVertexAttribArray(a)},glFenceSync:function(a,b){return(a=U.fenceSync(a,b))?(b=Vb(Qb),a.name=b,Qb[b]=a,b):0},glFinish:function(){U.finish()},glFlush:function(){U.flush()},glFramebufferRenderbuffer:function(a,b,c,e){U.framebufferRenderbuffer(a,b,c,Nb[e])},glFramebufferTexture2D:function(a,b,c,e,f){U.framebufferTexture2D(a,b,c,P[e],f)},glFrontFace:function(a){U.frontFace(a)}, glGenBuffers:function(a,b){Ac(a,b,"createBuffer",Lb)},glGenFramebuffers:function(a,b){Ac(a,b,"createFramebuffer",Mb)},glGenRenderbuffers:function(a,b){Ac(a,b,"createRenderbuffer",Nb)},glGenSamplers:function(a,b){Ac(a,b,"createSampler",R)},glGenTextures:function(a,b){Ac(a,b,"createTexture",P)},glGenVertexArrays:Bc,glGenVertexArraysOES:Bc,glGenerateMipmap:function(a){U.generateMipmap(a)},glGetBufferParameteriv:function(a,b,c){c?q()[c>>2]=U.getBufferParameter(a,b):S(1281)},glGetError:function(){var a= U.getError()||Ub;Ub=0;return a},glGetFloatv:function(a,b){hc(a,b,2)},glGetFramebufferAttachmentParameteriv:function(a,b,c,e){a=U.getFramebufferAttachmentParameter(a,b,c);if(a instanceof WebGLRenderbuffer||a instanceof WebGLTexture)a=a.name|0;q()[e>>2]=a},glGetIntegerv:ic,glGetProgramInfoLog:function(a,b,c,e){a=U.getProgramInfoLog(O[a]);null===a&&(a="(unknown error)");var f;0>2]=b)},glGetProgramiv:function(a,b,c){if(c)if(a>=Kb)S(1281);else if(a=O[a],35716==b)a= U.getProgramInfoLog(a),null===a&&(a="(unknown error)"),q()[c>>2]=a.length+1;else if(35719==b){if(!a.L)for(b=0;b>2]=a.L}else if(35722==b){if(!a.J)for(b=0;b>2]=a.J}else if(35381==b){if(!a.K)for(b=0;b>2]=a.K}else q()[c>> 2]=U.getProgramParameter(a,b);else S(1281)},glGetRenderbufferParameteriv:function(a,b,c){c?q()[c>>2]=U.getRenderbufferParameter(a,b):S(1281)},glGetShaderInfoLog:function(a,b,c,e){a=U.getShaderInfoLog(Q[a]);null===a&&(a="(unknown error)");var f;0>2]=b)},glGetShaderPrecisionFormat:function(a,b,c,e){a=U.getShaderPrecisionFormat(a,b);q()[c>>2]=a.rangeMin;q()[c+4>>2]=a.rangeMax;q()[e>>2]=a.precision},glGetShaderiv:function(a,b,c){c?35716==b?(a=U.getShaderInfoLog(Q[a]), null===a&&(a="(unknown error)"),a=a?a.length+1:0,q()[c>>2]=a):35720==b?(a=(a=U.getShaderSource(Q[a]))?a.length+1:0,q()[c>>2]=a):q()[c>>2]=U.getShaderParameter(Q[a],b):S(1281)},glGetString:function(a){var b=Rb[a];if(!b){switch(a){case 7939:b=U.getSupportedExtensions()||[];b=b.concat(b.map(function(e){return"GL_"+e}));b=Ab(b.join(" "));break;case 7936:case 7937:case 37445:case 37446:(b=U.getParameter(a))||S(1280);b=b&&Ab(b);break;case 7938:b=U.getParameter(7938);b=2<=T.version?"OpenGL ES 3.0 ("+b+")": "OpenGL ES 2.0 ("+b+")";b=Ab(b);break;case 35724:b=U.getParameter(35724);var c=b.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==c&&(3==c[1].length&&(c[1]+="0"),b="OpenGL ES GLSL ES "+c[1]+" ("+b+")");b=Ab(b);break;default:S(1280)}Rb[a]=b}return b},glGetStringi:function(a,b){if(2>T.version)return S(1282),0;var c=Sb[a];if(c)return 0>b||b>=c.length?(S(1281),0):c[b];switch(a){case 7939:return c=U.getSupportedExtensions()||[],c=c.concat(c.map(function(e){return"GL_"+e})),c=c.map(function(e){return Ab(e)}), c=Sb[a]=c,0>b||b>=c.length?(S(1281),0):c[b];default:return S(1280),0}},glGetUniformLocation:function(a,b){b=J(b);if(a=O[a]){var c=a,e=c.H,f=c.ja,g;if(!e)for(c.H=e={},c.ia={},g=0;g>>0,f=b.slice(0,g));if((f=a.ja[f])&&e>2];U.invalidateFramebuffer(a,e)},glInvalidateSubFramebuffer:function(a,b,c,e,f,g,k){for(var n=yc[b],r=0;r>2];U.invalidateSubFramebuffer(a,n,e,f,g,k)},glIsSync:function(a){return U.isSync(Qb[a])},glIsTexture:function(a){return(a=P[a])?U.isTexture(a):0},glLineWidth:function(a){U.lineWidth(a)},glLinkProgram:function(a){a=O[a];U.linkProgram(a);a.H=0;a.ja={}},glMultiDrawArraysInstancedBaseInstanceWEBGL:function(a, b,c,e,f,g){U.ea.multiDrawArraysInstancedBaseInstanceWEBGL(a,q(),b>>2,q(),c>>2,q(),e>>2,t(),f>>2,g)},glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL:function(a,b,c,e,f,g,k,n){U.ea.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(a,q(),b>>2,c,q(),e>>2,q(),f>>2,q(),g>>2,t(),k>>2,n)},glPixelStorei:function(a,b){3317==a&&(Tb=b);U.pixelStorei(a,b)},glReadBuffer:function(a){U.readBuffer(a)},glReadPixels:function(a,b,c,e,f,g,k){if(2<=T.version)if(U.P)U.readPixels(a,b,c,e,f,g,k);else{var n=Dc(g); U.readPixels(a,b,c,e,f,g,n,k>>31-Math.clz32(n.BYTES_PER_ELEMENT))}else(k=Ec(g,f,c,e,k))?U.readPixels(a,b,c,e,f,g,k):S(1280)},glRenderbufferStorage:function(a,b,c,e){U.renderbufferStorage(a,b,c,e)},glRenderbufferStorageMultisample:function(a,b,c,e,f){U.renderbufferStorageMultisample(a,b,c,e,f)},glSamplerParameterf:function(a,b,c){U.samplerParameterf(R[a],b,c)},glSamplerParameteri:function(a,b,c){U.samplerParameteri(R[a],b,c)},glSamplerParameteriv:function(a,b,c){c=q()[c>>2];U.samplerParameteri(R[a], b,c)},glScissor:function(a,b,c,e){U.scissor(a,b,c,e)},glShaderSource:function(a,b,c,e){for(var f="",g=0;g>2]:-1;f+=J(q()[c+4*g>>2],0>k?void 0:k)}U.shaderSource(Q[a],f)},glStencilFunc:function(a,b,c){U.stencilFunc(a,b,c)},glStencilFuncSeparate:function(a,b,c,e){U.stencilFuncSeparate(a,b,c,e)},glStencilMask:function(a){U.stencilMask(a)},glStencilMaskSeparate:function(a,b){U.stencilMaskSeparate(a,b)},glStencilOp:function(a,b,c){U.stencilOp(a,b,c)},glStencilOpSeparate:function(a, b,c,e){U.stencilOpSeparate(a,b,c,e)},glTexImage2D:function(a,b,c,e,f,g,k,n,r){if(2<=T.version)if(U.B)U.texImage2D(a,b,c,e,f,g,k,n,r);else if(r){var u=Dc(n);U.texImage2D(a,b,c,e,f,g,k,n,u,r>>31-Math.clz32(u.BYTES_PER_ELEMENT))}else U.texImage2D(a,b,c,e,f,g,k,n,null);else U.texImage2D(a,b,c,e,f,g,k,n,r?Ec(n,k,e,f,r):null)},glTexParameterf:function(a,b,c){U.texParameterf(a,b,c)},glTexParameterfv:function(a,b,c){c=v()[c>>2];U.texParameterf(a,b,c)},glTexParameteri:function(a,b,c){U.texParameteri(a,b,c)}, glTexParameteriv:function(a,b,c){c=q()[c>>2];U.texParameteri(a,b,c)},glTexStorage2D:function(a,b,c,e,f){U.texStorage2D(a,b,c,e,f)},glTexSubImage2D:function(a,b,c,e,f,g,k,n,r){if(2<=T.version)if(U.B)U.texSubImage2D(a,b,c,e,f,g,k,n,r);else if(r){var u=Dc(n);U.texSubImage2D(a,b,c,e,f,g,k,n,u,r>>31-Math.clz32(u.BYTES_PER_ELEMENT))}else U.texSubImage2D(a,b,c,e,f,g,k,n,null);else u=null,r&&(u=Ec(n,k,f,g,r)),U.texSubImage2D(a,b,c,e,f,g,k,n,u)},glUniform1f:function(a,b){U.uniform1f(W(a),b)},glUniform1fv:function(a, b,c){if(2<=T.version)b&&U.uniform1fv(W(a),v(),c>>2,b);else{if(288>=b)for(var e=X[b-1],f=0;f>2];else e=v().subarray(c>>2,c+4*b>>2);U.uniform1fv(W(a),e)}},glUniform1i:function(a,b){U.uniform1i(W(a),b)},glUniform1iv:function(a,b,c){if(2<=T.version)b&&U.uniform1iv(W(a),q(),c>>2,b);else{if(288>=b)for(var e=Fc[b-1],f=0;f>2];else e=q().subarray(c>>2,c+4*b>>2);U.uniform1iv(W(a),e)}},glUniform2f:function(a,b,c){U.uniform2f(W(a),b,c)},glUniform2fv:function(a,b,c){if(2<= T.version)b&&U.uniform2fv(W(a),v(),c>>2,2*b);else{if(144>=b)for(var e=X[2*b-1],f=0;f<2*b;f+=2)e[f]=v()[c+4*f>>2],e[f+1]=v()[c+(4*f+4)>>2];else e=v().subarray(c>>2,c+8*b>>2);U.uniform2fv(W(a),e)}},glUniform2i:function(a,b,c){U.uniform2i(W(a),b,c)},glUniform2iv:function(a,b,c){if(2<=T.version)b&&U.uniform2iv(W(a),q(),c>>2,2*b);else{if(144>=b)for(var e=Fc[2*b-1],f=0;f<2*b;f+=2)e[f]=q()[c+4*f>>2],e[f+1]=q()[c+(4*f+4)>>2];else e=q().subarray(c>>2,c+8*b>>2);U.uniform2iv(W(a),e)}},glUniform3f:function(a, b,c,e){U.uniform3f(W(a),b,c,e)},glUniform3fv:function(a,b,c){if(2<=T.version)b&&U.uniform3fv(W(a),v(),c>>2,3*b);else{if(96>=b)for(var e=X[3*b-1],f=0;f<3*b;f+=3)e[f]=v()[c+4*f>>2],e[f+1]=v()[c+(4*f+4)>>2],e[f+2]=v()[c+(4*f+8)>>2];else e=v().subarray(c>>2,c+12*b>>2);U.uniform3fv(W(a),e)}},glUniform3i:function(a,b,c,e){U.uniform3i(W(a),b,c,e)},glUniform3iv:function(a,b,c){if(2<=T.version)b&&U.uniform3iv(W(a),q(),c>>2,3*b);else{if(96>=b)for(var e=Fc[3*b-1],f=0;f<3*b;f+=3)e[f]=q()[c+4*f>>2],e[f+1]=q()[c+ (4*f+4)>>2],e[f+2]=q()[c+(4*f+8)>>2];else e=q().subarray(c>>2,c+12*b>>2);U.uniform3iv(W(a),e)}},glUniform4f:function(a,b,c,e,f){U.uniform4f(W(a),b,c,e,f)},glUniform4fv:function(a,b,c){if(2<=T.version)b&&U.uniform4fv(W(a),v(),c>>2,4*b);else{if(72>=b){var e=X[4*b-1],f=v();c>>=2;for(var g=0;g<4*b;g+=4){var k=c+g;e[g]=f[k];e[g+1]=f[k+1];e[g+2]=f[k+2];e[g+3]=f[k+3]}}else e=v().subarray(c>>2,c+16*b>>2);U.uniform4fv(W(a),e)}},glUniform4i:function(a,b,c,e,f){U.uniform4i(W(a),b,c,e,f)},glUniform4iv:function(a, b,c){if(2<=T.version)b&&U.uniform4iv(W(a),q(),c>>2,4*b);else{if(72>=b)for(var e=Fc[4*b-1],f=0;f<4*b;f+=4)e[f]=q()[c+4*f>>2],e[f+1]=q()[c+(4*f+4)>>2],e[f+2]=q()[c+(4*f+8)>>2],e[f+3]=q()[c+(4*f+12)>>2];else e=q().subarray(c>>2,c+16*b>>2);U.uniform4iv(W(a),e)}},glUniformMatrix2fv:function(a,b,c,e){if(2<=T.version)b&&U.uniformMatrix2fv(W(a),!!c,v(),e>>2,4*b);else{if(72>=b)for(var f=X[4*b-1],g=0;g<4*b;g+=4)f[g]=v()[e+4*g>>2],f[g+1]=v()[e+(4*g+4)>>2],f[g+2]=v()[e+(4*g+8)>>2],f[g+3]=v()[e+(4*g+12)>>2];else f= v().subarray(e>>2,e+16*b>>2);U.uniformMatrix2fv(W(a),!!c,f)}},glUniformMatrix3fv:function(a,b,c,e){if(2<=T.version)b&&U.uniformMatrix3fv(W(a),!!c,v(),e>>2,9*b);else{if(32>=b)for(var f=X[9*b-1],g=0;g<9*b;g+=9)f[g]=v()[e+4*g>>2],f[g+1]=v()[e+(4*g+4)>>2],f[g+2]=v()[e+(4*g+8)>>2],f[g+3]=v()[e+(4*g+12)>>2],f[g+4]=v()[e+(4*g+16)>>2],f[g+5]=v()[e+(4*g+20)>>2],f[g+6]=v()[e+(4*g+24)>>2],f[g+7]=v()[e+(4*g+28)>>2],f[g+8]=v()[e+(4*g+32)>>2];else f=v().subarray(e>>2,e+36*b>>2);U.uniformMatrix3fv(W(a),!!c,f)}}, glUniformMatrix4fv:function(a,b,c,e){if(2<=T.version)b&&U.uniformMatrix4fv(W(a),!!c,v(),e>>2,16*b);else{if(18>=b){var f=X[16*b-1],g=v();e>>=2;for(var k=0;k<16*b;k+=16){var n=e+k;f[k]=g[n];f[k+1]=g[n+1];f[k+2]=g[n+2];f[k+3]=g[n+3];f[k+4]=g[n+4];f[k+5]=g[n+5];f[k+6]=g[n+6];f[k+7]=g[n+7];f[k+8]=g[n+8];f[k+9]=g[n+9];f[k+10]=g[n+10];f[k+11]=g[n+11];f[k+12]=g[n+12];f[k+13]=g[n+13];f[k+14]=g[n+14];f[k+15]=g[n+15]}}else f=v().subarray(e>>2,e+64*b>>2);U.uniformMatrix4fv(W(a),!!c,f)}},glUseProgram:function(a){a= O[a];U.useProgram(a);U.la=a},glVertexAttrib1f:function(a,b){U.vertexAttrib1f(a,b)},glVertexAttrib2fv:function(a,b){U.vertexAttrib2f(a,v()[b>>2],v()[b+4>>2])},glVertexAttrib3fv:function(a,b){U.vertexAttrib3f(a,v()[b>>2],v()[b+4>>2],v()[b+8>>2])},glVertexAttrib4fv:function(a,b){U.vertexAttrib4f(a,v()[b>>2],v()[b+4>>2],v()[b+8>>2],v()[b+12>>2])},glVertexAttribDivisor:function(a,b){U.vertexAttribDivisor(a,b)},glVertexAttribIPointer:function(a,b,c,e,f){U.vertexAttribIPointer(a,b,c,e,f)},glVertexAttribPointer:function(a, b,c,e,f,g){U.vertexAttribPointer(a,b,c,!!e,f,g)},glViewport:function(a,b,c,e){U.viewport(a,b,c,e)},glWaitSync:function(a,b,c,e){U.waitSync(Qb[a],b,(c>>>0)+4294967296*e)},invoke_ii:fd,invoke_iii:gd,invoke_iiii:hd,invoke_iiiii:jd,invoke_iiiiiii:kd,invoke_vi:ld,invoke_vii:md,invoke_viii:nd,invoke_viiii:od,invoke_viiiiiii:pd,memory:d||w.wasmMemory,skwasm_captureImageBitmap:Gc,skwasm_createGlTextureFromTextureSource:Hc,skwasm_createOffscreenCanvas:Ic,skwasm_dispatchRenderPictures:Jc,skwasm_disposeAssociatedObjectOnThread:Lc, skwasm_getAssociatedObject:Mc,skwasm_registerMessageListener:Nc,skwasm_resizeCanvas:Oc,skwasm_resolveAndPostImages:Pc,skwasm_setAssociatedObjectOnThread:Qc,skwasm_syncTimeOriginForThread:Rc,strftime_l:(a,b,c,e)=>Xc(a,b,c,e)}; (function(){function a(c,e){F=c=c.exports;w.wasmExports=F;I.ha.push(F._emscripten_tls_init);G=F.__indirect_function_table;Ha.unshift(F.__wasm_call_ctors);Aa=e;Oa();return c}var b={env:qd,wasi_snapshot_preview1:qd};Na();if(w.instantiateWasm)try{return w.instantiateWasm(b,a)}catch(c){D("Module.instantiateWasm callback failed with error: "+c),ka(c)}Ua(b,function(c){a(c.instance,c.module)}).catch(ka);return{}})();w._canvas_saveLayer=(a,b,c,e)=>(w._canvas_saveLayer=F.canvas_saveLayer)(a,b,c,e); w._canvas_save=a=>(w._canvas_save=F.canvas_save)(a);w._canvas_restore=a=>(w._canvas_restore=F.canvas_restore)(a);w._canvas_restoreToCount=(a,b)=>(w._canvas_restoreToCount=F.canvas_restoreToCount)(a,b);w._canvas_getSaveCount=a=>(w._canvas_getSaveCount=F.canvas_getSaveCount)(a);w._canvas_translate=(a,b,c)=>(w._canvas_translate=F.canvas_translate)(a,b,c);w._canvas_scale=(a,b,c)=>(w._canvas_scale=F.canvas_scale)(a,b,c);w._canvas_rotate=(a,b)=>(w._canvas_rotate=F.canvas_rotate)(a,b); w._canvas_skew=(a,b,c)=>(w._canvas_skew=F.canvas_skew)(a,b,c);w._canvas_transform=(a,b)=>(w._canvas_transform=F.canvas_transform)(a,b);w._canvas_clipRect=(a,b,c,e)=>(w._canvas_clipRect=F.canvas_clipRect)(a,b,c,e);w._canvas_clipRRect=(a,b,c)=>(w._canvas_clipRRect=F.canvas_clipRRect)(a,b,c);w._canvas_clipPath=(a,b,c)=>(w._canvas_clipPath=F.canvas_clipPath)(a,b,c);w._canvas_drawColor=(a,b,c)=>(w._canvas_drawColor=F.canvas_drawColor)(a,b,c); w._canvas_drawLine=(a,b,c,e,f,g)=>(w._canvas_drawLine=F.canvas_drawLine)(a,b,c,e,f,g);w._canvas_drawPaint=(a,b)=>(w._canvas_drawPaint=F.canvas_drawPaint)(a,b);w._canvas_drawRect=(a,b,c)=>(w._canvas_drawRect=F.canvas_drawRect)(a,b,c);w._canvas_drawRRect=(a,b,c)=>(w._canvas_drawRRect=F.canvas_drawRRect)(a,b,c);w._canvas_drawDRRect=(a,b,c,e)=>(w._canvas_drawDRRect=F.canvas_drawDRRect)(a,b,c,e);w._canvas_drawOval=(a,b,c)=>(w._canvas_drawOval=F.canvas_drawOval)(a,b,c); w._canvas_drawCircle=(a,b,c,e,f)=>(w._canvas_drawCircle=F.canvas_drawCircle)(a,b,c,e,f);w._canvas_drawArc=(a,b,c,e,f,g)=>(w._canvas_drawArc=F.canvas_drawArc)(a,b,c,e,f,g);w._canvas_drawPath=(a,b,c)=>(w._canvas_drawPath=F.canvas_drawPath)(a,b,c);w._canvas_drawShadow=(a,b,c,e,f,g)=>(w._canvas_drawShadow=F.canvas_drawShadow)(a,b,c,e,f,g);w._canvas_drawParagraph=(a,b,c,e)=>(w._canvas_drawParagraph=F.canvas_drawParagraph)(a,b,c,e); w._canvas_drawPicture=(a,b)=>(w._canvas_drawPicture=F.canvas_drawPicture)(a,b);w._canvas_drawImage=(a,b,c,e,f,g)=>(w._canvas_drawImage=F.canvas_drawImage)(a,b,c,e,f,g);w._canvas_drawImageRect=(a,b,c,e,f,g)=>(w._canvas_drawImageRect=F.canvas_drawImageRect)(a,b,c,e,f,g);w._canvas_drawImageNine=(a,b,c,e,f,g)=>(w._canvas_drawImageNine=F.canvas_drawImageNine)(a,b,c,e,f,g);w._canvas_drawVertices=(a,b,c,e)=>(w._canvas_drawVertices=F.canvas_drawVertices)(a,b,c,e); w._canvas_drawPoints=(a,b,c,e,f)=>(w._canvas_drawPoints=F.canvas_drawPoints)(a,b,c,e,f);w._canvas_drawAtlas=(a,b,c,e,f,g,k,n,r)=>(w._canvas_drawAtlas=F.canvas_drawAtlas)(a,b,c,e,f,g,k,n,r);w._canvas_getTransform=(a,b)=>(w._canvas_getTransform=F.canvas_getTransform)(a,b);w._canvas_getLocalClipBounds=(a,b)=>(w._canvas_getLocalClipBounds=F.canvas_getLocalClipBounds)(a,b);w._canvas_getDeviceClipBounds=(a,b)=>(w._canvas_getDeviceClipBounds=F.canvas_getDeviceClipBounds)(a,b); w._contourMeasureIter_create=(a,b,c)=>(w._contourMeasureIter_create=F.contourMeasureIter_create)(a,b,c);w._contourMeasureIter_next=a=>(w._contourMeasureIter_next=F.contourMeasureIter_next)(a);w._contourMeasureIter_dispose=a=>(w._contourMeasureIter_dispose=F.contourMeasureIter_dispose)(a);w._contourMeasure_dispose=a=>(w._contourMeasure_dispose=F.contourMeasure_dispose)(a);w._contourMeasure_length=a=>(w._contourMeasure_length=F.contourMeasure_length)(a); w._contourMeasure_isClosed=a=>(w._contourMeasure_isClosed=F.contourMeasure_isClosed)(a);w._contourMeasure_getPosTan=(a,b,c,e)=>(w._contourMeasure_getPosTan=F.contourMeasure_getPosTan)(a,b,c,e);w._contourMeasure_getSegment=(a,b,c,e)=>(w._contourMeasure_getSegment=F.contourMeasure_getSegment)(a,b,c,e);w._skData_create=a=>(w._skData_create=F.skData_create)(a);w._skData_getPointer=a=>(w._skData_getPointer=F.skData_getPointer)(a);w._skData_getConstPointer=a=>(w._skData_getConstPointer=F.skData_getConstPointer)(a); w._skData_getSize=a=>(w._skData_getSize=F.skData_getSize)(a);w._skData_dispose=a=>(w._skData_dispose=F.skData_dispose)(a);w._imageFilter_createBlur=(a,b,c)=>(w._imageFilter_createBlur=F.imageFilter_createBlur)(a,b,c);w._imageFilter_createDilate=(a,b)=>(w._imageFilter_createDilate=F.imageFilter_createDilate)(a,b);w._imageFilter_createErode=(a,b)=>(w._imageFilter_createErode=F.imageFilter_createErode)(a,b); w._imageFilter_createMatrix=(a,b)=>(w._imageFilter_createMatrix=F.imageFilter_createMatrix)(a,b);w._imageFilter_createFromColorFilter=a=>(w._imageFilter_createFromColorFilter=F.imageFilter_createFromColorFilter)(a);w._imageFilter_compose=(a,b)=>(w._imageFilter_compose=F.imageFilter_compose)(a,b);w._imageFilter_dispose=a=>(w._imageFilter_dispose=F.imageFilter_dispose)(a);w._imageFilter_getFilterBounds=(a,b)=>(w._imageFilter_getFilterBounds=F.imageFilter_getFilterBounds)(a,b); w._colorFilter_createMode=(a,b)=>(w._colorFilter_createMode=F.colorFilter_createMode)(a,b);w._colorFilter_createMatrix=a=>(w._colorFilter_createMatrix=F.colorFilter_createMatrix)(a);w._colorFilter_createSRGBToLinearGamma=()=>(w._colorFilter_createSRGBToLinearGamma=F.colorFilter_createSRGBToLinearGamma)();w._colorFilter_createLinearToSRGBGamma=()=>(w._colorFilter_createLinearToSRGBGamma=F.colorFilter_createLinearToSRGBGamma)(); w._colorFilter_compose=(a,b)=>(w._colorFilter_compose=F.colorFilter_compose)(a,b);w._colorFilter_dispose=a=>(w._colorFilter_dispose=F.colorFilter_dispose)(a);w._maskFilter_createBlur=(a,b)=>(w._maskFilter_createBlur=F.maskFilter_createBlur)(a,b);w._maskFilter_dispose=a=>(w._maskFilter_dispose=F.maskFilter_dispose)(a);w._fontCollection_create=()=>(w._fontCollection_create=F.fontCollection_create)();w._fontCollection_dispose=a=>(w._fontCollection_dispose=F.fontCollection_dispose)(a); w._typeface_create=a=>(w._typeface_create=F.typeface_create)(a);w._typeface_dispose=a=>(w._typeface_dispose=F.typeface_dispose)(a);w._typefaces_filterCoveredCodePoints=(a,b,c,e)=>(w._typefaces_filterCoveredCodePoints=F.typefaces_filterCoveredCodePoints)(a,b,c,e);w._fontCollection_registerTypeface=(a,b,c)=>(w._fontCollection_registerTypeface=F.fontCollection_registerTypeface)(a,b,c);w._fontCollection_clearCaches=a=>(w._fontCollection_clearCaches=F.fontCollection_clearCaches)(a); w._image_createFromPicture=(a,b,c)=>(w._image_createFromPicture=F.image_createFromPicture)(a,b,c);w._image_createFromPixels=(a,b,c,e,f)=>(w._image_createFromPixels=F.image_createFromPixels)(a,b,c,e,f);w._image_createFromTextureSource=(a,b,c,e)=>(w._image_createFromTextureSource=F.image_createFromTextureSource)(a,b,c,e);w._image_ref=a=>(w._image_ref=F.image_ref)(a);w._image_dispose=a=>(w._image_dispose=F.image_dispose)(a);w._image_getWidth=a=>(w._image_getWidth=F.image_getWidth)(a); w._image_getHeight=a=>(w._image_getHeight=F.image_getHeight)(a);w._paint_create=()=>(w._paint_create=F.paint_create)();w._paint_dispose=a=>(w._paint_dispose=F.paint_dispose)(a);w._paint_setBlendMode=(a,b)=>(w._paint_setBlendMode=F.paint_setBlendMode)(a,b);w._paint_setStyle=(a,b)=>(w._paint_setStyle=F.paint_setStyle)(a,b);w._paint_getStyle=a=>(w._paint_getStyle=F.paint_getStyle)(a);w._paint_setStrokeWidth=(a,b)=>(w._paint_setStrokeWidth=F.paint_setStrokeWidth)(a,b); w._paint_getStrokeWidth=a=>(w._paint_getStrokeWidth=F.paint_getStrokeWidth)(a);w._paint_setStrokeCap=(a,b)=>(w._paint_setStrokeCap=F.paint_setStrokeCap)(a,b);w._paint_getStrokeCap=a=>(w._paint_getStrokeCap=F.paint_getStrokeCap)(a);w._paint_setStrokeJoin=(a,b)=>(w._paint_setStrokeJoin=F.paint_setStrokeJoin)(a,b);w._paint_getStrokeJoin=a=>(w._paint_getStrokeJoin=F.paint_getStrokeJoin)(a);w._paint_setAntiAlias=(a,b)=>(w._paint_setAntiAlias=F.paint_setAntiAlias)(a,b); w._paint_getAntiAlias=a=>(w._paint_getAntiAlias=F.paint_getAntiAlias)(a);w._paint_setColorInt=(a,b)=>(w._paint_setColorInt=F.paint_setColorInt)(a,b);w._paint_getColorInt=a=>(w._paint_getColorInt=F.paint_getColorInt)(a);w._paint_setMiterLimit=(a,b)=>(w._paint_setMiterLimit=F.paint_setMiterLimit)(a,b);w._paint_getMiterLImit=a=>(w._paint_getMiterLImit=F.paint_getMiterLImit)(a);w._paint_setShader=(a,b)=>(w._paint_setShader=F.paint_setShader)(a,b); w._paint_setImageFilter=(a,b)=>(w._paint_setImageFilter=F.paint_setImageFilter)(a,b);w._paint_setColorFilter=(a,b)=>(w._paint_setColorFilter=F.paint_setColorFilter)(a,b);w._paint_setMaskFilter=(a,b)=>(w._paint_setMaskFilter=F.paint_setMaskFilter)(a,b);w._path_create=()=>(w._path_create=F.path_create)();w._path_dispose=a=>(w._path_dispose=F.path_dispose)(a);w._path_copy=a=>(w._path_copy=F.path_copy)(a);w._path_setFillType=(a,b)=>(w._path_setFillType=F.path_setFillType)(a,b); w._path_getFillType=a=>(w._path_getFillType=F.path_getFillType)(a);w._path_moveTo=(a,b,c)=>(w._path_moveTo=F.path_moveTo)(a,b,c);w._path_relativeMoveTo=(a,b,c)=>(w._path_relativeMoveTo=F.path_relativeMoveTo)(a,b,c);w._path_lineTo=(a,b,c)=>(w._path_lineTo=F.path_lineTo)(a,b,c);w._path_relativeLineTo=(a,b,c)=>(w._path_relativeLineTo=F.path_relativeLineTo)(a,b,c);w._path_quadraticBezierTo=(a,b,c,e,f)=>(w._path_quadraticBezierTo=F.path_quadraticBezierTo)(a,b,c,e,f); w._path_relativeQuadraticBezierTo=(a,b,c,e,f)=>(w._path_relativeQuadraticBezierTo=F.path_relativeQuadraticBezierTo)(a,b,c,e,f);w._path_cubicTo=(a,b,c,e,f,g,k)=>(w._path_cubicTo=F.path_cubicTo)(a,b,c,e,f,g,k);w._path_relativeCubicTo=(a,b,c,e,f,g,k)=>(w._path_relativeCubicTo=F.path_relativeCubicTo)(a,b,c,e,f,g,k);w._path_conicTo=(a,b,c,e,f,g)=>(w._path_conicTo=F.path_conicTo)(a,b,c,e,f,g);w._path_relativeConicTo=(a,b,c,e,f,g)=>(w._path_relativeConicTo=F.path_relativeConicTo)(a,b,c,e,f,g); w._path_arcToOval=(a,b,c,e,f)=>(w._path_arcToOval=F.path_arcToOval)(a,b,c,e,f);w._path_arcToRotated=(a,b,c,e,f,g,k,n)=>(w._path_arcToRotated=F.path_arcToRotated)(a,b,c,e,f,g,k,n);w._path_relativeArcToRotated=(a,b,c,e,f,g,k,n)=>(w._path_relativeArcToRotated=F.path_relativeArcToRotated)(a,b,c,e,f,g,k,n);w._path_addRect=(a,b)=>(w._path_addRect=F.path_addRect)(a,b);w._path_addOval=(a,b)=>(w._path_addOval=F.path_addOval)(a,b);w._path_addArc=(a,b,c,e)=>(w._path_addArc=F.path_addArc)(a,b,c,e); w._path_addPolygon=(a,b,c,e)=>(w._path_addPolygon=F.path_addPolygon)(a,b,c,e);w._path_addRRect=(a,b)=>(w._path_addRRect=F.path_addRRect)(a,b);w._path_addPath=(a,b,c,e)=>(w._path_addPath=F.path_addPath)(a,b,c,e);w._path_close=a=>(w._path_close=F.path_close)(a);w._path_reset=a=>(w._path_reset=F.path_reset)(a);w._path_contains=(a,b,c)=>(w._path_contains=F.path_contains)(a,b,c);w._path_transform=(a,b)=>(w._path_transform=F.path_transform)(a,b); w._path_getBounds=(a,b)=>(w._path_getBounds=F.path_getBounds)(a,b);w._path_combine=(a,b,c)=>(w._path_combine=F.path_combine)(a,b,c);w._pictureRecorder_create=()=>(w._pictureRecorder_create=F.pictureRecorder_create)();w._pictureRecorder_dispose=a=>(w._pictureRecorder_dispose=F.pictureRecorder_dispose)(a);w._pictureRecorder_beginRecording=(a,b)=>(w._pictureRecorder_beginRecording=F.pictureRecorder_beginRecording)(a,b);w._pictureRecorder_endRecording=a=>(w._pictureRecorder_endRecording=F.pictureRecorder_endRecording)(a); w._picture_getCullRect=(a,b)=>(w._picture_getCullRect=F.picture_getCullRect)(a,b);w._picture_dispose=a=>(w._picture_dispose=F.picture_dispose)(a);w._picture_approximateBytesUsed=a=>(w._picture_approximateBytesUsed=F.picture_approximateBytesUsed)(a);w._shader_createLinearGradient=(a,b,c,e,f,g)=>(w._shader_createLinearGradient=F.shader_createLinearGradient)(a,b,c,e,f,g);w._shader_createRadialGradient=(a,b,c,e,f,g,k,n)=>(w._shader_createRadialGradient=F.shader_createRadialGradient)(a,b,c,e,f,g,k,n); w._shader_createConicalGradient=(a,b,c,e,f,g,k,n)=>(w._shader_createConicalGradient=F.shader_createConicalGradient)(a,b,c,e,f,g,k,n);w._shader_createSweepGradient=(a,b,c,e,f,g,k,n,r)=>(w._shader_createSweepGradient=F.shader_createSweepGradient)(a,b,c,e,f,g,k,n,r);w._shader_dispose=a=>(w._shader_dispose=F.shader_dispose)(a);w._runtimeEffect_create=a=>(w._runtimeEffect_create=F.runtimeEffect_create)(a);w._runtimeEffect_dispose=a=>(w._runtimeEffect_dispose=F.runtimeEffect_dispose)(a); w._runtimeEffect_getUniformSize=a=>(w._runtimeEffect_getUniformSize=F.runtimeEffect_getUniformSize)(a);w._shader_createRuntimeEffectShader=(a,b,c,e)=>(w._shader_createRuntimeEffectShader=F.shader_createRuntimeEffectShader)(a,b,c,e);w._shader_createFromImage=(a,b,c,e,f)=>(w._shader_createFromImage=F.shader_createFromImage)(a,b,c,e,f);w._skString_allocate=a=>(w._skString_allocate=F.skString_allocate)(a);w._skString_getData=a=>(w._skString_getData=F.skString_getData)(a); w._skString_free=a=>(w._skString_free=F.skString_free)(a);w._skString16_allocate=a=>(w._skString16_allocate=F.skString16_allocate)(a);w._skString16_getData=a=>(w._skString16_getData=F.skString16_getData)(a);w._skString16_free=a=>(w._skString16_free=F.skString16_free)(a);var Db=(a,b,c,e,f)=>(Db=F.emscripten_dispatch_to_thread_)(a,b,c,e,f);w._surface_create=()=>(w._surface_create=F.surface_create)();w._surface_getThreadId=a=>(w._surface_getThreadId=F.surface_getThreadId)(a); w._surface_setCallbackHandler=(a,b)=>(w._surface_setCallbackHandler=F.surface_setCallbackHandler)(a,b);w._surface_destroy=a=>(w._surface_destroy=F.surface_destroy)(a);w._surface_renderPictures=(a,b,c)=>(w._surface_renderPictures=F.surface_renderPictures)(a,b,c);var bd=w._surface_renderPicturesOnWorker=(a,b,c,e,f)=>(bd=w._surface_renderPicturesOnWorker=F.surface_renderPicturesOnWorker)(a,b,c,e,f);w._surface_rasterizeImage=(a,b,c)=>(w._surface_rasterizeImage=F.surface_rasterizeImage)(a,b,c); var cd=w._surface_onRenderComplete=(a,b,c)=>(cd=w._surface_onRenderComplete=F.surface_onRenderComplete)(a,b,c);w._lineMetrics_create=(a,b,c,e,f,g,k,n,r)=>(w._lineMetrics_create=F.lineMetrics_create)(a,b,c,e,f,g,k,n,r);w._lineMetrics_dispose=a=>(w._lineMetrics_dispose=F.lineMetrics_dispose)(a);w._lineMetrics_getHardBreak=a=>(w._lineMetrics_getHardBreak=F.lineMetrics_getHardBreak)(a);w._lineMetrics_getAscent=a=>(w._lineMetrics_getAscent=F.lineMetrics_getAscent)(a); w._lineMetrics_getDescent=a=>(w._lineMetrics_getDescent=F.lineMetrics_getDescent)(a);w._lineMetrics_getUnscaledAscent=a=>(w._lineMetrics_getUnscaledAscent=F.lineMetrics_getUnscaledAscent)(a);w._lineMetrics_getHeight=a=>(w._lineMetrics_getHeight=F.lineMetrics_getHeight)(a);w._lineMetrics_getWidth=a=>(w._lineMetrics_getWidth=F.lineMetrics_getWidth)(a);w._lineMetrics_getLeft=a=>(w._lineMetrics_getLeft=F.lineMetrics_getLeft)(a);w._lineMetrics_getBaseline=a=>(w._lineMetrics_getBaseline=F.lineMetrics_getBaseline)(a); w._lineMetrics_getLineNumber=a=>(w._lineMetrics_getLineNumber=F.lineMetrics_getLineNumber)(a);w._lineMetrics_getStartIndex=a=>(w._lineMetrics_getStartIndex=F.lineMetrics_getStartIndex)(a);w._lineMetrics_getEndIndex=a=>(w._lineMetrics_getEndIndex=F.lineMetrics_getEndIndex)(a);w._paragraph_dispose=a=>(w._paragraph_dispose=F.paragraph_dispose)(a);w._paragraph_getWidth=a=>(w._paragraph_getWidth=F.paragraph_getWidth)(a);w._paragraph_getHeight=a=>(w._paragraph_getHeight=F.paragraph_getHeight)(a); w._paragraph_getLongestLine=a=>(w._paragraph_getLongestLine=F.paragraph_getLongestLine)(a);w._paragraph_getMinIntrinsicWidth=a=>(w._paragraph_getMinIntrinsicWidth=F.paragraph_getMinIntrinsicWidth)(a);w._paragraph_getMaxIntrinsicWidth=a=>(w._paragraph_getMaxIntrinsicWidth=F.paragraph_getMaxIntrinsicWidth)(a);w._paragraph_getAlphabeticBaseline=a=>(w._paragraph_getAlphabeticBaseline=F.paragraph_getAlphabeticBaseline)(a);w._paragraph_getIdeographicBaseline=a=>(w._paragraph_getIdeographicBaseline=F.paragraph_getIdeographicBaseline)(a); w._paragraph_getDidExceedMaxLines=a=>(w._paragraph_getDidExceedMaxLines=F.paragraph_getDidExceedMaxLines)(a);w._paragraph_layout=(a,b)=>(w._paragraph_layout=F.paragraph_layout)(a,b);w._paragraph_getPositionForOffset=(a,b,c,e)=>(w._paragraph_getPositionForOffset=F.paragraph_getPositionForOffset)(a,b,c,e);w._paragraph_getClosestGlyphInfoAtCoordinate=(a,b,c,e,f,g)=>(w._paragraph_getClosestGlyphInfoAtCoordinate=F.paragraph_getClosestGlyphInfoAtCoordinate)(a,b,c,e,f,g); w._paragraph_getGlyphInfoAt=(a,b,c,e,f)=>(w._paragraph_getGlyphInfoAt=F.paragraph_getGlyphInfoAt)(a,b,c,e,f);w._paragraph_getWordBoundary=(a,b,c)=>(w._paragraph_getWordBoundary=F.paragraph_getWordBoundary)(a,b,c);w._paragraph_getLineCount=a=>(w._paragraph_getLineCount=F.paragraph_getLineCount)(a);w._paragraph_getLineNumberAt=(a,b)=>(w._paragraph_getLineNumberAt=F.paragraph_getLineNumberAt)(a,b); w._paragraph_getLineMetricsAtIndex=(a,b)=>(w._paragraph_getLineMetricsAtIndex=F.paragraph_getLineMetricsAtIndex)(a,b);w._textBoxList_dispose=a=>(w._textBoxList_dispose=F.textBoxList_dispose)(a);w._textBoxList_getLength=a=>(w._textBoxList_getLength=F.textBoxList_getLength)(a);w._textBoxList_getBoxAtIndex=(a,b,c)=>(w._textBoxList_getBoxAtIndex=F.textBoxList_getBoxAtIndex)(a,b,c);w._paragraph_getBoxesForRange=(a,b,c,e,f)=>(w._paragraph_getBoxesForRange=F.paragraph_getBoxesForRange)(a,b,c,e,f); w._paragraph_getBoxesForPlaceholders=a=>(w._paragraph_getBoxesForPlaceholders=F.paragraph_getBoxesForPlaceholders)(a);w._paragraph_getUnresolvedCodePoints=(a,b,c)=>(w._paragraph_getUnresolvedCodePoints=F.paragraph_getUnresolvedCodePoints)(a,b,c);w._paragraphBuilder_create=(a,b)=>(w._paragraphBuilder_create=F.paragraphBuilder_create)(a,b);w._paragraphBuilder_dispose=a=>(w._paragraphBuilder_dispose=F.paragraphBuilder_dispose)(a); w._paragraphBuilder_addPlaceholder=(a,b,c,e,f,g)=>(w._paragraphBuilder_addPlaceholder=F.paragraphBuilder_addPlaceholder)(a,b,c,e,f,g);w._paragraphBuilder_addText=(a,b)=>(w._paragraphBuilder_addText=F.paragraphBuilder_addText)(a,b);w._paragraphBuilder_getUtf8Text=(a,b)=>(w._paragraphBuilder_getUtf8Text=F.paragraphBuilder_getUtf8Text)(a,b);w._paragraphBuilder_pushStyle=(a,b)=>(w._paragraphBuilder_pushStyle=F.paragraphBuilder_pushStyle)(a,b);w._paragraphBuilder_pop=a=>(w._paragraphBuilder_pop=F.paragraphBuilder_pop)(a); w._paragraphBuilder_build=a=>(w._paragraphBuilder_build=F.paragraphBuilder_build)(a);w._unicodePositionBuffer_create=a=>(w._unicodePositionBuffer_create=F.unicodePositionBuffer_create)(a);w._unicodePositionBuffer_getDataPointer=a=>(w._unicodePositionBuffer_getDataPointer=F.unicodePositionBuffer_getDataPointer)(a);w._unicodePositionBuffer_free=a=>(w._unicodePositionBuffer_free=F.unicodePositionBuffer_free)(a);w._lineBreakBuffer_create=a=>(w._lineBreakBuffer_create=F.lineBreakBuffer_create)(a); w._lineBreakBuffer_getDataPointer=a=>(w._lineBreakBuffer_getDataPointer=F.lineBreakBuffer_getDataPointer)(a);w._lineBreakBuffer_free=a=>(w._lineBreakBuffer_free=F.lineBreakBuffer_free)(a);w._paragraphBuilder_setGraphemeBreaksUtf16=(a,b)=>(w._paragraphBuilder_setGraphemeBreaksUtf16=F.paragraphBuilder_setGraphemeBreaksUtf16)(a,b);w._paragraphBuilder_setWordBreaksUtf16=(a,b)=>(w._paragraphBuilder_setWordBreaksUtf16=F.paragraphBuilder_setWordBreaksUtf16)(a,b); w._paragraphBuilder_setLineBreaksUtf16=(a,b)=>(w._paragraphBuilder_setLineBreaksUtf16=F.paragraphBuilder_setLineBreaksUtf16)(a,b);w._paragraphStyle_create=()=>(w._paragraphStyle_create=F.paragraphStyle_create)();w._paragraphStyle_dispose=a=>(w._paragraphStyle_dispose=F.paragraphStyle_dispose)(a);w._paragraphStyle_setTextAlign=(a,b)=>(w._paragraphStyle_setTextAlign=F.paragraphStyle_setTextAlign)(a,b); w._paragraphStyle_setTextDirection=(a,b)=>(w._paragraphStyle_setTextDirection=F.paragraphStyle_setTextDirection)(a,b);w._paragraphStyle_setMaxLines=(a,b)=>(w._paragraphStyle_setMaxLines=F.paragraphStyle_setMaxLines)(a,b);w._paragraphStyle_setHeight=(a,b)=>(w._paragraphStyle_setHeight=F.paragraphStyle_setHeight)(a,b);w._paragraphStyle_setTextHeightBehavior=(a,b,c)=>(w._paragraphStyle_setTextHeightBehavior=F.paragraphStyle_setTextHeightBehavior)(a,b,c); w._paragraphStyle_setEllipsis=(a,b)=>(w._paragraphStyle_setEllipsis=F.paragraphStyle_setEllipsis)(a,b);w._paragraphStyle_setStrutStyle=(a,b)=>(w._paragraphStyle_setStrutStyle=F.paragraphStyle_setStrutStyle)(a,b);w._paragraphStyle_setTextStyle=(a,b)=>(w._paragraphStyle_setTextStyle=F.paragraphStyle_setTextStyle)(a,b);w._paragraphStyle_setApplyRoundingHack=(a,b)=>(w._paragraphStyle_setApplyRoundingHack=F.paragraphStyle_setApplyRoundingHack)(a,b);w._strutStyle_create=()=>(w._strutStyle_create=F.strutStyle_create)(); w._strutStyle_dispose=a=>(w._strutStyle_dispose=F.strutStyle_dispose)(a);w._strutStyle_setFontFamilies=(a,b,c)=>(w._strutStyle_setFontFamilies=F.strutStyle_setFontFamilies)(a,b,c);w._strutStyle_setFontSize=(a,b)=>(w._strutStyle_setFontSize=F.strutStyle_setFontSize)(a,b);w._strutStyle_setHeight=(a,b)=>(w._strutStyle_setHeight=F.strutStyle_setHeight)(a,b);w._strutStyle_setHalfLeading=(a,b)=>(w._strutStyle_setHalfLeading=F.strutStyle_setHalfLeading)(a,b); w._strutStyle_setLeading=(a,b)=>(w._strutStyle_setLeading=F.strutStyle_setLeading)(a,b);w._strutStyle_setFontStyle=(a,b,c)=>(w._strutStyle_setFontStyle=F.strutStyle_setFontStyle)(a,b,c);w._strutStyle_setForceStrutHeight=(a,b)=>(w._strutStyle_setForceStrutHeight=F.strutStyle_setForceStrutHeight)(a,b);w._textStyle_create=()=>(w._textStyle_create=F.textStyle_create)();w._textStyle_copy=a=>(w._textStyle_copy=F.textStyle_copy)(a);w._textStyle_dispose=a=>(w._textStyle_dispose=F.textStyle_dispose)(a); w._textStyle_setColor=(a,b)=>(w._textStyle_setColor=F.textStyle_setColor)(a,b);w._textStyle_setDecoration=(a,b)=>(w._textStyle_setDecoration=F.textStyle_setDecoration)(a,b);w._textStyle_setDecorationColor=(a,b)=>(w._textStyle_setDecorationColor=F.textStyle_setDecorationColor)(a,b);w._textStyle_setDecorationStyle=(a,b)=>(w._textStyle_setDecorationStyle=F.textStyle_setDecorationStyle)(a,b); w._textStyle_setDecorationThickness=(a,b)=>(w._textStyle_setDecorationThickness=F.textStyle_setDecorationThickness)(a,b);w._textStyle_setFontStyle=(a,b,c)=>(w._textStyle_setFontStyle=F.textStyle_setFontStyle)(a,b,c);w._textStyle_setTextBaseline=(a,b)=>(w._textStyle_setTextBaseline=F.textStyle_setTextBaseline)(a,b);w._textStyle_clearFontFamilies=a=>(w._textStyle_clearFontFamilies=F.textStyle_clearFontFamilies)(a); w._textStyle_addFontFamilies=(a,b,c)=>(w._textStyle_addFontFamilies=F.textStyle_addFontFamilies)(a,b,c);w._textStyle_setFontSize=(a,b)=>(w._textStyle_setFontSize=F.textStyle_setFontSize)(a,b);w._textStyle_setLetterSpacing=(a,b)=>(w._textStyle_setLetterSpacing=F.textStyle_setLetterSpacing)(a,b);w._textStyle_setWordSpacing=(a,b)=>(w._textStyle_setWordSpacing=F.textStyle_setWordSpacing)(a,b);w._textStyle_setHeight=(a,b)=>(w._textStyle_setHeight=F.textStyle_setHeight)(a,b); w._textStyle_setHalfLeading=(a,b)=>(w._textStyle_setHalfLeading=F.textStyle_setHalfLeading)(a,b);w._textStyle_setLocale=(a,b)=>(w._textStyle_setLocale=F.textStyle_setLocale)(a,b);w._textStyle_setBackground=(a,b)=>(w._textStyle_setBackground=F.textStyle_setBackground)(a,b);w._textStyle_setForeground=(a,b)=>(w._textStyle_setForeground=F.textStyle_setForeground)(a,b);w._textStyle_addShadow=(a,b,c,e,f)=>(w._textStyle_addShadow=F.textStyle_addShadow)(a,b,c,e,f); w._textStyle_addFontFeature=(a,b,c)=>(w._textStyle_addFontFeature=F.textStyle_addFontFeature)(a,b,c);w._textStyle_setFontVariations=(a,b,c,e)=>(w._textStyle_setFontVariations=F.textStyle_setFontVariations)(a,b,c,e);w._vertices_create=(a,b,c,e,f,g,k)=>(w._vertices_create=F.vertices_create)(a,b,c,e,f,g,k);w._vertices_dispose=a=>(w._vertices_dispose=F.vertices_dispose)(a);var fb=w._pthread_self=()=>(fb=w._pthread_self=F.pthread_self)(),pb=a=>(pb=F.malloc)(a); w.__emscripten_tls_init=()=>(w.__emscripten_tls_init=F._emscripten_tls_init)();var ed=w.__emscripten_thread_init=(a,b,c,e,f,g)=>(ed=w.__emscripten_thread_init=F._emscripten_thread_init)(a,b,c,e,f,g);w.__emscripten_thread_crashed=()=>(w.__emscripten_thread_crashed=F._emscripten_thread_crashed)(); var jc=(a,b,c,e)=>(jc=F._emscripten_run_in_main_runtime_thread_js)(a,b,c,e),db=a=>(db=F._emscripten_thread_free_data)(a),jb=w.__emscripten_thread_exit=a=>(jb=w.__emscripten_thread_exit=F._emscripten_thread_exit)(a),wb=w.__emscripten_check_mailbox=()=>(wb=w.__emscripten_check_mailbox=F._emscripten_check_mailbox)(),Z=(a,b)=>(Z=F.setThrew)(a,b),ib=(a,b)=>(ib=F.emscripten_stack_set_limits)(a,b),N=()=>(N=F.stackSave)(),M=a=>(M=F.stackRestore)(a),Cb=w.stackAlloc=a=>(Cb=w.stackAlloc=F.stackAlloc)(a); function gd(a,b,c){var e=N();try{return G.get(a)(b,c)}catch(f){M(e);if(f!==f+0)throw f;Z(1,0)}}function md(a,b,c){var e=N();try{G.get(a)(b,c)}catch(f){M(e);if(f!==f+0)throw f;Z(1,0)}}function fd(a,b){var c=N();try{return G.get(a)(b)}catch(e){M(c);if(e!==e+0)throw e;Z(1,0)}}function nd(a,b,c,e){var f=N();try{G.get(a)(b,c,e)}catch(g){M(f);if(g!==g+0)throw g;Z(1,0)}}function hd(a,b,c,e){var f=N();try{return G.get(a)(b,c,e)}catch(g){M(f);if(g!==g+0)throw g;Z(1,0)}} function od(a,b,c,e,f){var g=N();try{G.get(a)(b,c,e,f)}catch(k){M(g);if(k!==k+0)throw k;Z(1,0)}}function pd(a,b,c,e,f,g,k,n){var r=N();try{G.get(a)(b,c,e,f,g,k,n)}catch(u){M(r);if(u!==u+0)throw u;Z(1,0)}}function ld(a,b){var c=N();try{G.get(a)(b)}catch(e){M(c);if(e!==e+0)throw e;Z(1,0)}}function kd(a,b,c,e,f,g,k){var n=N();try{return G.get(a)(b,c,e,f,g,k)}catch(r){M(n);if(r!==r+0)throw r;Z(1,0)}} function jd(a,b,c,e,f){var g=N();try{return G.get(a)(b,c,e,f)}catch(k){M(g);if(k!==k+0)throw k;Z(1,0)}}w.keepRuntimeAlive=Ka;w.wasmMemory=d;w.wasmExports=F; w.addFunction=function(a,b){if(!Yc){Yc=new WeakMap;var c=G.length;if(Yc)for(var e=0;e<0+c;e++){var f=G.get(e);f&&Yc.set(f,e)}}if(c=Yc.get(a)||0)return c;if(Zc.length)c=Zc.pop();else{try{G.grow(1)}catch(n){if(!(n instanceof RangeError))throw n;throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.";}c=G.length-1}try{G.set(c,a)}catch(n){if(!(n instanceof TypeError))throw n;if("function"==typeof WebAssembly.Function){e=WebAssembly.Function;f={i:"i32",j:"i64",f:"f32",d:"f64",p:"i32"};for(var g={parameters:[], results:"v"==b[0]?[]:[f[b[0]]]},k=1;kk?e.push(k):e.push(k%128|128,k>>7);for(k=0;kf?b.push(f):b.push(f%128|128,f>>7);b.push.apply(b,e);b.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);b=new WebAssembly.Module(new Uint8Array(b));b=(new WebAssembly.Instance(b, {e:{f:a}})).exports.f}G.set(c,b)}Yc.set(a,c);return c};w.ExitStatus=Va;w.PThread=I;var rd;Ma=function sd(){rd||td();rd||(Ma=sd)}; function td(){function a(){if(!rd&&(rd=!0,w.calledRun=!0,!Ba)){A||hb(Ha);ja(w);if(w.onRuntimeInitialized)w.onRuntimeInitialized();if(!A){if(w.postRun)for("function"==typeof w.postRun&&(w.postRun=[w.postRun]);w.postRun.length;){var b=w.postRun.shift();Ia.unshift(b)}hb(Ia)}}}if(!(0 skwasm); ================================================ FILE: legacy/dist/canvaskit/skwasm.js.symbols ================================================ 0:invoke_viii 1:abort 2:invoke_vii 3:invoke_vi 4:invoke_ii 5:emscripten_get_now 6:invoke_iii 7:__cxa_throw 8:invoke_viiii 9:skwasm_registerMessageListener 10:invoke_viiiiiii 11:glGetString 12:glDeleteTextures 13:emscripten_glGetIntegerv 14:emscripten_exit_with_live_runtime 15:__wasi_fd_close 16:__syscall_fcntl64 17:strftime_l 18:skwasm_syncTimeOriginForThread 19:skwasm_setAssociatedObjectOnThread 20:skwasm_resolveAndPostImages 21:skwasm_resizeCanvas 22:skwasm_getAssociatedObject 23:skwasm_disposeAssociatedObjectOnThread 24:skwasm_dispatchRenderPictures 25:skwasm_createOffscreenCanvas 26:skwasm_createGlTextureFromTextureSource 27:skwasm_captureImageBitmap 28:legalimport$glWaitSync 29:legalimport$glClientWaitSync 30:legalimport$_munmap_js 31:legalimport$_mmap_js 32:legalimport$__wasi_fd_seek 33:legalimport$__wasi_fd_pread 34:invoke_iiiiiii 35:invoke_iiiii 36:invoke_iiii 37:glViewport 38:glVertexAttribPointer 39:glVertexAttribIPointer 40:glVertexAttribDivisor 41:glVertexAttrib4fv 42:glVertexAttrib3fv 43:glVertexAttrib2fv 44:glVertexAttrib1f 45:glUseProgram 46:glUniformMatrix4fv 47:glUniformMatrix3fv 48:glUniformMatrix2fv 49:glUniform4iv 50:glUniform4i 51:glUniform4fv 52:glUniform4f 53:glUniform3iv 54:glUniform3i 55:glUniform3fv 56:glUniform3f 57:glUniform2iv 58:glUniform2i 59:glUniform2fv 60:glUniform2f 61:glUniform1iv 62:glUniform1i 63:glUniform1fv 64:glUniform1f 65:glTexSubImage2D 66:glTexStorage2D 67:glTexParameteriv 68:glTexParameteri 69:glTexParameterfv 70:glTexParameterf 71:glTexImage2D 72:glStencilOpSeparate 73:glStencilOp 74:glStencilMaskSeparate 75:glStencilMask 76:glStencilFuncSeparate 77:glStencilFunc 78:glShaderSource 79:glScissor 80:glSamplerParameteriv 81:glSamplerParameteri 82:glSamplerParameterf 83:glRenderbufferStorageMultisample 84:glRenderbufferStorage 85:glReadPixels 86:glReadBuffer 87:glPixelStorei 88:glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL 89:glMultiDrawArraysInstancedBaseInstanceWEBGL 90:glLinkProgram 91:glLineWidth 92:glIsTexture 93:glIsSync 94:glInvalidateSubFramebuffer 95:glInvalidateFramebuffer 96:glGetUniformLocation 97:glGetStringi 98:glGetShaderiv 99:glGetShaderPrecisionFormat 100:glGetShaderInfoLog 101:glGetRenderbufferParameteriv 102:glGetProgramiv 103:glGetProgramInfoLog 104:glGetIntegerv 105:glGetFramebufferAttachmentParameteriv 106:glGetFloatv 107:glGetError 108:glGetBufferParameteriv 109:glGenerateMipmap 110:glGenVertexArraysOES 111:glGenVertexArrays 112:glGenTextures 113:glGenSamplers 114:glGenRenderbuffers 115:glGenFramebuffers 116:glGenBuffers 117:glFrontFace 118:glFramebufferTexture2D 119:glFramebufferRenderbuffer 120:glFlush 121:glFinish 122:glFenceSync 123:glEnableVertexAttribArray 124:glEnable 125:glDrawRangeElements 126:glDrawElementsInstancedBaseVertexBaseInstanceWEBGL 127:glDrawElementsInstanced 128:glDrawElements 129:glDrawBuffers 130:glDrawArraysInstancedBaseInstanceWEBGL 131:glDrawArraysInstanced 132:glDrawArrays 133:glDisableVertexAttribArray 134:glDisable 135:glDepthMask 136:glDeleteVertexArraysOES 137:glDeleteVertexArrays 138:glDeleteSync 139:glDeleteShader 140:glDeleteSamplers 141:glDeleteRenderbuffers 142:glDeleteProgram 143:glDeleteFramebuffers 144:glDeleteBuffers 145:glCullFace 146:glCreateShader 147:glCreateProgram 148:glCopyTexSubImage2D 149:glCopyBufferSubData 150:glCompressedTexSubImage2D 151:glCompressedTexImage2D 152:glCompileShader 153:glColorMask 154:glClearStencil 155:glClearColor 156:glClear 157:glCheckFramebufferStatus 158:glBufferSubData 159:glBufferData 160:glBlitFramebuffer 161:glBlendFunc 162:glBlendEquation 163:glBlendColor 164:glBindVertexArrayOES 165:glBindVertexArray 166:glBindTexture 167:glBindSampler 168:glBindRenderbuffer 169:glBindFramebuffer 170:glBindBuffer 171:glBindAttribLocation 172:glAttachShader 173:glActiveTexture 174:exit 175:emscripten_webgl_make_context_current 176:emscripten_webgl_get_current_context 177:emscripten_webgl_enable_extension 178:emscripten_resize_heap 179:emscripten_receive_on_main_thread_js 180:emscripten_glClearStencil 181:emscripten_glClearColor 182:emscripten_glClear 183:emscripten_glBindFramebuffer 184:emscripten_check_blocking_allowed 185:_emscripten_throw_longjmp 186:_emscripten_thread_set_strongref 187:_emscripten_thread_mailbox_await 188:_emscripten_set_offscreencanvas_size 189:_emscripten_notify_mailbox_postmessage 190:_emscripten_get_now_is_monotonic 191:__wasi_fd_write 192:__wasi_fd_read 193:__wasi_environ_sizes_get 194:__wasi_environ_get 195:__syscall_openat 196:__syscall_ioctl 197:__syscall_fstat64 198:__pthread_create_js 199:__emscripten_thread_cleanup 200:__emscripten_init_main_thread_js 201:std::__2::basic_string\2c\20std::__2::allocator>::~basic_string\28\29 202:dlfree 203:sk_sp::~sk_sp\28\29 204:operator\20new\28unsigned\20long\29 205:GrGLSLShaderBuilder::codeAppendf\28char\20const*\2c\20...\29 206:sk_sp::~sk_sp\28\29 207:void\20SkSafeUnref\28GrSurfaceProxy*\29\20\28.4161\29 208:void\20SkSafeUnref\28SkImageFilter*\29\20\28.2063\29 209:operator\20delete\28void*\29 210:GrGLSLShaderBuilder::codeAppend\28char\20const*\29 211:SkRasterPipeline::uncheckedAppend\28SkRasterPipelineOp\2c\20void*\29 212:void\20SkSafeUnref\28SkString::Rec*\29 213:__cxa_guard_release 214:__cxa_guard_acquire 215:SkSL::GLSLCodeGenerator::write\28std::__2::basic_string_view>\29 216:SkSL::ErrorReporter::error\28SkSL::Position\2c\20std::__2::basic_string_view>\29 217:std::__2::basic_string\2c\20std::__2::allocator>\20std::__2::operator+\5babi:v160004\5d\2c\20std::__2::allocator>\28std::__2::basic_string\2c\20std::__2::allocator>&&\2c\20char\20const*\29 218:hb_blob_destroy 219:skia_private::TArray::~TArray\28\29 220:SkImageGenerator::onIsProtected\28\29\20const 221:SkDebugf\28char\20const*\2c\20...\29 222:fmaxf 223:std::__2::basic_string\2c\20std::__2::allocator>\20std::__2::operator+\5babi:v160004\5d\2c\20std::__2::allocator>\28char\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>&&\29 224:SkSL::Type::matches\28SkSL::Type\20const&\29\20const 225:std::__2::basic_string\2c\20std::__2::allocator>::size\5babi:v160004\5d\28\29\20const 226:std::__2::__function::__value_func::~__value_func\5babi:v160004\5d\28\29 227:hb_sanitize_context_t::check_range\28void\20const*\2c\20unsigned\20int\29\20const 228:GrShaderVar::~GrShaderVar\28\29 229:void\20SkSafeUnref\28SkPathRef*\29 230:std::__2::basic_string\2c\20std::__2::allocator>\20std::__2::operator+\5babi:v160004\5d\2c\20std::__2::allocator>\28std::__2::basic_string\2c\20std::__2::allocator>&&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&&\29 231:testSetjmp 232:std::__2::__function::__func\2c\20void\20\28SkIRect\20const&\29>::destroy\28\29 233:hb_buffer_t::message\28hb_font_t*\2c\20char\20const*\2c\20...\29 234:GrColorInfo::~GrColorInfo\28\29 235:SkArenaAlloc::allocObject\28unsigned\20int\2c\20unsigned\20int\29 236:std::__2::basic_string\2c\20std::__2::allocator>::basic_string>\2c\20void>\28std::__2::basic_string_view>\20const&\29 237:SkAnySubclass::reset\28\29 238:fminf 239:SkPaint::~SkPaint\28\29 240:FT_DivFix 241:SkMutex::release\28\29 242:strlen 243:skvx::Vec<4\2c\20float>\20skvx::naive_if_then_else<4\2c\20float>\28skvx::Vec<4\2c\20skvx::Mask::type>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\29\20\28.5768\29 244:sk_sp::reset\28SkFontStyleSet*\29 245:SkPath::SkPath\28\29 246:std::exception::~exception\28\29 247:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28char\20const*\29 248:skia_private::TArray>\2c\20true>::~TArray\28\29 249:skia_png_crc_finish 250:skia_png_chunk_benign_error 251:hb_buffer_t::next_glyph\28\29 252:SkSL::RP::Generator::pushExpression\28SkSL::Expression\20const&\2c\20bool\29 253:SkSL::Pool::AllocMemory\28unsigned\20long\29 254:SkSL::RP::Builder::appendInstruction\28SkSL::RP::BuilderOp\2c\20SkSL::RP::Builder::SlotList\2c\20int\2c\20int\2c\20int\2c\20int\29 255:sk_report_container_overflow_and_die\28\29 256:SkMatrix::hasPerspective\28\29\20const 257:SkSemaphore::wait\28\29 258:skgpu::ganesh::VertexChunkPatchAllocator::append\28skgpu::tess::LinearTolerances\20const&\29 259:SkString::appendf\28char\20const*\2c\20...\29 260:SkBitmap::~SkBitmap\28\29 261:skgpu::VertexWriter&\20skgpu::tess::operator<<<\28skgpu::tess::PatchAttribs\298\2c\20skgpu::VertexColor\2c\20false\2c\20true>\28skgpu::VertexWriter&\2c\20skgpu::tess::AttribValue<\28skgpu::tess::PatchAttribs\298\2c\20skgpu::VertexColor\2c\20false\2c\20true>\20const&\29 262:SkWriter32::write32\28int\29 263:SkContainerAllocator::allocate\28int\2c\20double\29 264:\28anonymous\20namespace\29::ColorTypeFilter_F16F16::Expand\28unsigned\20int\29 265:FT_MulDiv 266:sk_sp::reset\28SkImageFilter*\29 267:SkString::append\28char\20const*\29 268:SkArenaAlloc::allocObjectWithFooter\28unsigned\20int\2c\20unsigned\20int\29 269:std::__2::basic_string\2c\20std::__2::allocator>::append\5babi:v160004\5d\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 270:skvx::Vec<4\2c\20float>\20skvx::operator*<4\2c\20float\2c\20float\2c\20void>\28skvx::Vec<4\2c\20float>\20const&\2c\20float\29 271:OT::VarStoreInstancer::operator\28\29\28unsigned\20int\2c\20unsigned\20short\29\20const 272:dlmalloc 273:std::__2::basic_string\2c\20std::__2::allocator>::append\28char\20const*\29 274:ft_mem_realloc 275:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 276:lang_matches\28char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20unsigned\20int\29 277:SkIRect::intersect\28SkIRect\20const&\29 278:skia_png_free 279:SkSL::Parser::expect\28SkSL::Token::Kind\2c\20char\20const*\2c\20SkSL::Token*\29 280:SkIntersections::insert\28double\2c\20double\2c\20SkDPoint\20const&\29 281:skia_private::TArray::push_back\28SkPoint\20const&\29 282:ft_mem_qrealloc 283:SkMatrix::invert\28SkMatrix*\29\20const 284:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 285:std::__2::basic_string\2c\20std::__2::allocator>::resize\28unsigned\20long\2c\20char\29 286:sk_sp::~sk_sp\28\29 287:sk_sp::~sk_sp\28\29 288:cf2_stack_popFixed 289:strcmp 290:GrTextureGenerator::isTextureGenerator\28\29\20const 291:subtag_matches\28char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20unsigned\20int\29 292:std::__2::vector\2c\20std::__2::allocator>>::__throw_length_error\5babi:v160004\5d\28\29\20const 293:std::__2::basic_string\2c\20std::__2::allocator>::operator\5b\5d\5babi:v160004\5d\28unsigned\20long\29\20const 294:cf2_stack_getReal 295:SkSL::GLSLCodeGenerator::writeExpression\28SkSL::Expression\20const&\2c\20SkSL::OperatorPrecedence\29 296:SkIRect::isEmpty\28\29\20const 297:SkSL::Type::displayName\28\29\20const 298:dlcalloc 299:SkImageGenerator::onGetYUVAPlanes\28SkYUVAPixmaps\20const&\29 300:SkBitmap::SkBitmap\28\29 301:GrAuditTrail::pushFrame\28char\20const*\29 302:std::__2::locale::~locale\28\29 303:FT_Stream_Seek 304:SkPaint::SkPaint\28SkPaint\20const&\29 305:void\20SkSafeUnref\28SkColorSpace*\29\20\28.2018\29 306:hb_vector_t::fini\28\29 307:SkString::SkString\28SkString&&\29 308:GrGeometryProcessor::Attribute::asShaderVar\28\29\20const 309:strncmp 310:std::__2::unique_ptr>::reset\5babi:v160004\5d\28GrShaderCaps*\29 311:SkBlitter::~SkBlitter\28\29.1 312:std::__2::to_string\28int\29 313:SkTDStorage::~SkTDStorage\28\29 314:SkSL::Parser::peek\28\29 315:std::__2::ios_base::getloc\28\29\20const 316:std::__2::basic_string\2c\20std::__2::allocator>::__get_pointer\5babi:v160004\5d\28\29 317:hb_ot_map_builder_t::add_feature\28unsigned\20int\2c\20hb_ot_map_feature_flags_t\2c\20unsigned\20int\29 318:SkWStream::writeText\28char\20const*\29 319:GrProcessor::operator\20new\28unsigned\20long\29 320:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28\29 321:skvx::Vec<4\2c\20float>\20skvx::operator*<4\2c\20float\2c\20float\2c\20void>\28float\2c\20skvx::Vec<4\2c\20float>\20const&\29 322:SkPath::getBounds\28\29\20const 323:GrPixmapBase::~GrPixmapBase\28\29 324:GrGLSLUniformHandler::addUniform\28GrProcessor\20const*\2c\20unsigned\20int\2c\20SkSLType\2c\20char\20const*\2c\20char\20const**\29 325:void\20SkSafeUnref\28SkData\20const*\29\20\28.1144\29 326:sk_sp::~sk_sp\28\29 327:hb_face_t::get_num_glyphs\28\29\20const 328:SkString::~SkString\28\29 329:GrSurfaceProxyView::operator=\28GrSurfaceProxyView&&\29 330:GrPaint::~GrPaint\28\29 331:FT_Stream_ReadUShort 332:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul>::__dispatch\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>::__destroy\5babi:v160004\5d\28\29::'lambda'\28auto&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&>\28auto\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\29 333:__errno_location 334:SkMakeRuntimeEffect\28SkRuntimeEffect::Result\20\28*\29\28SkString\2c\20SkRuntimeEffect::Options\20const&\29\2c\20char\20const*\2c\20SkRuntimeEffect::Options\29 335:std::__2::unique_ptr>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Entry*\2c\20skia::textlayout::ParagraphCacheKey\2c\20SkLRUCache>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Traits>::Slot\20\5b\5d\2c\20std::__2::default_delete>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Entry*\2c\20skia::textlayout::ParagraphCacheKey\2c\20SkLRUCache>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Traits>::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 336:std::__2::basic_string\2c\20std::__2::allocator>::capacity\5babi:v160004\5d\28\29\20const 337:skvx::Vec<8\2c\20unsigned\20short>&\20skvx::operator+=<8\2c\20unsigned\20short>\28skvx::Vec<8\2c\20unsigned\20short>&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\29 338:SkMatrix::SkMatrix\28\29 339:SkIRect::contains\28SkIRect\20const&\29\20const 340:SkArenaAlloc::RunDtorsOnBlock\28char*\29 341:skia_png_warning 342:bool\20std::__2::operator==\5babi:v160004\5d>\28std::__2::istreambuf_iterator>\20const&\2c\20std::__2::istreambuf_iterator>\20const&\29 343:SkString::SkString\28char\20const*\29 344:GrGLContextInfo::hasExtension\28char\20const*\29\20const 345:skgpu::Swizzle::Swizzle\28char\20const*\29 346:hb_sanitize_context_t::start_processing\28\29 347:__shgetc 348:FT_Stream_GetUShort 349:std::__2::vector>::~vector\5babi:v160004\5d\28\29 350:std::__2::basic_string\2c\20std::__2::allocator>::operator=\5babi:v160004\5d\28wchar_t\20const*\29 351:std::__2::basic_string\2c\20std::__2::allocator>::operator=\5babi:v160004\5d\28char\20const*\29 352:skia_private::TArray>\2c\20true>::push_back\28std::__2::unique_ptr>&&\29 353:hb_sanitize_context_t::~hb_sanitize_context_t\28\29 354:bool\20std::__2::operator==\5babi:v160004\5d>\28std::__2::istreambuf_iterator>\20const&\2c\20std::__2::istreambuf_iterator>\20const&\29 355:SkMatrix::mapRect\28SkRect*\2c\20SkRect\20const&\2c\20SkApplyPerspectiveClip\29\20const 356:std::__2::shared_ptr<_IO_FILE>::~shared_ptr\5babi:v160004\5d\28\29 357:hb_lazy_loader_t\2c\20hb_face_t\2c\2033u\2c\20hb_blob_t>::do_destroy\28hb_blob_t*\29 358:SkSL::Expression::clone\28\29\20const 359:SkDQuad::set\28SkPoint\20const*\29 360:std::__2::vector>::~vector\5babi:v160004\5d\28\29 361:skia_private::AutoSTMalloc<17ul\2c\20SkPoint\2c\20void>::~AutoSTMalloc\28\29 362:FT_Stream_ExitFrame 363:std::__throw_bad_array_new_length\5babi:v160004\5d\28\29 364:skvx::Vec<4\2c\20int>\20skvx::operator&<4\2c\20int>\28skvx::Vec<4\2c\20int>\20const&\2c\20skvx::Vec<4\2c\20int>\20const&\29 365:skia_png_error 366:hb_face_reference_table 367:SkPixmap::SkPixmap\28\29 368:SkPath::SkPath\28SkPath\20const&\29 369:skgpu::ganesh::SurfaceDrawContext::addDrawOp\28GrClip\20const*\2c\20std::__2::unique_ptr>\2c\20std::__2::function\20const&\29 370:memcmp 371:hb_buffer_t::unsafe_to_break\28unsigned\20int\2c\20unsigned\20int\29 372:\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16::Expand\28unsigned\20long\20long\29 373:\28anonymous\20namespace\29::ColorTypeFilter_8888::Expand\28unsigned\20int\29 374:\28anonymous\20namespace\29::ColorTypeFilter_16161616::Expand\28unsigned\20long\20long\29 375:\28anonymous\20namespace\29::ColorTypeFilter_1010102::Expand\28unsigned\20long\20long\29 376:SkRecord::grow\28\29 377:SkPictureRecord::addDraw\28DrawType\2c\20unsigned\20long*\29 378:OT::Layout::Common::Coverage::get_coverage\28unsigned\20int\29\20const 379:std::__2::__cloc\28\29 380:sscanf 381:skvx::Vec<4\2c\20int>\20skvx::operator!<4\2c\20int>\28skvx::Vec<4\2c\20int>\20const&\29 382:skia_png_chunk_error 383:skia::textlayout::ParagraphImpl::getUTF16Index\28unsigned\20long\29\20const 384:__cxa_atexit 385:SkRect::intersect\28SkRect\20const&\29 386:SkMatrix::isIdentity\28\29\20const 387:skia_private::STArray<2\2c\20std::__2::unique_ptr>\2c\20true>::STArray\28skia_private::STArray<2\2c\20std::__2::unique_ptr>\2c\20true>&&\29 388:hb_blob_get_data_writable 389:bool\20hb_sanitize_context_t::check_range>\28OT::IntType\20const*\2c\20unsigned\20int\2c\20unsigned\20int\29\20const 390:__multf3 391:SkStringPrintf\28char\20const*\2c\20...\29 392:SkSL::Transform::\28anonymous\20namespace\29::BuiltinVariableScanner::sortNewElements\28\29::'lambda'\28SkSL::ProgramElement\20const*\2c\20SkSL::ProgramElement\20const*\29::operator\28\29\28SkSL::ProgramElement\20const*\2c\20SkSL::ProgramElement\20const*\29\20const 393:SkSL::Transform::FindAndDeclareBuiltinFunctions\28SkSL::Program&\29::$_0::operator\28\29\28SkSL::FunctionDefinition\20const*\2c\20SkSL::FunctionDefinition\20const*\29\20const 394:SkSL::GLSLCodeGenerator::writeLine\28std::__2::basic_string_view>\29 395:SkMatrix::mapPoints\28SkPoint*\2c\20int\29\20const 396:SkIRect::Intersects\28SkIRect\20const&\2c\20SkIRect\20const&\29 397:SkChecksum::Hash32\28void\20const*\2c\20unsigned\20long\2c\20unsigned\20int\29 398:std::__2::unique_ptr::Pair\2c\20char\20const*\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete::Pair\2c\20char\20const*\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 399:std::__2::unique_ptr>\20SkSL::evaluate_intrinsic\28SkSL::Context\20const&\2c\20std::__2::array\20const&\2c\20SkSL::Type\20const&\2c\20double\20\28*\29\28double\2c\20double\2c\20double\29\29 400:std::__2::basic_string_view>::compare\28std::__2::basic_string_view>\29\20const 401:std::__2::basic_string\2c\20std::__2::allocator>\20std::__2::operator+\5babi:v160004\5d\2c\20std::__2::allocator>\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20char\20const*\29 402:SkSL::String::printf\28char\20const*\2c\20...\29 403:SkSL::Pool::FreeMemory\28void*\29 404:SkRect::outset\28float\2c\20float\29 405:SkNullBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 406:SkMatrix::getType\28\29\20const 407:SkArenaAlloc::makeBytesAlignedTo\28unsigned\20long\2c\20unsigned\20long\29 408:GrGLSLVaryingHandler::addVarying\28char\20const*\2c\20GrGLSLVarying*\2c\20GrGLSLVaryingHandler::Interpolation\29 409:GrBackendFormats::AsGLFormat\28GrBackendFormat\20const&\29 410:FT_Stream_EnterFrame 411:strstr 412:std::__2::locale::id::__get\28\29 413:std::__2::locale::facet::facet\5babi:v160004\5d\28unsigned\20long\29 414:skgpu::UniqueKey::~UniqueKey\28\29 415:ft_mem_alloc 416:SkString::operator=\28char\20const*\29 417:SkRect::setBoundsCheck\28SkPoint\20const*\2c\20int\29 418:SkDPoint::approximatelyEqual\28SkDPoint\20const&\29\20const 419:GrProcessorSet::GrProcessorSet\28GrPaint&&\29 420:GrOpFlushState::bindPipelineAndScissorClip\28GrProgramInfo\20const&\2c\20SkRect\20const&\29 421:std::__2::locale::__imp::install\28std::__2::locale::facet*\2c\20long\29 422:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 423:skia_png_muldiv 424:f_t_mutex\28\29 425:SkTDStorage::reserve\28int\29 426:SkSL::RP::Builder::discard_stack\28int\29 427:GrStyledShape::~GrStyledShape\28\29 428:GrOp::~GrOp\28\29 429:GrGeometryProcessor::AttributeSet::initImplicit\28GrGeometryProcessor::Attribute\20const*\2c\20int\29 430:void\20SkSafeUnref\28GrSurface*\29 431:std::__2::basic_string\2c\20std::__2::allocator>::~basic_string\28\29 432:skif::FilterResult::~FilterResult\28\29 433:sk_sp::~sk_sp\28\29 434:hb_buffer_t::unsafe_to_concat\28unsigned\20int\2c\20unsigned\20int\29 435:bool\20OT::OffsetTo\2c\20true>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 436:SkSL::PipelineStage::PipelineStageCodeGenerator::writeExpression\28SkSL::Expression\20const&\2c\20SkSL::OperatorPrecedence\29 437:SkRegion::freeRuns\28\29 438:SkRect::roundOut\28\29\20const 439:SkPoint::length\28\29\20const 440:SkPath::~SkPath\28\29 441:SkMatrix::mapPoints\28SkPoint*\2c\20SkPoint\20const*\2c\20int\29\20const 442:std::__2::unique_ptr::~unique_ptr\5babi:v160004\5d\28\29 443:skvx::Vec<8\2c\20unsigned\20short>\20skvx::mulhi<8>\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\29 444:hb_ot_map_builder_t::add_gsub_pause\28bool\20\28*\29\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29\29 445:cf2_stack_pushFixed 446:SkSL::RP::Builder::binary_op\28SkSL::RP::BuilderOp\2c\20int\29 447:SkRect::contains\28SkRect\20const&\29\20const 448:GrTextureEffect::Make\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkMatrix\20const&\2c\20SkFilterMode\2c\20SkMipmapMode\29 449:GrShaderVar::GrShaderVar\28char\20const*\2c\20SkSLType\2c\20int\29 450:GrProcessor::operator\20new\28unsigned\20long\2c\20unsigned\20long\29 451:GrOp::GenID\28std::__2::atomic*\29 452:GrImageInfo::GrImageInfo\28GrImageInfo&&\29 453:GrGLSLVaryingHandler::addPassThroughAttribute\28GrShaderVar\20const&\2c\20char\20const*\2c\20GrGLSLVaryingHandler::Interpolation\29 454:GrFragmentProcessor::registerChild\28std::__2::unique_ptr>\2c\20SkSL::SampleUsage\29 455:textStyle_setDecoration 456:std::__2::istreambuf_iterator>::operator*\5babi:v160004\5d\28\29\20const 457:std::__2::basic_streambuf>::sgetc\5babi:v160004\5d\28\29 458:std::__2::__split_buffer&>::~__split_buffer\28\29 459:skia_private::THashTable>*\2c\20std::__2::unique_ptr>*\2c\20SkGoodHash>::Pair\2c\20std::__2::unique_ptr>*\2c\20skia_private::THashMap>*\2c\20std::__2::unique_ptr>*\2c\20SkGoodHash>::Pair>::Hash\28std::__2::unique_ptr>*\20const&\29 460:sk_sp::~sk_sp\28\29 461:hb_buffer_t::merge_clusters\28unsigned\20int\2c\20unsigned\20int\29 462:dlrealloc 463:byn$mgfn-shared$decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28bool&&\2c\20bool\20const&\29::'lambda'\28void*\29>\28SkTriColorShader&&\29::'lambda'\28char*\29::__invoke\28char*\29 464:SkSL::Nop::~Nop\28\29 465:SkRecords::FillBounds::updateSaveBounds\28SkRect\20const&\29 466:SkPoint::normalize\28\29 467:SkPath::lineTo\28float\2c\20float\29 468:SkJSONWriter::write\28char\20const*\2c\20unsigned\20long\29 469:GrSkSLFP::UniformPayloadSize\28SkRuntimeEffect\20const*\29 470:GrSkSLFP::GrSkSLFP\28sk_sp\2c\20char\20const*\2c\20GrSkSLFP::OptFlags\29 471:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 472:std::__2::unique_ptr::unique_ptr\5babi:v160004\5d\28char*\2c\20std::__2::__dependent_type\2c\20true>::__good_rval_ref_type\29 473:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 474:std::__2::enable_if::value\20&&\20sizeof\20\28unsigned\20int\29\20==\204\2c\20unsigned\20int>::type\20SkGoodHash::operator\28\29\28unsigned\20int\20const&\29\20const 475:std::__2::__throw_system_error\28int\2c\20char\20const*\29 476:skia_private::TArray::push_back_raw\28int\29 477:skgpu::UniqueKey::UniqueKey\28\29 478:sk_sp::reset\28GrSurface*\29 479:__multi3 480:SkTDArray::push_back\28SkPoint\20const&\29 481:SkStrokeRec::getStyle\28\29\20const 482:SkSL::fold_expression\28SkSL::Position\2c\20double\2c\20SkSL::Type\20const*\29 483:SkPath::lineTo\28SkPoint\20const&\29 484:SkMatrix::mapRect\28SkRect\20const&\2c\20SkApplyPerspectiveClip\29\20const 485:SkJSONWriter::appendBool\28char\20const*\2c\20bool\29 486:GrTriangulator::Comparator::sweep_lt\28SkPoint\20const&\2c\20SkPoint\20const&\29\20const 487:CFF::arg_stack_t::pop_uint\28\29 488:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 489:skia_png_crc_read 490:SkSpinlock::acquire\28\29 491:SkSL::Parser::rangeFrom\28SkSL::Position\29 492:SkSL::Parser::checkNext\28SkSL::Token::Kind\2c\20SkSL::Token*\29 493:SkMatrix::Translate\28float\2c\20float\29 494:GrOpFlushState::bindTextures\28GrGeometryProcessor\20const&\2c\20GrSurfaceProxy\20const*\20const*\2c\20GrPipeline\20const&\29 495:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 496:std::__2::__throw_bad_function_call\5babi:v160004\5d\28\29 497:std::__2::__split_buffer&>::__split_buffer\28unsigned\20long\2c\20unsigned\20long\2c\20std::__2::allocator&\29 498:skif::FilterResult::FilterResult\28\29 499:sk_malloc_throw\28unsigned\20long\2c\20unsigned\20long\29 500:sk_malloc_flags\28unsigned\20long\2c\20unsigned\20int\29 501:hb_paint_funcs_t::pop_transform\28void*\29 502:fma 503:a_cas 504:SkStrikeSpec::~SkStrikeSpec\28\29 505:SkSL::SymbolTable::addWithoutOwnershipOrDie\28SkSL::Symbol*\29 506:SkSL::RP::Builder::lastInstruction\28int\29 507:SkMatrix::rectStaysRect\28\29\20const 508:SkMatrix::isScaleTranslate\28\29\20const 509:SkColorSpaceXformSteps::SkColorSpaceXformSteps\28SkColorSpace\20const*\2c\20SkAlphaType\2c\20SkColorSpace\20const*\2c\20SkAlphaType\29 510:OT::ArrayOf\2c\20OT::IntType>::sanitize_shallow\28hb_sanitize_context_t*\29\20const 511:hb_draw_funcs_t::start_path\28void*\2c\20hb_draw_state_t&\29 512:hb_buffer_t::reverse\28\29 513:SkTDStorage::append\28\29 514:SkTDArray::append\28\29 515:SkString::operator=\28SkString\20const&\29 516:SkSL::Type::toCompound\28SkSL::Context\20const&\2c\20int\2c\20int\29\20const 517:SkSL::RP::Generator::binaryOp\28SkSL::Type\20const&\2c\20SkSL::RP::Generator::TypedOps\20const&\29 518:SkRecords::FillBounds::adjustAndMap\28SkRect\2c\20SkPaint\20const*\29\20const 519:SkPath::operator=\28SkPath\20const&\29 520:SkMatrix::preConcat\28SkMatrix\20const&\29 521:SkMatrix::postTranslate\28float\2c\20float\29 522:SkMatrix::mapRect\28SkRect*\2c\20SkApplyPerspectiveClip\29\20const 523:SkMatrix::Concat\28SkMatrix\20const&\2c\20SkMatrix\20const&\29 524:SkDCubic::set\28SkPoint\20const*\29 525:GrStyle::isSimpleFill\28\29\20const 526:GrGLSLVaryingHandler::emitAttributes\28GrGeometryProcessor\20const&\29 527:BlockIndexIterator::Last\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::First\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::Decrement\28SkBlockAllocator::Block\20const*\2c\20int\29\2c\20&SkTBlockList::GetItem\28SkBlockAllocator::Block*\2c\20int\29>::Item::setIndices\28\29 528:std::__2::unique_ptr::reset\5babi:v160004\5d\28unsigned\20char*\29 529:std::__2::istreambuf_iterator>::operator++\5babi:v160004\5d\28\29 530:skvx::Vec<8\2c\20unsigned\20short>\20skvx::operator+<8\2c\20unsigned\20short>\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\29 531:skgpu::VertexColor::set\28SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20bool\29 532:skgpu::ResourceKey::Builder::finish\28\29 533:sk_sp::~sk_sp\28\29 534:pthread_mutex_unlock 535:ft_validator_error 536:_hb_next_syllable\28hb_buffer_t*\2c\20unsigned\20int\29 537:SkSL::Type::MakeAliasType\28std::__2::basic_string_view>\2c\20SkSL::Type\20const&\29 538:SkSL::Parser::error\28SkSL::Token\2c\20std::__2::basic_string_view>\29 539:SkSL::GLSLCodeGenerator::writeIdentifier\28std::__2::basic_string_view>\29 540:SkSL::ConstantFolder::GetConstantValueForVariable\28SkSL::Expression\20const&\29 541:SkPictureRecord::addPaintPtr\28SkPaint\20const*\29 542:SkPath::reset\28\29 543:SkGlyph::rowBytes\28\29\20const 544:GrSurfaceProxy::backingStoreDimensions\28\29\20const 545:GrProgramInfo::visitFPProxies\28std::__2::function\20const&\29\20const 546:GrMeshDrawOp::createProgramInfo\28GrMeshDrawTarget*\29 547:GrGpu::handleDirtyContext\28\29 548:std::__2::istreambuf_iterator>::operator++\5babi:v160004\5d\28\29 549:std::__2::__optional_destruct_base::~__optional_destruct_base\5babi:v160004\5d\28\29 550:skvx::Vec<4\2c\20float>\20skvx::operator*<4\2c\20float\2c\20float\2c\20void>\28skvx::Vec<4\2c\20float>\20const&\2c\20float\29\20\28.6907\29 551:skvx::Vec<4\2c\20float>\20\28anonymous\20namespace\29::add_121>\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\29 552:skia_private::TArray::Allocate\28int\2c\20double\29 553:skia_private::TArray\2c\20true>::installDataAndUpdateCapacity\28SkSpan\29 554:pthread_mutex_lock 555:machine_index_t\2c\20hb_filter_iter_t\2c\20hb_array_t>\2c\20find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_glyph_info_t\20const&\29\2c\20$_6\20const&\2c\20\28void*\290>\2c\20find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_pair_t\29\2c\20$_5\20const&\2c\20\28void*\290>>>::operator=\28machine_index_t\2c\20hb_filter_iter_t\2c\20hb_array_t>\2c\20find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_glyph_info_t\20const&\29\2c\20$_6\20const&\2c\20\28void*\290>\2c\20find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_pair_t\29\2c\20$_5\20const&\2c\20\28void*\290>>>\20const&\29 556:hb_draw_funcs_t::emit_line_to\28void*\2c\20hb_draw_state_t&\2c\20float\2c\20float\29 557:SkWriter32::reserve\28unsigned\20long\29 558:SkTSect::pointLast\28\29\20const 559:SkTDArray::push_back\28int\20const&\29 560:SkStrokeRec::isHairlineStyle\28\29\20const 561:SkSL::Type::MakeVectorType\28std::__2::basic_string_view>\2c\20char\20const*\2c\20SkSL::Type\20const&\2c\20int\29 562:SkSL::TProgramVisitor::visitStatement\28SkSL::Statement\20const&\29 563:SkRect::join\28SkRect\20const&\29 564:SkPath::Iter::next\28SkPoint*\29 565:SkMatrix::Scale\28float\2c\20float\29 566:FT_Stream_ReadFields 567:FT_Stream_GetULong 568:target_from_texture_type\28GrTextureType\29 569:std::__2::vector>::__recommend\5babi:v160004\5d\28unsigned\20long\29\20const 570:std::__2::ctype::widen\5babi:v160004\5d\28char\29\20const 571:std::__2::__unique_if::__unique_array_unknown_bound\20std::__2::make_unique\5babi:v160004\5d\28unsigned\20long\29 572:skvx::Vec<4\2c\20unsigned\20short>\20skvx::operator+<4\2c\20unsigned\20short>\28skvx::Vec<4\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<4\2c\20unsigned\20short>\20const&\29 573:skvx::Vec<4\2c\20unsigned\20int>\20skvx::operator+<4\2c\20unsigned\20int>\28skvx::Vec<4\2c\20unsigned\20int>\20const&\2c\20skvx::Vec<4\2c\20unsigned\20int>\20const&\29 574:skia::textlayout::TextStyle::~TextStyle\28\29 575:skia::textlayout::TextStyle::TextStyle\28skia::textlayout::TextStyle\20const&\29 576:png_icc_profile_error 577:hb_font_t::get_nominal_glyph\28unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int\29 578:SkSL::RP::Program::makeStages\28skia_private::TArray*\2c\20SkArenaAlloc*\2c\20SkSpan\2c\20SkSL::RP::Program::SlotData\20const&\29\20const::$_2::operator\28\29\28\29\20const 579:SkSL::ConstructorCompound::MakeFromConstants\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20double\20const*\29 580:SkRect::roundOut\28SkIRect*\29\20const 581:SkPathPriv::Iterate::Iterate\28SkPath\20const&\29 582:SkMatrix::postConcat\28SkMatrix\20const&\29 583:SkImageShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const::$_2::operator\28\29\28SkRasterPipelineOp\2c\20SkRasterPipelineOp\2c\20\28anonymous\20namespace\29::MipLevelHelper\20const*\29\20const 584:SkColorSpace::MakeSRGB\28\29 585:SkBitmap::SkBitmap\28SkBitmap\20const&\29 586:OT::OffsetTo\2c\20OT::IntType\2c\20true>::operator\28\29\28void\20const*\29\20const 587:GrFragmentProcessor::ProgramImpl::invokeChild\28int\2c\20GrFragmentProcessor::ProgramImpl::EmitArgs&\2c\20std::__2::basic_string_view>\29 588:FT_Stream_ReleaseFrame 589:DefaultGeoProc::Impl::~Impl\28\29 590:std::__2::enable_if::value\20&&\20is_move_assignable::value\2c\20void>::type\20std::__2::swap\5babi:v160004\5d\28skia::textlayout::OneLineShaper::RunBlock&\2c\20skia::textlayout::OneLineShaper::RunBlock&\29 591:std::__2::enable_if<_CheckArrayPointerConversion>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Entry*\2c\20skia::textlayout::ParagraphCacheKey\2c\20SkLRUCache>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Traits>::Slot*>::value\2c\20void>::type\20std::__2::unique_ptr>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Entry*\2c\20skia::textlayout::ParagraphCacheKey\2c\20SkLRUCache>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Traits>::Slot\20\5b\5d\2c\20std::__2::default_delete>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Entry*\2c\20skia::textlayout::ParagraphCacheKey\2c\20SkLRUCache>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Traits>::Slot\20\5b\5d>>::reset\5babi:v160004\5d>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Entry*\2c\20skia::textlayout::ParagraphCacheKey\2c\20SkLRUCache>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Traits>::Slot*>\28skia_private::THashTable>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Entry*\2c\20skia::textlayout::ParagraphCacheKey\2c\20SkLRUCache>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Traits>::Slot*\29 592:sk_srgb_singleton\28\29 593:out 594:cosf 595:cf2_stack_popInt 596:SkSemaphore::~SkSemaphore\28\29 597:SkSL::Type::coerceExpression\28std::__2::unique_ptr>\2c\20SkSL::Context\20const&\29\20const 598:SkSL::Type::MakeGenericType\28char\20const*\2c\20SkSpan\2c\20SkSL::Type\20const*\29 599:SkSL::RP::SlotManager::getVariableSlots\28SkSL::Variable\20const&\29 600:SkRGBA4f<\28SkAlphaType\292>::operator!=\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 601:SkPathStroker::lineTo\28SkPoint\20const&\2c\20SkPath::Iter\20const*\29 602:SkPath::conicTo\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\29 603:SkPaint::setColor\28unsigned\20int\29 604:SkImageInfo::minRowBytes\28\29\20const 605:SkDrawBase::~SkDrawBase\28\29 606:SkDCubic::ptAtT\28double\29\20const 607:SkCanvas::internalQuickReject\28SkRect\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const*\29 608:GrStyle::~GrStyle\28\29 609:GrShaderVar::operator=\28GrShaderVar&&\29 610:GrProcessor::operator\20delete\28void*\29 611:GrImageInfo::GrImageInfo\28SkImageInfo\20const&\29 612:GrColorInfo::GrColorInfo\28GrColorType\2c\20SkAlphaType\2c\20sk_sp\29 613:GrCaps::getDefaultBackendFormat\28GrColorType\2c\20skgpu::Renderable\29\20const 614:FT_Outline_Translate 615:std::__2::ctype\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 616:std::__2::basic_string\2c\20std::__2::allocator>::push_back\28char\29 617:std::__2::basic_string\2c\20std::__2::allocator>::operator=\5babi:v160004\5d\28std::__2::basic_string\2c\20std::__2::allocator>&&\29 618:std::__2::__check_grouping\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int*\2c\20unsigned\20int*\2c\20unsigned\20int&\29 619:skvx::Vec<4\2c\20int>\20skvx::operator|<4\2c\20int>\28skvx::Vec<4\2c\20int>\20const&\2c\20skvx::Vec<4\2c\20int>\20const&\29 620:skia_private::TArray::push_back\28int&&\29 621:skia_png_chunk_report 622:pad 623:__memcpy 624:__ashlti3 625:SkTCoincident::setPerp\28SkTCurve\20const&\2c\20double\2c\20SkDPoint\20const&\2c\20SkTCurve\20const&\29 626:SkSL::Type::MakeMatrixType\28std::__2::basic_string_view>\2c\20char\20const*\2c\20SkSL::Type\20const&\2c\20int\2c\20signed\20char\29 627:SkSL::Parser::nextToken\28\29 628:SkSL::Operator::tightOperatorName\28\29\20const 629:SkSL::Inliner::inlineExpression\28SkSL::Position\2c\20skia_private::THashMap>\2c\20SkGoodHash>*\2c\20SkSL::SymbolTable*\2c\20SkSL::Expression\20const&\29::$_0::operator\28\29\28std::__2::unique_ptr>\20const&\29\20const 630:SkSL::Analysis::HasSideEffects\28SkSL::Expression\20const&\29 631:SkPath::Iter::setPath\28SkPath\20const&\2c\20bool\29 632:SkDVector::crossCheck\28SkDVector\20const&\29\20const 633:SkColorSpaceXformSteps::apply\28float*\29\20const 634:SkBlitter::~SkBlitter\28\29 635:SkBitmapDevice::drawMesh\28SkMesh\20const&\2c\20sk_sp\2c\20SkPaint\20const&\29 636:GrSimpleMeshDrawOpHelper::~GrSimpleMeshDrawOpHelper\28\29 637:GrSimpleMeshDrawOpHelper::visitProxies\28std::__2::function\20const&\29\20const 638:GrShape::reset\28\29 639:GrShaderVar::appendDecl\28GrShaderCaps\20const*\2c\20SkString*\29\20const 640:GrQuad::MakeFromRect\28SkRect\20const&\2c\20SkMatrix\20const&\29 641:GrOpFlushState::drawMesh\28GrSimpleMesh\20const&\29 642:GrMatrixEffect::Make\28SkMatrix\20const&\2c\20std::__2::unique_ptr>\29 643:GrAAConvexTessellator::Ring::index\28int\29\20const 644:DefaultGeoProc::~DefaultGeoProc\28\29 645:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 646:skia_private::TArray::preallocateNewData\28int\2c\20double\29 647:skgpu::ResourceKey::operator==\28skgpu::ResourceKey\20const&\29\20const 648:hb_buffer_t::unsafe_to_break_from_outbuffer\28unsigned\20int\2c\20unsigned\20int\29 649:cff2_path_procs_extents_t::curve\28CFF::cff2_cs_interp_env_t&\2c\20cff2_extents_param_t&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\29 650:cff2_path_param_t::cubic_to\28CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\29 651:cff1_path_procs_extents_t::curve\28CFF::cff1_cs_interp_env_t&\2c\20cff1_extents_param_t&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\29 652:cff1_path_param_t::cubic_to\28CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\29 653:byn$mgfn-shared$std::__2::__function::__func\2c\20float\20\28skia::textlayout::SkRange\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29>::__clone\28\29\20const 654:byn$mgfn-shared$std::__2::__function::__func\2c\20void\20\28SkIRect\20const&\29>::__clone\28\29\20const 655:_hb_glyph_info_get_modified_combining_class\28hb_glyph_info_t\20const*\29 656:SkSL::TProgramVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 657:SkRasterPipeline::extend\28SkRasterPipeline\20const&\29 658:SkPixmap::operator=\28SkPixmap\20const&\29 659:SkPath::moveTo\28SkPoint\20const&\29 660:SkPath::close\28\29 661:SkPath::RangeIter::operator++\28\29 662:SkOpPtT::contains\28SkOpPtT\20const*\29\20const 663:SkNullBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 664:SkMatrixPriv::CheapEqual\28SkMatrix\20const&\2c\20SkMatrix\20const&\29 665:SkIRect::intersect\28SkIRect\20const&\2c\20SkIRect\20const&\29 666:SkAAClipBlitterWrapper::~SkAAClipBlitterWrapper\28\29 667:OT::hb_paint_context_t::recurse\28OT::Paint\20const&\29 668:OT::hb_ot_apply_context_t::init_iters\28\29 669:GrTextureProxy::mipmapped\28\29\20const 670:GrStyledShape::asPath\28SkPath*\29\20const 671:GrShape::bounds\28\29\20const 672:GrShaderVar::GrShaderVar\28char\20const*\2c\20SkSLType\2c\20GrShaderVar::TypeModifier\29 673:GrGLGpu::setTextureUnit\28int\29 674:GrGLGpu::clearErrorsAndCheckForOOM\28\29 675:GrColorSpaceXformEffect::onMakeProgramImpl\28\29\20const::Impl::~Impl\28\29 676:GrCPixmap::GrCPixmap\28GrImageInfo\2c\20void\20const*\2c\20unsigned\20long\29 677:GrAppliedClip::~GrAppliedClip\28\29 678:FT_Load_Glyph 679:CFF::cff_stack_t::pop\28\29 680:void\20SkOnce::operator\28\29*\29\2c\20SkAlignedSTStorage<1\2c\20skgpu::UniqueKey>*>\28void\20\28&\29\28SkAlignedSTStorage<1\2c\20skgpu::UniqueKey>*\29\2c\20SkAlignedSTStorage<1\2c\20skgpu::UniqueKey>*&&\29 681:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 682:std::__2::numpunct::thousands_sep\5babi:v160004\5d\28\29\20const 683:std::__2::numpunct::grouping\5babi:v160004\5d\28\29\20const 684:std::__2::ctype\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 685:std::__2::basic_string\2c\20std::__2::allocator>::__move_assign\5babi:v160004\5d\28std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::integral_constant\29 686:std::__2::basic_string\2c\20std::__2::allocator>::__throw_length_error\5babi:v160004\5d\28\29\20const 687:skvx::Vec<4\2c\20skvx::Mask::type>\20skvx::operator<<4\2c\20float>\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\29 688:skgpu::ResourceKey::Builder::Builder\28skgpu::ResourceKey*\2c\20unsigned\20int\2c\20int\29 689:rewind\28GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::Comparator\20const&\29 690:hb_sanitize_context_t::end_processing\28\29 691:hb_buffer_t::move_to\28unsigned\20int\29 692:ft_mem_qalloc 693:_output_with_dotted_circle\28hb_buffer_t*\29 694:SkTSpan::pointLast\28\29\20const 695:SkTDStorage::resize\28int\29 696:SkSL::TProgramVisitor::visitExpression\28SkSL::Expression\20const&\29 697:SkSL::Parser::rangeFrom\28SkSL::Token\29 698:SkSL::FunctionDeclaration::description\28\29\20const 699:SkPathRef::isFinite\28\29\20const 700:SkMatrix::mapXY\28float\2c\20float\2c\20SkPoint*\29\20const 701:SkDrawable::getFlattenableType\28\29\20const 702:SkDPoint::ApproximatelyEqual\28SkPoint\20const&\2c\20SkPoint\20const&\29 703:SkBlockAllocator::reset\28\29 704:GrSimpleMeshDrawOpHelperWithStencil::finalizeProcessors\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\2c\20GrProcessorAnalysisCoverage\2c\20SkRGBA4f<\28SkAlphaType\292>*\2c\20bool*\29 705:GrGeometryProcessor::ProgramImpl::SetTransform\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrResourceHandle\20const&\2c\20SkMatrix\20const&\2c\20SkMatrix*\29 706:GrGLSLVertexGeoBuilder::insertFunction\28char\20const*\29 707:GrDrawingManager::flushIfNecessary\28\29 708:FT_Stream_ExtractFrame 709:Cr_z_crc32 710:std::__2::enable_if<_CheckArrayPointerConversion::value\2c\20void>::type\20std::__2::unique_ptr>::reset\5babi:v160004\5d\28GrGLCaps::ColorTypeInfo*\29 711:std::__2::ctype::widen\5babi:v160004\5d\28char\29\20const 712:std::__2::char_traits::assign\28char&\2c\20char\20const&\29 713:std::__2::basic_string\2c\20std::__2::allocator>::__set_long_size\5babi:v160004\5d\28unsigned\20long\29 714:std::__2::__unique_if::__unique_array_unknown_bound\20std::__2::make_unique\5babi:v160004\5d\28unsigned\20long\29 715:std::__2::__compressed_pair_elem::__compressed_pair_elem\5babi:v160004\5d\28void\20\28*&&\29\28void*\29\29 716:skvx::Vec<4\2c\20skvx::Mask::type>\20skvx::operator<<4\2c\20float\2c\20float\2c\20void>\28skvx::Vec<4\2c\20float>\20const&\2c\20float\29 717:skia_private::TArray::checkRealloc\28int\2c\20double\29 718:skgpu::tess::StrokeIterator::enqueue\28skgpu::tess::StrokeIterator::Verb\2c\20SkPoint\20const*\2c\20float\20const*\29 719:skgpu::ganesh::SurfaceFillContext::getOpsTask\28\29 720:skgpu::ganesh::AsView\28GrRecordingContext*\2c\20SkImage\20const*\2c\20skgpu::Mipmapped\2c\20GrImageTexGenPolicy\29 721:fmodf 722:__addtf3 723:SkSL::RP::Builder::push_constant_i\28int\2c\20int\29 724:SkSL::RP::Builder::label\28int\29 725:SkPathRef::Editor::Editor\28sk_sp*\2c\20int\2c\20int\2c\20int\29 726:SkPath::isConvex\28\29\20const 727:SkPaintToGrPaint\28GrRecordingContext*\2c\20GrColorInfo\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\2c\20SkSurfaceProps\20const&\2c\20GrPaint*\29 728:SkPaint::asBlendMode\28\29\20const 729:SkMatrix::preTranslate\28float\2c\20float\29 730:SkImageInfo::operator=\28SkImageInfo\20const&\29 731:SkImageInfo::MakeA8\28int\2c\20int\29 732:SkImageGenerator::onIsValid\28GrRecordingContext*\29\20const 733:SkImageGenerator::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkImageGenerator::Options\20const&\29 734:SkDevice::createDevice\28SkDevice::CreateInfo\20const&\2c\20SkPaint\20const*\29 735:SkCanvas::aboutToDraw\28SkPaint\20const&\2c\20SkRect\20const*\29 736:GrSkSLFP::addChild\28std::__2::unique_ptr>\2c\20bool\29 737:GrProcessorSet::~GrProcessorSet\28\29 738:GrGeometryProcessor::Attribute&\20skia_private::TArray::emplace_back\28char\20const\20\28&\29\20\5b10\5d\2c\20GrVertexAttribType&&\2c\20SkSLType&&\29 739:GrGLGpu::bindBuffer\28GrGpuBufferType\2c\20GrBuffer\20const*\29 740:GrFragmentProcessor::ProgramImpl::invokeChild\28int\2c\20char\20const*\2c\20char\20const*\2c\20GrFragmentProcessor::ProgramImpl::EmitArgs&\2c\20std::__2::basic_string_view>\29 741:FT_Stream_ReadByte 742:ubidi_getParaLevelAtIndex_skia 743:std::__2::char_traits::copy\28char*\2c\20char\20const*\2c\20unsigned\20long\29 744:std::__2::basic_string\2c\20std::__2::allocator>::begin\5babi:v160004\5d\28\29 745:std::__2::basic_string\2c\20std::__2::allocator>::__set_short_size\5babi:v160004\5d\28unsigned\20long\29 746:std::__2::__libcpp_snprintf_l\28char*\2c\20unsigned\20long\2c\20__locale_struct*\2c\20char\20const*\2c\20...\29 747:skia_private::TArray::push_back\28bool&&\29 748:skia::textlayout::OneLineShaper::RunBlock::operator=\28skia::textlayout::OneLineShaper::RunBlock&&\29 749:skia::textlayout::Cluster::run\28\29\20const 750:skgpu::tess::PatchWriter\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\2964>\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\2932>\2c\20skgpu::tess::AddTrianglesWhenChopping\2c\20skgpu::tess::DiscardFlatCurves>::accountForCurve\28float\29 751:skgpu::ganesh::SurfaceContext::PixelTransferResult::~PixelTransferResult\28\29 752:is_equal\28std::type_info\20const*\2c\20std::type_info\20const*\2c\20bool\29 753:hb_ot_map_t::get_1_mask\28unsigned\20int\29\20const 754:hb_font_get_glyph 755:hb_draw_funcs_t::emit_quadratic_to\28void*\2c\20hb_draw_state_t&\2c\20float\2c\20float\2c\20float\2c\20float\29 756:hb_buffer_t::unsafe_to_concat_from_outbuffer\28unsigned\20int\2c\20unsigned\20int\29 757:cff_index_get_sid_string 758:_hb_font_funcs_set_middle\28hb_font_funcs_t*\2c\20void*\2c\20void\20\28*\29\28void*\29\29 759:__floatsitf 760:SkWriter32::writeScalar\28float\29 761:SkTDArray<\28anonymous\20namespace\29::YOffset>::append\28\29 762:SkString::data\28\29 763:SkSL::RP::Generator::pushVectorizedExpression\28SkSL::Expression\20const&\2c\20SkSL::Type\20const&\29 764:SkSL::RP::Builder::swizzle\28int\2c\20SkSpan\29 765:SkSL::Parser::error\28SkSL::Position\2c\20std::__2::basic_string_view>\29 766:SkSL::Nop::Make\28\29 767:SkRegion::setRect\28SkIRect\20const&\29 768:SkMatrix::getMaxScale\28\29\20const 769:SkJSONWriter::appendHexU32\28char\20const*\2c\20unsigned\20int\29 770:SkBlender::Mode\28SkBlendMode\29 771:SkBitmap::tryAllocPixels\28SkImageInfo\20const&\29 772:SkBitmap::setInfo\28SkImageInfo\20const&\2c\20unsigned\20long\29 773:SkArenaAlloc::SkArenaAlloc\28char*\2c\20unsigned\20long\2c\20unsigned\20long\29 774:OT::hb_ot_apply_context_t::skipping_iterator_t::next\28unsigned\20int*\29 775:OT::VarSizedBinSearchArrayOf>::get_length\28\29\20const 776:GrMeshDrawTarget::allocMesh\28\29 777:GrGLGpu::bindTextureToScratchUnit\28unsigned\20int\2c\20int\29 778:GrGLFunction::GrGLFunction\28void\20\28*\29\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29\29::'lambda'\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29::__invoke\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 779:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::~SwizzleFragmentProcessor\28\29 780:GrCaps::getReadSwizzle\28GrBackendFormat\20const&\2c\20GrColorType\29\20const 781:GrBackendFormat::GrBackendFormat\28GrBackendFormat\20const&\29 782:CFF::cff1_cs_opset_t::check_width\28unsigned\20int\2c\20CFF::cff1_cs_interp_env_t&\2c\20cff1_extents_param_t&\29 783:AutoFTAccess::AutoFTAccess\28SkTypeface_FreeType\20const*\29 784:void\20SkSafeUnref\28SharedGenerator*\29 785:strchr 786:std::__2::vector>::__swap_out_circular_buffer\28std::__2::__split_buffer&>&\29 787:std::__2::ctype::is\5babi:v160004\5d\28unsigned\20long\2c\20char\29\20const 788:std::__2::__function::__value_func::__value_func\5babi:v160004\5d\28std::__2::__function::__value_func&&\29 789:skif::Context::~Context\28\29 790:skia_private::TArray>\2c\20true>::reserve_exact\28int\29 791:skia_png_get_uint_32 792:skia::textlayout::OneLineShaper::clusterIndex\28unsigned\20long\29 793:skgpu::ganesh::SurfaceDrawContext::chooseAAType\28GrAA\29 794:skgpu::UniqueKey::GenerateDomain\28\29 795:hb_buffer_t::sync_so_far\28\29 796:hb_buffer_t::sync\28\29 797:em_task_queue_is_empty 798:compute_side\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\29 799:cff_parse_num 800:byn$mgfn-shared$skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 801:SkWriter32::writeRect\28SkRect\20const&\29 802:SkSL::Type::clone\28SkSL::Context\20const&\2c\20SkSL::SymbolTable*\29\20const 803:SkSL::SymbolTable::find\28std::__2::basic_string_view>\29\20const 804:SkSL::RP::Generator::writeStatement\28SkSL::Statement\20const&\29 805:SkSL::RP::Builder::unary_op\28SkSL::RP::BuilderOp\2c\20int\29 806:SkSL::Parser::operatorRight\28SkSL::Parser::AutoDepth&\2c\20SkSL::OperatorKind\2c\20std::__2::unique_ptr>\20\28SkSL::Parser::*\29\28\29\2c\20std::__2::unique_ptr>&\29 807:SkSL::Parser::expression\28\29 808:SkRecords::FillBounds::pushControl\28\29 809:SkRasterClip::~SkRasterClip\28\29 810:SkRGBA4f<\28SkAlphaType\293>::FromColor\28unsigned\20int\29 811:SkPath::moveTo\28float\2c\20float\29 812:SkPaint::setBlendMode\28SkBlendMode\29 813:SkM44::asM33\28\29\20const 814:SkImageFilter_Base::getFlattenableType\28\29\20const 815:SkIRect::makeOutset\28int\2c\20int\29\20const 816:SkDQuad::ptAtT\28double\29\20const 817:SkDConic::ptAtT\28double\29\20const 818:SkArenaAlloc::~SkArenaAlloc\28\29 819:SkAAClip::setEmpty\28\29 820:OT::hb_ot_apply_context_t::skipping_iterator_t::reset\28unsigned\20int\29 821:GrTriangulator::Line::intersect\28GrTriangulator::Line\20const&\2c\20SkPoint*\29\20const 822:GrImageInfo::GrImageInfo\28GrColorType\2c\20SkAlphaType\2c\20sk_sp\2c\20SkISize\20const&\29 823:GrGpuBuffer::unmap\28\29 824:GrGeometryProcessor::ProgramImpl::WriteLocalCoord\28GrGLSLVertexBuilder*\2c\20GrGLSLUniformHandler*\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\2c\20GrShaderVar\2c\20SkMatrix\20const&\2c\20GrResourceHandle*\29 825:GrGeometryProcessor::ProgramImpl::ComputeMatrixKey\28GrShaderCaps\20const&\2c\20SkMatrix\20const&\29 826:GrFragmentProcessors::Make\28SkShader\20const*\2c\20GrFPArgs\20const&\2c\20SkShaders::MatrixRec\20const&\29 827:GrFragmentProcessor::GrFragmentProcessor\28GrFragmentProcessor\20const&\29 828:void\20SkSafeUnref\28SkMipmap*\29 829:ubidi_getMemory_skia 830:std::__2::vector>::~vector\5babi:v160004\5d\28\29 831:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 832:std::__2::optional::value\5babi:v160004\5d\28\29\20const\20& 833:std::__2::numpunct::truename\5babi:v160004\5d\28\29\20const 834:std::__2::numpunct::falsename\5babi:v160004\5d\28\29\20const 835:std::__2::numpunct::decimal_point\5babi:v160004\5d\28\29\20const 836:std::__2::moneypunct::do_grouping\28\29\20const 837:std::__2::ctype::is\5babi:v160004\5d\28unsigned\20long\2c\20wchar_t\29\20const 838:std::__2::basic_string\2c\20std::__2::allocator>::empty\5babi:v160004\5d\28\29\20const 839:std::__2::basic_string\2c\20std::__2::allocator>::__set_long_cap\5babi:v160004\5d\28unsigned\20long\29 840:std::__2::basic_string\2c\20std::__2::allocator>::__is_long\5babi:v160004\5d\28\29\20const 841:skvx::Vec<4\2c\20float>\20skvx::operator-<4\2c\20float\2c\20float\2c\20void>\28float\2c\20skvx::Vec<4\2c\20float>\20const&\29 842:skvx::Vec<4\2c\20float>\20skvx::operator*<4\2c\20float>\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\29 843:skif::LayerSpace::outset\28skif::LayerSpace\20const&\29 844:skif::Context::Context\28skif::Context\20const&\29 845:skia_private::THashTable>*\2c\20std::__2::unique_ptr>*\2c\20SkGoodHash>::Pair\2c\20std::__2::unique_ptr>*\2c\20skia_private::THashMap>*\2c\20std::__2::unique_ptr>*\2c\20SkGoodHash>::Pair>::uncheckedSet\28skia_private::THashMap>*\2c\20std::__2::unique_ptr>*\2c\20SkGoodHash>::Pair&&\29 846:skia_private::THashTable>\2c\20SkGoodHash>::Pair\2c\20SkImageFilter\20const*\2c\20skia_private::THashMap>\2c\20SkGoodHash>::Pair>::Hash\28SkImageFilter\20const*\20const&\29 847:skia_private::TArray::checkRealloc\28int\2c\20double\29 848:skia_private::TArray::preallocateNewData\28int\2c\20double\29 849:skia_private::STArray<2\2c\20std::__2::unique_ptr>\2c\20true>::STArray\28skia_private::STArray<2\2c\20std::__2::unique_ptr>\2c\20true>&&\29 850:skia_png_reciprocal 851:skia_png_malloc_warn 852:skia::textlayout::\28anonymous\20namespace\29::relax\28float\29 853:skgpu::ganesh::SurfaceFillContext::arenaAlloc\28\29 854:skgpu::ganesh::SurfaceContext::readPixels\28GrDirectContext*\2c\20GrPixmap\2c\20SkIPoint\29 855:skgpu::Swizzle::RGBA\28\29 856:sk_sp::reset\28SkData*\29 857:sk_sp::~sk_sp\28\29 858:operator==\28SkIRect\20const&\2c\20SkIRect\20const&\29 859:crc32_z 860:__unlockfile 861:__lockfile 862:SkTSect::SkTSect\28SkTCurve\20const&\29 863:SkSL::String::Separator\28\29 864:SkSL::RP::Generator::pushIntrinsic\28SkSL::RP::BuilderOp\2c\20SkSL::Expression\20const&\29 865:SkSL::ProgramConfig::strictES2Mode\28\29\20const 866:SkSL::Parser::layoutInt\28\29 867:SkRegion::Cliperator::next\28\29 868:SkRegion::Cliperator::Cliperator\28SkRegion\20const&\2c\20SkIRect\20const&\29 869:SkPathRef::growForVerb\28int\2c\20float\29 870:SkPath::transform\28SkMatrix\20const&\2c\20SkPath*\2c\20SkApplyPerspectiveClip\29\20const 871:SkPaint::setColor\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkColorSpace*\29 872:SkMipmap::ComputeLevelCount\28int\2c\20int\29 873:SkMatrix::MakeAll\28float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 874:SkImageInfo::operator=\28SkImageInfo&&\29 875:SkDLine::nearPoint\28SkDPoint\20const&\2c\20bool*\29\20const 876:SkChopQuadAt\28SkPoint\20const*\2c\20SkPoint*\2c\20float\29 877:SkBaseShadowTessellator::appendTriangle\28unsigned\20short\2c\20unsigned\20short\2c\20unsigned\20short\29 878:SkAutoConicToQuads::computeQuads\28SkPoint\20const*\2c\20float\2c\20float\29 879:OT::hb_ot_apply_context_t::~hb_ot_apply_context_t\28\29 880:OT::hb_ot_apply_context_t::hb_ot_apply_context_t\28unsigned\20int\2c\20hb_font_t*\2c\20hb_buffer_t*\2c\20hb_blob_t*\29 881:OT::ClassDef::get_class\28unsigned\20int\29\20const 882:GrTextureEffect::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::$_4::operator\28\29\28char\20const*\29\20const 883:GrSimpleMeshDrawOpHelper::isCompatible\28GrSimpleMeshDrawOpHelper\20const&\2c\20GrCaps\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20bool\29\20const 884:GrShaderVar::GrShaderVar\28GrShaderVar\20const&\29 885:GrQuad::writeVertex\28int\2c\20skgpu::VertexWriter&\29\20const 886:GrOpFlushState::bindBuffers\28sk_sp\2c\20sk_sp\2c\20sk_sp\2c\20GrPrimitiveRestart\29 887:GrGLGpu::getErrorAndCheckForOOM\28\29 888:GrGLFunction::GrGLFunction\28void\20\28*\29\28int\2c\20int\2c\20float\20const*\29\29::'lambda'\28void\20const*\2c\20int\2c\20int\2c\20float\20const*\29::__invoke\28void\20const*\2c\20int\2c\20int\2c\20float\20const*\29 889:GrColorInfo::GrColorInfo\28SkColorInfo\20const&\29 890:GrAAConvexTessellator::addTri\28int\2c\20int\2c\20int\29 891:FT_Stream_ReadULong 892:FT_Get_Module 893:AlmostBequalUlps\28double\2c\20double\29 894:tt_face_get_name 895:std::__2::vector>::~vector\5babi:v160004\5d\28\29 896:std::__2::unique_ptr::reset\5babi:v160004\5d\28void*\29 897:std::__2::optional::value\5babi:v160004\5d\28\29\20& 898:std::__2::optional::value\5babi:v160004\5d\28\29\20& 899:std::__2::__variant_detail::__dtor\2c\20std::__2::unique_ptr>>\2c\20\28std::__2::__variant_detail::_Trait\291>::__destroy\5babi:v160004\5d\28\29 900:std::__2::__variant_detail::__dtor\2c\20\28std::__2::__variant_detail::_Trait\291>::__destroy\5babi:v160004\5d\28\29 901:std::__2::__libcpp_locale_guard::~__libcpp_locale_guard\5babi:v160004\5d\28\29 902:std::__2::__libcpp_locale_guard::__libcpp_locale_guard\5babi:v160004\5d\28__locale_struct*&\29 903:skvx::Vec<4\2c\20float>&\20skvx::operator+=<4\2c\20float>\28skvx::Vec<4\2c\20float>&\2c\20skvx::Vec<4\2c\20float>\20const&\29\20\28.5786\29 904:skvx::Vec<2\2c\20float>\20skvx::max<2\2c\20float>\28skvx::Vec<2\2c\20float>\20const&\2c\20skvx::Vec<2\2c\20float>\20const&\29 905:sk_sp::operator=\28sk_sp\20const&\29 906:sk_sp&\20skia_private::TArray\2c\20true>::emplace_back>\28sk_sp&&\29 907:skData_getConstPointer 908:sinf 909:path_cubicTo 910:inflateStateCheck 911:hb_vector_t::alloc\28unsigned\20int\2c\20bool\29 912:hb_user_data_array_t::fini\28\29 913:hb_iter_t\2c\20hb_filter_iter_t\2c\20hb_array_t>\2c\20find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_glyph_info_t\20const&\29\2c\20$_6\20const&\2c\20\28void*\290>\2c\20find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_pair_t\29\2c\20$_5\20const&\2c\20\28void*\290>>>\2c\20hb_pair_t>>::operator+\28unsigned\20int\29\20const 914:hb_indic_would_substitute_feature_t::would_substitute\28unsigned\20int\20const*\2c\20unsigned\20int\2c\20hb_face_t*\29\20const 915:hb_font_t::get_glyph_h_advance\28unsigned\20int\29 916:hb_draw_funcs_t::emit_close_path\28void*\2c\20hb_draw_state_t&\29 917:ft_module_get_service 918:degenerate_vector\28SkPoint\20const&\29 919:byn$mgfn-shared$skia_private::TArray\2c\20true>::preallocateNewData\28int\2c\20double\29 920:bool\20hb_sanitize_context_t::check_array>\28OT::IntType\20const*\2c\20unsigned\20int\29\20const 921:__sindf 922:__shlim 923:__cosdf 924:SkWriter32::write\28void\20const*\2c\20unsigned\20long\29 925:SkString::equals\28SkString\20const&\29\20const 926:SkSL::evaluate_pairwise_intrinsic\28SkSL::Context\20const&\2c\20std::__2::array\20const&\2c\20SkSL::Type\20const&\2c\20double\20\28*\29\28double\2c\20double\2c\20double\29\29 927:SkSL::StringStream::str\28\29\20const 928:SkSL::RP::Generator::makeLValue\28SkSL::Expression\20const&\2c\20bool\29 929:SkSL::Parser::expressionOrPoison\28SkSL::Position\2c\20std::__2::unique_ptr>\29 930:SkSL::GLSLCodeGenerator::getTypeName\28SkSL::Type\20const&\29 931:SkSL::BinaryExpression::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20SkSL::Operator\2c\20std::__2::unique_ptr>\29 932:SkRegion::setEmpty\28\29 933:SkRect::round\28\29\20const 934:SkPixmap::SkPixmap\28SkPixmap\20const&\29 935:SkPaint::getAlpha\28\29\20const 936:SkMatrix::preScale\28float\2c\20float\29 937:SkIRect::makeOffset\28int\2c\20int\29\20const 938:SkIRect::join\28SkIRect\20const&\29 939:SkDrawBase::drawPath\28SkPath\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const*\2c\20bool\29\20const 940:SkDevice::makeSpecial\28SkBitmap\20const&\29 941:SkData::PrivateNewWithCopy\28void\20const*\2c\20unsigned\20long\29 942:SkData::MakeUninitialized\28unsigned\20long\29 943:SkChopCubicAt\28SkPoint\20const*\2c\20SkPoint*\2c\20float\29 944:SkCanvas::concat\28SkMatrix\20const&\29 945:SkCanvas::checkForDeferredSave\28\29 946:SkBitmapCache::Rec::getKey\28\29\20const 947:SkAAClip::Builder::addRun\28int\2c\20int\2c\20unsigned\20int\2c\20int\29 948:GrTriangulator::Line::Line\28SkPoint\20const&\2c\20SkPoint\20const&\29 949:GrTriangulator::Edge::isRightOf\28GrTriangulator::Vertex\20const&\29\20const 950:GrStyledShape::GrStyledShape\28GrStyledShape\20const&\29 951:GrShape::setType\28GrShape::Type\29 952:GrPixmapBase::GrPixmapBase\28GrPixmapBase\20const&\29 953:GrMakeUncachedBitmapProxyView\28GrRecordingContext*\2c\20SkBitmap\20const&\2c\20skgpu::Mipmapped\2c\20SkBackingFit\2c\20skgpu::Budgeted\29 954:GrIORef::unref\28\29\20const 955:GrGeometryProcessor::TextureSampler::reset\28GrSamplerState\2c\20GrBackendFormat\20const&\2c\20skgpu::Swizzle\20const&\29 956:GrGLSLShaderBuilder::getMangledFunctionName\28char\20const*\29 957:GrGLGpu::deleteFramebuffer\28unsigned\20int\29 958:GrGLExtensions::has\28char\20const*\29\20const 959:GrBackendFormats::MakeGL\28unsigned\20int\2c\20unsigned\20int\29 960:vsnprintf 961:top12 962:std::__2::vector>::erase\28std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\29 963:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 964:std::__2::to_string\28long\20long\29 965:std::__2::pair::type\2c\20std::__2::__unwrap_ref_decay::type>\20std::__2::make_pair\5babi:v160004\5d\28char\20const*&&\2c\20char*&&\29 966:std::__2::optional::value\5babi:v160004\5d\28\29\20& 967:std::__2::locale::use_facet\28std::__2::locale::id&\29\20const 968:std::__2::basic_string\2c\20std::__2::allocator>::operator=\5babi:v160004\5d\28std::__2::basic_string\2c\20std::__2::allocator>&&\29 969:std::__2::basic_string\2c\20std::__2::allocator>\20std::__2::operator+\2c\20std::__2::allocator>\28char\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 970:std::__2::basic_string\2c\20std::__2::allocator>::__init\28char\20const*\2c\20unsigned\20long\29 971:std::__2::__throw_bad_optional_access\5babi:v160004\5d\28\29 972:std::__2::__split_buffer&>::__split_buffer\28unsigned\20long\2c\20unsigned\20long\2c\20std::__2::allocator&\29 973:std::__2::__num_put_base::__identify_padding\28char*\2c\20char*\2c\20std::__2::ios_base\20const&\29 974:std::__2::__num_get_base::__get_base\28std::__2::ios_base&\29 975:std::__2::__libcpp_asprintf_l\28char**\2c\20__locale_struct*\2c\20char\20const*\2c\20...\29 976:skvx::Vec<4\2c\20float>\20skvx::abs<4>\28skvx::Vec<4\2c\20float>\20const&\29 977:skvx::Vec<2\2c\20float>\20skvx::min<2\2c\20float>\28skvx::Vec<2\2c\20float>\20const&\2c\20skvx::Vec<2\2c\20float>\20const&\29 978:sktext::gpu::BagOfBytes::allocateBytes\28int\2c\20int\29 979:skia_private::TArray::preallocateNewData\28int\2c\20double\29 980:skia_private::TArray::~TArray\28\29 981:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 982:skia_private::TArray::checkRealloc\28int\2c\20double\29 983:skia_png_malloc_base 984:skia::textlayout::TextLine::iterateThroughVisualRuns\28bool\2c\20std::__2::function\2c\20float*\29>\20const&\29\20const 985:skgpu::ganesh::SurfaceDrawContext::numSamples\28\29\20const 986:sk_sp::~sk_sp\28\29 987:sk_sp::~sk_sp\28\29 988:round 989:qsort 990:path_quadraticBezierTo 991:operator==\28SkMatrix\20const&\2c\20SkMatrix\20const&\29 992:is_one_of\28hb_glyph_info_t\20const&\2c\20unsigned\20int\29 993:int\20std::__2::__get_up_to_n_digits\5babi:v160004\5d>>\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\2c\20int\29 994:int\20std::__2::__get_up_to_n_digits\5babi:v160004\5d>>\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\2c\20int\29 995:hb_lazy_loader_t\2c\20hb_face_t\2c\206u\2c\20hb_blob_t>::get\28\29\20const 996:hb_font_t::has_glyph\28unsigned\20int\29 997:byn$mgfn-shared$std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 998:byn$mgfn-shared$std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 999:bool\20std::__2::operator!=\5babi:v160004\5d\28std::__2::__wrap_iter\20const&\2c\20std::__2::__wrap_iter\20const&\29 1000:bool\20hb_sanitize_context_t::check_array\28OT::HBGlyphID16\20const*\2c\20unsigned\20int\29\20const 1001:bool\20OT::OffsetTo\2c\20true>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 1002:bool\20OT::OffsetTo>\2c\20OT::IntType\2c\20false>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 1003:bool\20OT::Layout::Common::Coverage::collect_coverage\2c\20hb_set_digest_combiner_t\2c\20hb_set_digest_bits_pattern_t>>>\28hb_set_digest_combiner_t\2c\20hb_set_digest_combiner_t\2c\20hb_set_digest_bits_pattern_t>>*\29\20const 1004:addPoint\28UBiDi*\2c\20int\2c\20int\29 1005:__extenddftf2 1006:\28anonymous\20namespace\29::extension_compare\28SkString\20const&\2c\20SkString\20const&\29 1007:\28anonymous\20namespace\29::colrv1_traverse_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29 1008:\28anonymous\20namespace\29::colrv1_transform\28FT_FaceRec_*\2c\20FT_COLR_Paint_\20const&\2c\20SkCanvas*\2c\20SkMatrix*\29 1009:SkUTF::NextUTF8\28char\20const**\2c\20char\20const*\29 1010:SkUTF::NextUTF8WithReplacement\28char\20const**\2c\20char\20const*\29 1011:SkTInternalLList::addToHead\28sktext::gpu::TextBlob*\29 1012:SkTDStorage::removeShuffle\28int\29 1013:SkTDArray::push_back\28void*\20const&\29 1014:SkTCopyOnFirstWrite::writable\28\29 1015:SkSL::cast_expression\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Type\20const&\29 1016:SkSL::StringStream::~StringStream\28\29 1017:SkSL::RP::LValue::~LValue\28\29 1018:SkSL::RP::Generator::pushIntrinsic\28SkSL::RP::Generator::TypedOps\20const&\2c\20SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\29 1019:SkSL::InlineCandidateAnalyzer::visitExpression\28std::__2::unique_ptr>*\29 1020:SkSL::GLSLCodeGenerator::writeType\28SkSL::Type\20const&\29 1021:SkSL::GLSLCodeGenerator::writeStatement\28SkSL::Statement\20const&\29 1022:SkSL::Expression::isBoolLiteral\28\29\20const 1023:SkSL::Analysis::IsCompileTimeConstant\28SkSL::Expression\20const&\29 1024:SkRasterPipelineBlitter::appendLoadDst\28SkRasterPipeline*\29\20const 1025:SkPoint::Distance\28SkPoint\20const&\2c\20SkPoint\20const&\29 1026:SkPathRef::getBounds\28\29\20const 1027:SkPath::isRect\28SkRect*\2c\20bool*\2c\20SkPathDirection*\29\20const 1028:SkPath::injectMoveToIfNeeded\28\29 1029:SkNVRefCnt::unref\28\29\20const 1030:SkMatrix::setScaleTranslate\28float\2c\20float\2c\20float\2c\20float\29 1031:SkMatrix::postScale\28float\2c\20float\29 1032:SkMatrix::mapVector\28float\2c\20float\29\20const 1033:SkMatrix::isSimilarity\28float\29\20const 1034:SkJSONWriter::endArray\28\29 1035:SkJSONWriter::beginArray\28char\20const*\2c\20bool\29 1036:SkJSONWriter::appendS32\28char\20const*\2c\20int\29 1037:SkJSONWriter::appendName\28char\20const*\29 1038:SkIntersections::removeOne\28int\29 1039:SkImages::RasterFromBitmap\28SkBitmap\20const&\29 1040:SkImage_Ganesh::SkImage_Ganesh\28sk_sp\2c\20unsigned\20int\2c\20GrSurfaceProxyView\2c\20SkColorInfo\29 1041:SkImageInfo::Make\28int\2c\20int\2c\20SkColorType\2c\20SkAlphaType\29 1042:SkImageFilter_Base::getChildInputLayerBounds\28int\2c\20skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 1043:SkGlyph::iRect\28\29\20const 1044:SkFindUnitQuadRoots\28float\2c\20float\2c\20float\2c\20float*\29 1045:SkColorSpaceXformSteps::Flags::mask\28\29\20const 1046:SkBlockAllocator::BlockIter::Item::operator++\28\29 1047:SkBitmap::peekPixels\28SkPixmap*\29\20const 1048:SkAAClip::freeRuns\28\29 1049:OT::hb_ot_apply_context_t::set_lookup_mask\28unsigned\20int\2c\20bool\29 1050:OT::cmap::find_subtable\28unsigned\20int\2c\20unsigned\20int\29\20const 1051:GrWindowRectangles::~GrWindowRectangles\28\29 1052:GrTriangulator::EdgeList::remove\28GrTriangulator::Edge*\29 1053:GrTriangulator::Edge::isLeftOf\28GrTriangulator::Vertex\20const&\29\20const 1054:GrStyle::SimpleFill\28\29 1055:GrSimpleMeshDrawOpHelper::createProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrGeometryProcessor*\2c\20GrPrimitiveType\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 1056:GrResourceAllocator::addInterval\28GrSurfaceProxy*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20GrResourceAllocator::ActualUse\2c\20GrResourceAllocator::AllowRecycling\29 1057:GrRenderTask::makeClosed\28GrRecordingContext*\29 1058:GrOpFlushState::allocator\28\29 1059:GrGLGpu::prepareToDraw\28GrPrimitiveType\29 1060:GrBackendFormatToCompressionType\28GrBackendFormat\20const&\29 1061:FT_Stream_Skip 1062:FT_Outline_Get_CBox 1063:Cr_z_adler32 1064:BlockIndexIterator::First\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::Last\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::Increment\28SkBlockAllocator::Block\20const*\2c\20int\29\2c\20&SkTBlockList::GetItem\28SkBlockAllocator::Block\20const*\2c\20int\29>::end\28\29\20const 1065:BlockIndexIterator::First\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::Last\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::Increment\28SkBlockAllocator::Block\20const*\2c\20int\29\2c\20&SkTBlockList::GetItem\28SkBlockAllocator::Block\20const*\2c\20int\29>::begin\28\29\20const 1066:AlmostDequalUlps\28double\2c\20double\29 1067:write_tag_size\28SkWriteBuffer&\2c\20unsigned\20int\2c\20unsigned\20long\29 1068:void\20skgpu::VertexWriter::writeQuad\2c\20skgpu::VertexColor\2c\20skgpu::VertexWriter::Conditional>\28skgpu::VertexWriter::TriFan\20const&\2c\20skgpu::VertexColor\20const&\2c\20skgpu::VertexWriter::Conditional\20const&\29 1069:uprv_free_skia 1070:strcpy 1071:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 1072:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 1073:std::__2::unique_ptr>::operator=\5babi:v160004\5d\28std::__2::unique_ptr>&&\29 1074:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 1075:std::__2::unique_ptr>\20GrSkSLFP::Make<>\28SkRuntimeEffect\20const*\2c\20char\20const*\2c\20std::__2::unique_ptr>\2c\20GrSkSLFP::OptFlags\29 1076:std::__2::unique_ptr>\20GrBlendFragmentProcessor::Make<\28SkBlendMode\2913>\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 1077:std::__2::time_get>>::get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\2c\20wchar_t\20const*\2c\20wchar_t\20const*\29\20const 1078:std::__2::time_get>>::get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\2c\20char\20const*\2c\20char\20const*\29\20const 1079:std::__2::optional::value\5babi:v160004\5d\28\29\20& 1080:std::__2::enable_if::type\20skgpu::tess::PatchWriter\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\2964>\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\2932>\2c\20skgpu::tess::AddTrianglesWhenChopping\2c\20skgpu::tess::DiscardFlatCurves>::writeTriangleStack\28skgpu::tess::MiddleOutPolygonTriangulator::PoppedTriangleStack&&\29 1081:std::__2::ctype::widen\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20wchar_t*\29\20const 1082:std::__2::__tuple_impl\2c\20GrSurfaceProxyView\2c\20sk_sp>::~__tuple_impl\28\29 1083:skvx::Vec<4\2c\20skvx::Mask::type>\20skvx::operator>=<4\2c\20float\2c\20float\2c\20void>\28skvx::Vec<4\2c\20float>\20const&\2c\20float\29\20\28.5772\29 1084:skvx::Vec<4\2c\20float>&\20skvx::operator*=<4\2c\20float>\28skvx::Vec<4\2c\20float>&\2c\20skvx::Vec<4\2c\20float>\20const&\29 1085:skia_private::THashMap::find\28SkSL::FunctionDeclaration\20const*\20const&\29\20const 1086:skia_private::TArray\2c\20true>::destroyAll\28\29 1087:skia_private::TArray::push_back_n\28int\2c\20SkPoint\20const*\29 1088:skia::textlayout::Run::placeholderStyle\28\29\20const 1089:skgpu::skgpu_init_static_unique_key_once\28SkAlignedSTStorage<1\2c\20skgpu::UniqueKey>*\29 1090:skgpu::ganesh::\28anonymous\20namespace\29::update_degenerate_test\28skgpu::ganesh::\28anonymous\20namespace\29::DegenerateTestData*\2c\20SkPoint\20const&\29 1091:skgpu::VertexWriter&\20skgpu::operator<<\28skgpu::VertexWriter&\2c\20skgpu::VertexColor\20const&\29 1092:skgpu::ResourceKey::ResourceKey\28\29 1093:sk_sp::reset\28GrThreadSafeCache::VertexData*\29 1094:sk_sp::reset\28GrSurfaceProxy*\29 1095:scalbn 1096:rowcol3\28float\20const*\2c\20float\20const*\29 1097:ps_parser_skip_spaces 1098:paragraphBuilder_build 1099:isdigit 1100:is_joiner\28hb_glyph_info_t\20const&\29 1101:hb_paint_funcs_t::push_translate\28void*\2c\20float\2c\20float\29 1102:hb_lazy_loader_t\2c\20hb_face_t\2c\2022u\2c\20hb_blob_t>::get\28\29\20const 1103:hb_iter_t\2c\20hb_filter_iter_t\2c\20hb_array_t>\2c\20find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_glyph_info_t\20const&\29\2c\20$_6\20const&\2c\20\28void*\290>\2c\20find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_pair_t\29\2c\20$_5\20const&\2c\20\28void*\290>>>\2c\20hb_pair_t>>::operator--\28int\29 1104:hb_aat_map_t::range_flags_t*\20hb_vector_t::push\28hb_aat_map_t::range_flags_t&&\29 1105:get_gsubgpos_table\28hb_face_t*\2c\20unsigned\20int\29 1106:emscripten_longjmp 1107:contourMeasure_dispose 1108:cff2_path_procs_extents_t::line\28CFF::cff2_cs_interp_env_t&\2c\20cff2_extents_param_t&\2c\20CFF::point_t\20const&\29 1109:cff2_path_param_t::line_to\28CFF::point_t\20const&\29 1110:cff1_path_procs_extents_t::line\28CFF::cff1_cs_interp_env_t&\2c\20cff1_extents_param_t&\2c\20CFF::point_t\20const&\29 1111:cff1_path_param_t::line_to\28CFF::point_t\20const&\29 1112:cf2_stack_pushInt 1113:cf2_buf_readByte 1114:byn$mgfn-shared$GrGLProgramDataManager::set4fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 1115:bool\20hb_bsearch_impl\28unsigned\20int*\2c\20unsigned\20int\20const&\2c\20void\20const*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\20\28*\29\28void\20const*\2c\20void\20const*\29\29 1116:_hb_draw_funcs_set_preamble\28hb_draw_funcs_t*\2c\20bool\2c\20void**\2c\20void\20\28**\29\28void*\29\29 1117:__wake 1118:__unlock 1119:__memset 1120:\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29 1121:SkWStream::writeDecAsText\28int\29 1122:SkTDStorage::append\28void\20const*\2c\20int\29 1123:SkSurface_Base::getCachedCanvas\28\29 1124:SkString::reset\28\29 1125:SkStrikeSpec::SkStrikeSpec\28SkFont\20const&\2c\20SkPaint\20const&\2c\20SkSurfaceProps\20const&\2c\20SkScalerContextFlags\2c\20SkMatrix\20const&\29 1126:SkStrike::unlock\28\29 1127:SkStrike::lock\28\29 1128:SkSL::String::appendf\28std::__2::basic_string\2c\20std::__2::allocator>*\2c\20char\20const*\2c\20...\29 1129:SkSL::RP::Builder::lastInstructionOnAnyStack\28int\29 1130:SkSL::ProgramUsage::get\28SkSL::Variable\20const&\29\20const 1131:SkSL::Parser::expectIdentifier\28SkSL::Token*\29 1132:SkSL::Parser::AutoDepth::increase\28\29 1133:SkSL::Inliner::inlineStatement\28SkSL::Position\2c\20skia_private::THashMap>\2c\20SkGoodHash>*\2c\20SkSL::SymbolTable*\2c\20std::__2::unique_ptr>*\2c\20SkSL::Analysis::ReturnComplexity\2c\20SkSL::Statement\20const&\2c\20SkSL::ProgramUsage\20const&\2c\20bool\29::$_3::operator\28\29\28std::__2::unique_ptr>\20const&\29\20const 1134:SkSL::Inliner::inlineStatement\28SkSL::Position\2c\20skia_private::THashMap>\2c\20SkGoodHash>*\2c\20SkSL::SymbolTable*\2c\20std::__2::unique_ptr>*\2c\20SkSL::Analysis::ReturnComplexity\2c\20SkSL::Statement\20const&\2c\20SkSL::ProgramUsage\20const&\2c\20bool\29::$_2::operator\28\29\28std::__2::unique_ptr>\20const&\29\20const 1135:SkSL::GLSLCodeGenerator::finishLine\28\29 1136:SkSL::ConstructorSplat::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>\29 1137:SkSL::ConstructorScalarCast::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>\29 1138:SkRegion::SkRegion\28SkIRect\20const&\29 1139:SkRasterPipeline::run\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29\20const 1140:SkRasterPipeline::appendTransferFunction\28skcms_TransferFunction\20const&\29 1141:SkRasterPipeline::appendConstantColor\28SkArenaAlloc*\2c\20float\20const*\29 1142:SkRRect::checkCornerContainment\28float\2c\20float\29\20const 1143:SkPointPriv::DistanceToLineSegmentBetweenSqd\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\29 1144:SkPoint::setLength\28float\29 1145:SkPathPriv::AllPointsEq\28SkPoint\20const*\2c\20int\29 1146:SkPathBuilder::~SkPathBuilder\28\29 1147:SkPathBuilder::lineTo\28SkPoint\29 1148:SkPathBuilder::detach\28\29 1149:SkPathBuilder::SkPathBuilder\28\29 1150:SkPath::transform\28SkMatrix\20const&\2c\20SkApplyPerspectiveClip\29 1151:SkOpCoincidence::release\28SkCoincidentSpans*\2c\20SkCoincidentSpans*\29 1152:SkJSONWriter::endObject\28\29 1153:SkJSONWriter::beginObject\28char\20const*\2c\20bool\29 1154:SkJSONWriter::appendCString\28char\20const*\2c\20char\20const*\29 1155:SkIntersections::hasT\28double\29\20const 1156:SkImageFilter_Base::getChildOutput\28int\2c\20skif::Context\20const&\29\20const 1157:SkDLine::ptAtT\28double\29\20const 1158:SkColorSpace::Equals\28SkColorSpace\20const*\2c\20SkColorSpace\20const*\29 1159:SkCanvas::translate\28float\2c\20float\29 1160:SkCanvas::restoreToCount\28int\29 1161:SkCachedData::unref\28\29\20const 1162:SkBlurMaskFilterImpl::computeXformedSigma\28SkMatrix\20const&\29\20const 1163:SkAutoSMalloc<1024ul>::~SkAutoSMalloc\28\29 1164:SkAutoCanvasRestore::~SkAutoCanvasRestore\28\29 1165:SkArenaAlloc::SkArenaAlloc\28unsigned\20long\29 1166:SkAAClipBlitterWrapper::init\28SkRasterClip\20const&\2c\20SkBlitter*\29 1167:SkAAClipBlitterWrapper::SkAAClipBlitterWrapper\28SkRasterClip\20const&\2c\20SkBlitter*\29 1168:OT::Offset\2c\20true>::is_null\28\29\20const 1169:OT::MVAR::get_var\28unsigned\20int\2c\20int\20const*\2c\20unsigned\20int\29\20const 1170:MaskAdditiveBlitter::getRow\28int\29 1171:GrTriangulator::EdgeList::insert\28GrTriangulator::Edge*\2c\20GrTriangulator::Edge*\29 1172:GrTextureEffect::Make\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkMatrix\20const&\2c\20GrSamplerState\2c\20GrCaps\20const&\2c\20float\20const*\29 1173:GrTextureEffect::MakeSubset\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkMatrix\20const&\2c\20GrSamplerState\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20GrCaps\20const&\2c\20float\20const*\29 1174:GrTessellationShader::MakeProgram\28GrTessellationShader::ProgramArgs\20const&\2c\20GrTessellationShader\20const*\2c\20GrPipeline\20const*\2c\20GrUserStencilSettings\20const*\29 1175:GrScissorState::enabled\28\29\20const 1176:GrRecordingContextPriv::recordTimeAllocator\28\29 1177:GrQuad::bounds\28\29\20const 1178:GrProxyProvider::createProxy\28GrBackendFormat\20const&\2c\20SkISize\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Mipmapped\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\2c\20GrInternalSurfaceFlags\2c\20GrSurfaceProxy::UseAllocator\29 1179:GrPixmapBase::operator=\28GrPixmapBase&&\29 1180:GrOpFlushState::detachAppliedClip\28\29 1181:GrGLSLShaderBuilder::appendTextureLookup\28GrResourceHandle\2c\20char\20const*\2c\20GrGLSLColorSpaceXformHelper*\29 1182:GrGLGpu::disableWindowRectangles\28\29 1183:GrGLFormatFromGLEnum\28unsigned\20int\29 1184:GrFragmentProcessors::Make\28GrRecordingContext*\2c\20SkColorFilter\20const*\2c\20std::__2::unique_ptr>\2c\20GrColorInfo\20const&\2c\20SkSurfaceProps\20const&\29 1185:GrFragmentProcessor::~GrFragmentProcessor\28\29 1186:GrClip::GetPixelIBounds\28SkRect\20const&\2c\20GrAA\2c\20GrClip::BoundsType\29 1187:GrBackendTexture::getBackendFormat\28\29\20const 1188:CFF::interp_env_t::fetch_op\28\29 1189:BlockIndexIterator::First\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::Last\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::Increment\28SkBlockAllocator::Block\20const*\2c\20int\29\2c\20&SkTBlockList::GetItem\28SkBlockAllocator::Block*\2c\20int\29>::Item::setIndices\28\29 1190:AlmostEqualUlps\28double\2c\20double\29 1191:AAT::StateTable::get_entry\28int\2c\20unsigned\20int\29\20const 1192:AAT::StateTable::EntryData>::get_entry\28int\2c\20unsigned\20int\29\20const 1193:void\20sktext::gpu::fill3D\28SkZip\2c\20unsigned\20int\2c\20SkMatrix\20const&\29::'lambda'\28float\2c\20float\29::operator\28\29\28float\2c\20float\29\20const 1194:tt_face_lookup_table 1195:std::__2::unique_ptr>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 1196:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 1197:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 1198:std::__2::unique_ptr>::reset\5babi:v160004\5d\28SkSL::Module\20const*\29 1199:std::__2::optional::value\5babi:v160004\5d\28\29\20& 1200:std::__2::optional::value\5babi:v160004\5d\28\29\20& 1201:std::__2::moneypunct::negative_sign\5babi:v160004\5d\28\29\20const 1202:std::__2::moneypunct::neg_format\5babi:v160004\5d\28\29\20const 1203:std::__2::moneypunct::do_pos_format\28\29\20const 1204:std::__2::iterator_traits::difference_type\20std::__2::__distance\5babi:v160004\5d\28unsigned\20int\20const*\2c\20unsigned\20int\20const*\2c\20std::__2::random_access_iterator_tag\29 1205:std::__2::function::operator\28\29\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29\20const 1206:std::__2::ctype::widen\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20char*\29\20const 1207:std::__2::char_traits::copy\28wchar_t*\2c\20wchar_t\20const*\2c\20unsigned\20long\29 1208:std::__2::basic_string\2c\20std::__2::allocator>::end\5babi:v160004\5d\28\29 1209:std::__2::basic_string\2c\20std::__2::allocator>::end\5babi:v160004\5d\28\29 1210:std::__2::basic_string\2c\20std::__2::allocator>::__set_size\5babi:v160004\5d\28unsigned\20long\29 1211:std::__2::__split_buffer&>::~__split_buffer\28\29 1212:std::__2::__split_buffer&>::__split_buffer\28unsigned\20long\2c\20unsigned\20long\2c\20std::__2::allocator&\29 1213:std::__2::__optional_destruct_base::~__optional_destruct_base\5babi:v160004\5d\28\29 1214:std::__2::__itoa::__append2\5babi:v160004\5d\28char*\2c\20unsigned\20int\29 1215:std::__2::__exception_guard_exceptions>::__destroy_vector>::~__exception_guard_exceptions\5babi:v160004\5d\28\29 1216:skvx::Vec<4\2c\20unsigned\20int>\20\28anonymous\20namespace\29::shift_right>\28skvx::Vec<4\2c\20unsigned\20int>\20const&\2c\20int\29 1217:skvx::Vec<4\2c\20float>\20skvx::naive_if_then_else<4\2c\20float>\28skvx::Vec<4\2c\20skvx::Mask::type>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\29 1218:sktext::gpu::BagOfBytes::~BagOfBytes\28\29 1219:skif::FilterResult::operator=\28skif::FilterResult&&\29 1220:skia_private::TArray::push_back\28signed\20char&&\29 1221:skia_private::TArray::push_back\28float\20const&\29 1222:skia_private::TArray::push_back\28SkJSONWriter::Scope&&\29 1223:skia_private::STArray<4\2c\20signed\20char\2c\20true>::STArray\28skia_private::STArray<4\2c\20signed\20char\2c\20true>\20const&\29 1224:skia_png_gamma_correct 1225:skia_png_gamma_8bit_correct 1226:skia::textlayout::TextStyle::operator=\28skia::textlayout::TextStyle\20const&\29 1227:skia::textlayout::Run::positionX\28unsigned\20long\29\20const 1228:skia::textlayout::ParagraphImpl::codeUnitHasProperty\28unsigned\20long\2c\20SkUnicode::CodeUnitFlags\29\20const 1229:skgpu::ganesh::SurfaceDrawContext::Make\28GrRecordingContext*\2c\20GrColorType\2c\20sk_sp\2c\20SkBackingFit\2c\20SkISize\2c\20SkSurfaceProps\20const&\2c\20std::__2::basic_string_view>\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrSurfaceOrigin\2c\20skgpu::Budgeted\29 1230:skgpu::UniqueKey::UniqueKey\28skgpu::UniqueKey\20const&\29 1231:sk_sp::operator=\28sk_sp&&\29 1232:sk_realloc_throw\28void*\2c\20unsigned\20long\29 1233:powf_ 1234:png_read_buffer 1235:isspace 1236:interp_cubic_coords\28double\20const*\2c\20double\29 1237:int\20_hb_cmp_method>\28void\20const*\2c\20void\20const*\29 1238:hb_paint_funcs_t::push_transform\28void*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 1239:hb_font_t::parent_scale_y_distance\28int\29 1240:hb_font_t::parent_scale_x_distance\28int\29 1241:hb_face_t::get_upem\28\29\20const 1242:hb_buffer_destroy 1243:emscripten_futex_wake 1244:double_to_clamped_scalar\28double\29 1245:conic_eval_numerator\28double\20const*\2c\20float\2c\20double\29 1246:cff_index_init 1247:cf2_glyphpath_hintPoint 1248:byn$mgfn-shared$skia_private::AutoSTArray<32\2c\20unsigned\20short>::reset\28int\29 1249:bool\20hb_buffer_t::replace_glyphs\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\20const*\29 1250:bool\20OT::OffsetTo\2c\20true>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 1251:a_inc 1252:\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16::Compact\28skvx::Vec<4\2c\20float>\20const&\29 1253:\28anonymous\20namespace\29::ColorTypeFilter_F16F16::Compact\28skvx::Vec<4\2c\20float>\20const&\29 1254:\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16::Compact\28skvx::Vec<4\2c\20float>\20const&\29 1255:\28anonymous\20namespace\29::ColorTypeFilter_8888::Compact\28skvx::Vec<4\2c\20unsigned\20short>\20const&\29 1256:\28anonymous\20namespace\29::ColorTypeFilter_16161616::Compact\28skvx::Vec<4\2c\20unsigned\20int>\20const&\29 1257:\28anonymous\20namespace\29::ColorTypeFilter_1010102::Compact\28unsigned\20long\20long\29 1258:TT_MulFix14 1259:Skwasm::createMatrix\28float\20const*\29 1260:SkWriter32::writeBool\28bool\29 1261:SkTDStorage::append\28int\29 1262:SkTDPQueue::setIndex\28int\29 1263:SkSurface_Base::refCachedImage\28\29 1264:SkSpotShadowTessellator::addToClip\28SkPoint\20const&\29 1265:SkSL::Type::MakeTextureType\28char\20const*\2c\20SpvDim_\2c\20bool\2c\20bool\2c\20bool\2c\20SkSL::Type::TextureAccess\29 1266:SkSL::Type::MakeSpecialType\28char\20const*\2c\20char\20const*\2c\20SkSL::Type::TypeKind\29 1267:SkSL::Swizzle::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20skia_private::STArray<4\2c\20signed\20char\2c\20true>\29 1268:SkSL::RP::Builder::push_slots_or_immutable\28SkSL::RP::SlotRange\2c\20SkSL::RP::BuilderOp\29 1269:SkSL::RP::Builder::push_duplicates\28int\29 1270:SkSL::RP::Builder::push_constant_f\28float\29 1271:SkSL::RP::Builder::push_clone\28int\2c\20int\29 1272:SkSL::Parser::statementOrNop\28SkSL::Position\2c\20std::__2::unique_ptr>\29 1273:SkSL::Literal::Make\28SkSL::Position\2c\20double\2c\20SkSL::Type\20const*\29 1274:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_mul\28SkSL::Context\20const&\2c\20std::__2::array\20const&\29 1275:SkSL::InlineCandidateAnalyzer::visitStatement\28std::__2::unique_ptr>*\2c\20bool\29 1276:SkSL::GLSLCodeGenerator::writeModifiers\28SkSL::Layout\20const&\2c\20SkSL::ModifierFlags\2c\20bool\29 1277:SkSL::Expression::isIntLiteral\28\29\20const 1278:SkSL::ConstructorCompound::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray\29 1279:SkSL::ConstantFolder::IsConstantSplat\28SkSL::Expression\20const&\2c\20double\29 1280:SkSL::AliasType::resolve\28\29\20const 1281:SkResourceCache::Find\28SkResourceCache::Key\20const&\2c\20bool\20\28*\29\28SkResourceCache::Rec\20const&\2c\20void*\29\2c\20void*\29 1282:SkResourceCache::Add\28SkResourceCache::Rec*\2c\20void*\29 1283:SkRectPriv::HalfWidth\28SkRect\20const&\29 1284:SkRect::isFinite\28\29\20const 1285:SkRasterPipeline_<256ul>::SkRasterPipeline_\28\29 1286:SkRasterClip::setRect\28SkIRect\20const&\29 1287:SkRasterClip::quickContains\28SkIRect\20const&\29\20const 1288:SkRRect::setRect\28SkRect\20const&\29 1289:SkRRect::MakeRect\28SkRect\20const&\29 1290:SkRRect::MakeOval\28SkRect\20const&\29 1291:SkPathWriter::isClosed\28\29\20const 1292:SkPathStroker::addDegenerateLine\28SkQuadConstruct\20const*\29 1293:SkPathBuilder::moveTo\28SkPoint\29 1294:SkPath::swap\28SkPath&\29 1295:SkPath::getGenerationID\28\29\20const 1296:SkPath::addPoly\28SkPoint\20const*\2c\20int\2c\20bool\29 1297:SkOpSegment::existing\28double\2c\20SkOpSegment\20const*\29\20const 1298:SkOpSegment::addT\28double\29 1299:SkOpSegment::addCurveTo\28SkOpSpanBase\20const*\2c\20SkOpSpanBase\20const*\2c\20SkPathWriter*\29\20const 1300:SkOpPtT::find\28SkOpSegment\20const*\29\20const 1301:SkOpContourBuilder::flush\28\29 1302:SkMipmap::getLevel\28int\2c\20SkMipmap::Level*\29\20const 1303:SkMatrix::isFinite\28\29\20const 1304:SkMatrix::MakeRectToRect\28SkRect\20const&\2c\20SkRect\20const&\2c\20SkMatrix::ScaleToFit\29 1305:SkM44::setConcat\28SkM44\20const&\2c\20SkM44\20const&\29 1306:SkImage_Picture::type\28\29\20const 1307:SkImageInfoIsValid\28SkImageInfo\20const&\29 1308:SkImageInfo::makeColorType\28SkColorType\29\20const 1309:SkImageInfo::computeByteSize\28unsigned\20long\29\20const 1310:SkImageInfo::SkImageInfo\28SkImageInfo\20const&\29 1311:SkImageFilter_Base::SkImageFilter_Base\28sk_sp\20const*\2c\20int\2c\20std::__2::optional\29 1312:SkIRect::offset\28int\2c\20int\29 1313:SkGlyph::imageSize\28\29\20const 1314:SkColorSpaceXformSteps::apply\28SkRasterPipeline*\29\20const 1315:SkColorSpace::gammaIsLinear\28\29\20const 1316:SkColorFilterBase::affectsTransparentBlack\28\29\20const 1317:SkCanvas::~SkCanvas\28\29 1318:SkCanvas::save\28\29 1319:SkCanvas::predrawNotify\28bool\29 1320:SkBulkGlyphMetrics::~SkBulkGlyphMetrics\28\29 1321:SkBlockAllocator::SkBlockAllocator\28SkBlockAllocator::GrowthPolicy\2c\20unsigned\20long\2c\20unsigned\20long\29 1322:SkBlockAllocator::BlockIter::begin\28\29\20const 1323:SkBitmap::reset\28\29 1324:SkBitmap::installPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20void\20\28*\29\28void*\2c\20void*\29\2c\20void*\29 1325:ScalarToAlpha\28float\29 1326:OT::Layout::GSUB_impl::SubstLookupSubTable*\20hb_serialize_context_t::push\28\29 1327:OT::Layout::GPOS_impl::PosLookupSubTable\20const&\20OT::Lookup::get_subtable\28unsigned\20int\29\20const 1328:OT::ArrayOf\2c\20true>\2c\20OT::IntType>*\20hb_serialize_context_t::extend_size\2c\20true>\2c\20OT::IntType>>\28OT::ArrayOf\2c\20true>\2c\20OT::IntType>*\2c\20unsigned\20long\2c\20bool\29 1329:GrTriangulator::makeConnectingEdge\28GrTriangulator::Vertex*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::EdgeType\2c\20GrTriangulator::Comparator\20const&\2c\20int\29 1330:GrTriangulator::appendPointToContour\28SkPoint\20const&\2c\20GrTriangulator::VertexList*\29\20const 1331:GrSurface::ComputeSize\28GrBackendFormat\20const&\2c\20SkISize\2c\20int\2c\20skgpu::Mipmapped\2c\20bool\29 1332:GrStyledShape::writeUnstyledKey\28unsigned\20int*\29\20const 1333:GrStyledShape::unstyledKeySize\28\29\20const 1334:GrStyle::operator=\28GrStyle\20const&\29 1335:GrStyle::GrStyle\28SkStrokeRec\20const&\2c\20sk_sp\29 1336:GrStyle::GrStyle\28SkPaint\20const&\29 1337:GrSimpleMesh::setIndexed\28sk_sp\2c\20int\2c\20int\2c\20unsigned\20short\2c\20unsigned\20short\2c\20GrPrimitiveRestart\2c\20sk_sp\2c\20int\29 1338:GrRecordingContextPriv::makeSFCWithFallback\28GrImageInfo\2c\20SkBackingFit\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrSurfaceOrigin\2c\20skgpu::Budgeted\29 1339:GrRecordingContextPriv::makeSC\28GrSurfaceProxyView\2c\20GrColorInfo\20const&\29 1340:GrQuad::MakeFromSkQuad\28SkPoint\20const*\2c\20SkMatrix\20const&\29 1341:GrProcessorSet::visitProxies\28std::__2::function\20const&\29\20const 1342:GrProcessorSet::finalize\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\2c\20GrAppliedClip\20const*\2c\20GrUserStencilSettings\20const*\2c\20GrCaps\20const&\2c\20GrClampType\2c\20SkRGBA4f<\28SkAlphaType\292>*\29 1343:GrGpuResource::isPurgeable\28\29\20const 1344:GrGpuResource::gpuMemorySize\28\29\20const 1345:GrGpuBuffer::updateData\28void\20const*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\29 1346:GrGetColorTypeDesc\28GrColorType\29 1347:GrGeometryProcessor::ProgramImpl::WriteOutputPosition\28GrGLSLVertexBuilder*\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\2c\20char\20const*\29 1348:GrGLSLShaderBuilder::~GrGLSLShaderBuilder\28\29 1349:GrGLSLShaderBuilder::declAppend\28GrShaderVar\20const&\29 1350:GrGLGpu::flushScissorTest\28GrScissorTest\29 1351:GrGLGpu::didDrawTo\28GrRenderTarget*\29 1352:GrGLGpu::bindFramebuffer\28unsigned\20int\2c\20unsigned\20int\29 1353:GrGLFunction::GrGLFunction\28void\20\28*\29\28unsigned\20int\2c\20int*\29\29::'lambda'\28void\20const*\2c\20unsigned\20int\2c\20int*\29::__invoke\28void\20const*\2c\20unsigned\20int\2c\20int*\29 1354:GrGLCaps::maxRenderTargetSampleCount\28GrGLFormat\29\20const 1355:GrDefaultGeoProcFactory::Make\28SkArenaAlloc*\2c\20GrDefaultGeoProcFactory::Color\20const&\2c\20GrDefaultGeoProcFactory::Coverage\20const&\2c\20GrDefaultGeoProcFactory::LocalCoords\20const&\2c\20SkMatrix\20const&\29 1356:GrCaps::validateSurfaceParams\28SkISize\20const&\2c\20GrBackendFormat\20const&\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Mipmapped\2c\20GrTextureType\29\20const 1357:GrBlurUtils::GaussianBlur\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20GrColorType\2c\20SkAlphaType\2c\20sk_sp\2c\20SkIRect\2c\20SkIRect\2c\20float\2c\20float\2c\20SkTileMode\2c\20SkBackingFit\29::$_0::operator\28\29\28SkIRect\2c\20SkIRect\29\20const 1358:GrBackendTexture::~GrBackendTexture\28\29 1359:GrAppliedClip::GrAppliedClip\28GrAppliedClip&&\29 1360:GrAAConvexTessellator::Ring::origEdgeID\28int\29\20const 1361:FT_GlyphLoader_CheckPoints 1362:FT_Get_Sfnt_Table 1363:CFF::CFFIndex>::sanitize\28hb_sanitize_context_t*\29\20const 1364:BlockIndexIterator::Last\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::First\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::Decrement\28SkBlockAllocator::Block\20const*\2c\20int\29\2c\20&SkTBlockList::GetItem\28SkBlockAllocator::Block*\2c\20int\29>::end\28\29\20const 1365:BlockIndexIterator::First\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::Last\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::Increment\28SkBlockAllocator::Block\20const*\2c\20int\29\2c\20&SkTBlockList::GetItem\28SkBlockAllocator::Block\20const*\2c\20int\29>::Item::operator++\28\29 1366:AAT::Lookup>::get_class\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29\20const 1367:void\20std::__2::reverse\5babi:v160004\5d\28char*\2c\20char*\29 1368:void\20std::__2::__hash_table\2c\20std::__2::equal_to\2c\20std::__2::allocator>::__rehash\28unsigned\20long\29 1369:void\20SkTQSort\28SkAnalyticEdge**\2c\20SkAnalyticEdge**\29::'lambda'\28SkAnalyticEdge\20const*\2c\20SkAnalyticEdge\20const*\29::operator\28\29\28SkAnalyticEdge\20const*\2c\20SkAnalyticEdge\20const*\29\20const 1370:void\20SkSafeUnref\28GrThreadSafeCache::VertexData*\29 1371:unsigned\20int\20hb_buffer_t::group_end\28unsigned\20int\2c\20bool\20\20const\28&\29\28hb_glyph_info_t\20const&\2c\20hb_glyph_info_t\20const&\29\29\20const 1372:std::__2::vector>\2c\20std::__2::allocator>>>::push_back\5babi:v160004\5d\28std::__2::unique_ptr>&&\29 1373:std::__2::vector\2c\20std::__2::allocator>>::~vector\5babi:v160004\5d\28\29 1374:std::__2::vector>::__vallocate\5babi:v160004\5d\28unsigned\20long\29 1375:std::__2::unique_ptr\2c\20std::__2::allocator>\2c\20std::__2::default_delete\2c\20std::__2::allocator>>>::~unique_ptr\5babi:v160004\5d\28\29 1376:std::__2::unique_ptr>::reset\5babi:v160004\5d\28SkSL::SymbolTable*\29 1377:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 1378:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 1379:std::__2::unique_ptr>::reset\5babi:v160004\5d\28std::nullptr_t\29 1380:std::__2::ostreambuf_iterator>\20std::__2::__pad_and_output\5babi:v160004\5d>\28std::__2::ostreambuf_iterator>\2c\20wchar_t\20const*\2c\20wchar_t\20const*\2c\20wchar_t\20const*\2c\20std::__2::ios_base&\2c\20wchar_t\29 1381:std::__2::ostreambuf_iterator>\20std::__2::__pad_and_output\5babi:v160004\5d>\28std::__2::ostreambuf_iterator>\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20std::__2::ios_base&\2c\20char\29 1382:std::__2::optional::value\5babi:v160004\5d\28\29\20& 1383:std::__2::hash::operator\28\29\5babi:v160004\5d\28GrFragmentProcessor\20const*\29\20const 1384:std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29 1385:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28char*\2c\20char*\2c\20std::__2::allocator\20const&\29 1386:std::__2::basic_string\2c\20std::__2::allocator>::append\28char\20const*\2c\20unsigned\20long\29 1387:std::__2::basic_string\2c\20std::__2::allocator>::__get_long_cap\5babi:v160004\5d\28\29\20const 1388:std::__2::basic_ios>::setstate\5babi:v160004\5d\28unsigned\20int\29 1389:std::__2::allocator::allocate\5babi:v160004\5d\28unsigned\20long\29 1390:skvx::Vec<4\2c\20unsigned\20short>\20\28anonymous\20namespace\29::add_121>\28skvx::Vec<4\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<4\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<4\2c\20unsigned\20short>\20const&\29 1391:skvx::Vec<4\2c\20unsigned\20int>\20\28anonymous\20namespace\29::add_121>\28skvx::Vec<4\2c\20unsigned\20int>\20const&\2c\20skvx::Vec<4\2c\20unsigned\20int>\20const&\2c\20skvx::Vec<4\2c\20unsigned\20int>\20const&\29 1392:skvx::Vec<4\2c\20float>\20unchecked_mix<4\2c\20float>\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\29 1393:skvx::Vec<4\2c\20float>\20skvx::operator/<4\2c\20float\2c\20float\2c\20void>\28float\2c\20skvx::Vec<4\2c\20float>\20const&\29 1394:skvx::Vec<4\2c\20float>\20skvx::min<4\2c\20float>\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\29 1395:skvx::Vec<2\2c\20float>\20skvx::naive_if_then_else<2\2c\20float>\28skvx::Vec<2\2c\20skvx::Mask::type>\20const&\2c\20skvx::Vec<2\2c\20float>\20const&\2c\20skvx::Vec<2\2c\20float>\20const&\29 1396:skip_spaces 1397:skif::\28anonymous\20namespace\29::is_nearly_integer_translation\28skif::LayerSpace\20const&\2c\20skif::LayerSpace*\29 1398:skif::FilterResult::FilterResult\28skif::FilterResult\20const&\29 1399:skia_private::TArray::push_back\28unsigned\20char&&\29 1400:skia_private::TArray::checkRealloc\28int\2c\20double\29 1401:skia_private::TArray::TArray\28skia_private::TArray&&\29 1402:skia_private::TArray::TArray\28skia_private::TArray&&\29 1403:skia_private::TArray\2c\20true>::preallocateNewData\28int\2c\20double\29 1404:skia_private::TArray::preallocateNewData\28int\2c\20double\29 1405:skia_private::TArray::checkRealloc\28int\2c\20double\29 1406:skia_private::AutoSTMalloc<4ul\2c\20int\2c\20void>::AutoSTMalloc\28unsigned\20long\29 1407:skia_png_safecat 1408:skia_png_malloc 1409:skia_png_colorspace_sync 1410:skia_png_chunk_warning 1411:skia::textlayout::TextWrapper::TextStretch::extend\28skia::textlayout::TextWrapper::TextStretch&\29 1412:skia::textlayout::TextLine::iterateThroughSingleRunByStyles\28skia::textlayout::TextLine::TextAdjustment\2c\20skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::StyleType\2c\20std::__2::function\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\20const&\29\20const 1413:skia::textlayout::ParagraphStyle::~ParagraphStyle\28\29 1414:skia::textlayout::ParagraphImpl::ensureUTF16Mapping\28\29 1415:skgpu::ganesh::SurfaceFillContext::fillWithFP\28std::__2::unique_ptr>\29 1416:skgpu::ganesh::OpsTask::OpChain::List::popHead\28\29 1417:skgpu::SkSLToGLSL\28SkSL::ShaderCaps\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20SkSL::ProgramKind\2c\20SkSL::ProgramSettings\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>*\2c\20SkSL::ProgramInterface*\2c\20skgpu::ShaderErrorHandler*\29 1418:skgpu::ResourceKey::reset\28\29 1419:skcms_TransferFunction_getType 1420:skcms_TransferFunction_eval 1421:sk_sp::operator=\28sk_sp&&\29 1422:sk_sp::~sk_sp\28\29 1423:sk_sp::reset\28SkString::Rec*\29 1424:sk_sp\20sk_make_sp\2c\20SkMatrix\20const&>\28sk_sp&&\2c\20SkMatrix\20const&\29 1425:sk_sp::sk_sp\28sk_sp\20const&\29 1426:operator!=\28SkMatrix\20const&\2c\20SkMatrix\20const&\29 1427:non-virtual\20thunk\20to\20GrOpFlushState::allocator\28\29 1428:is_halant\28hb_glyph_info_t\20const&\29 1429:hb_zip_iter_t\2c\20hb_array_t>::__next__\28\29 1430:hb_serialize_context_t::pop_pack\28bool\29 1431:hb_sanitize_context_t::init\28hb_blob_t*\29 1432:hb_lazy_loader_t\2c\20hb_face_t\2c\2011u\2c\20hb_blob_t>::get\28\29\20const 1433:hb_lazy_loader_t\2c\20hb_face_t\2c\204u\2c\20hb_blob_t>::get\28\29\20const 1434:hb_lazy_loader_t\2c\20hb_face_t\2c\2025u\2c\20OT::GSUB_accelerator_t>::get_stored\28\29\20const 1435:hb_hashmap_t::alloc\28unsigned\20int\29 1436:hb_font_t::scale_glyph_extents\28hb_glyph_extents_t*\29 1437:hb_extents_t::add_point\28float\2c\20float\29 1438:hb_draw_funcs_t::emit_cubic_to\28void*\2c\20hb_draw_state_t&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 1439:hb_buffer_t::reverse_range\28unsigned\20int\2c\20unsigned\20int\29 1440:hb_buffer_t::replace_glyph\28unsigned\20int\29 1441:hb_buffer_t::merge_out_clusters\28unsigned\20int\2c\20unsigned\20int\29 1442:hb_buffer_append 1443:cos 1444:cleanup_program\28GrGLGpu*\2c\20unsigned\20int\2c\20SkTDArray\20const&\29 1445:cff_index_done 1446:cf2_glyphpath_curveTo 1447:byn$mgfn-shared$skia_private::TArray::preallocateNewData\28int\2c\20double\29 1448:bool\20hb_array_t::sanitize\28hb_sanitize_context_t*\29\20const 1449:bool\20OT::OffsetTo\2c\20true>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 1450:afm_parser_read_vals 1451:afm_parser_next_key 1452:__lshrti3 1453:__lock 1454:__letf2 1455:\28anonymous\20namespace\29::skhb_position\28float\29 1456:SkWriter32::reservePad\28unsigned\20long\29 1457:SkWriteBuffer::writeDataAsByteArray\28SkData\20const*\29 1458:SkTSpan::removeBounded\28SkTSpan\20const*\29 1459:SkTSpan::initBounds\28SkTCurve\20const&\29 1460:SkTSpan::addBounded\28SkTSpan*\2c\20SkArenaAlloc*\29 1461:SkTSect::tail\28\29 1462:SkTInternalLList>\2c\20SkGoodHash>::Entry>::remove\28SkLRUCache>\2c\20SkGoodHash>::Entry*\29 1463:SkTDStorage::reset\28\29 1464:SkString::printf\28char\20const*\2c\20...\29 1465:SkString::insert\28unsigned\20long\2c\20char\20const*\2c\20unsigned\20long\29 1466:SkSpecialImages::MakeDeferredFromGpu\28GrRecordingContext*\2c\20SkIRect\20const&\2c\20unsigned\20int\2c\20GrSurfaceProxyView\2c\20GrColorInfo\20const&\2c\20SkSurfaceProps\20const&\29 1467:SkShaderUtils::GLSLPrettyPrint::newline\28\29 1468:SkShaderUtils::GLSLPrettyPrint::hasToken\28char\20const*\29 1469:SkSamplingOptions::operator==\28SkSamplingOptions\20const&\29\20const 1470:SkSL::optimize_intrinsic_call\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::IntrinsicKind\2c\20SkSL::ExpressionArray\20const&\2c\20SkSL::Type\20const&\29::$_5::operator\28\29\28int\2c\20int\29\20const 1471:SkSL::is_constant_value\28SkSL::Expression\20const&\2c\20double\29 1472:SkSL::compile_and_shrink\28SkSL::Compiler*\2c\20SkSL::ProgramKind\2c\20char\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20SkSL::Module\20const*\29 1473:SkSL::\28anonymous\20namespace\29::ReturnsOnAllPathsVisitor::visitStatement\28SkSL::Statement\20const&\29 1474:SkSL::Type::MakeScalarType\28std::__2::basic_string_view>\2c\20char\20const*\2c\20SkSL::Type::NumberKind\2c\20signed\20char\2c\20signed\20char\29 1475:SkSL::SymbolTable::addWithoutOwnership\28SkSL::Context\20const&\2c\20SkSL::Symbol*\29 1476:SkSL::RP::Generator::push\28SkSL::RP::LValue&\29 1477:SkSL::Parser::statement\28bool\29 1478:SkSL::ModifierFlags::description\28\29\20const 1479:SkSL::Layout::paddedDescription\28\29\20const 1480:SkSL::ConstructorCompoundCast::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>\29 1481:SkSL::Analysis::UpdateVariableRefKind\28SkSL::Expression*\2c\20SkSL::VariableRefKind\2c\20SkSL::ErrorReporter*\29 1482:SkSL::Analysis::IsSameExpressionTree\28SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\29 1483:SkRuntimeEffect::Uniform::sizeInBytes\28\29\20const 1484:SkRegion::setRegion\28SkRegion\20const&\29 1485:SkRegion::Iterator::next\28\29 1486:SkRect::round\28SkIRect*\29\20const 1487:SkRect::makeSorted\28\29\20const 1488:SkRect::intersects\28SkRect\20const&\29\20const 1489:SkReadBuffer::readInt\28\29 1490:SkReadBuffer::readBool\28\29 1491:SkRasterPipeline_<256ul>::~SkRasterPipeline_\28\29 1492:SkRasterClip::updateCacheAndReturnNonEmpty\28bool\29 1493:SkRasterClip::quickReject\28SkIRect\20const&\29\20const 1494:SkRGBA4f<\28SkAlphaType\293>::toSkColor\28\29\20const 1495:SkPixmap::addr\28int\2c\20int\29\20const 1496:SkPath::quadTo\28float\2c\20float\2c\20float\2c\20float\29 1497:SkPath::incReserve\28int\2c\20int\2c\20int\29 1498:SkPath::arcTo\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\29 1499:SkPath::addRect\28SkRect\20const&\2c\20SkPathDirection\29 1500:SkPath::addRRect\28SkRRect\20const&\2c\20SkPathDirection\29 1501:SkPaint*\20SkRecorder::copy\28SkPaint\20const*\29 1502:SkOpSegment::ptAtT\28double\29\20const 1503:SkOpSegment::dPtAtT\28double\29\20const 1504:SkNoPixelsDevice::drawImageRect\28SkImage\20const*\2c\20SkRect\20const*\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 1505:SkMemoryStream::getPosition\28\29\20const 1506:SkMatrix::setConcat\28SkMatrix\20const&\2c\20SkMatrix\20const&\29 1507:SkMatrix::mapRadius\28float\29\20const 1508:SkMask::getAddr8\28int\2c\20int\29\20const 1509:SkJSONWriter::appendString\28char\20const*\2c\20unsigned\20long\29 1510:SkIntersectionHelper::segmentType\28\29\20const 1511:SkImageFilter_Base::flatten\28SkWriteBuffer&\29\20const 1512:SkGoodHash::operator\28\29\28SkString\20const&\29\20const 1513:SkGlyph::rect\28\29\20const 1514:SkFont::SkFont\28sk_sp\2c\20float\29 1515:SkDrawBase::SkDrawBase\28\29 1516:SkDQuad::RootsValidT\28double\2c\20double\2c\20double\2c\20double*\29 1517:SkConvertPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkImageInfo\20const&\2c\20void\20const*\2c\20unsigned\20long\29 1518:SkCanvas::drawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 1519:SkCanvas::aboutToDraw\28SkPaint\20const&\2c\20SkRect\20const*\2c\20SkEnumBitMask\29 1520:SkCanvas::AutoUpdateQRBounds::~AutoUpdateQRBounds\28\29 1521:SkCachedData::ref\28\29\20const 1522:SkBulkGlyphMetrics::SkBulkGlyphMetrics\28SkStrikeSpec\20const&\29 1523:SkBitmap::setPixelRef\28sk_sp\2c\20int\2c\20int\29 1524:SkBitmap::installPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\29 1525:SkAutoPixmapStorage::~SkAutoPixmapStorage\28\29 1526:SkAnySubclass::reset\28\29 1527:SkAlphaRuns::Break\28short*\2c\20unsigned\20char*\2c\20int\2c\20int\29 1528:OT::VariationStore::get_delta\28unsigned\20int\2c\20int\20const*\2c\20unsigned\20int\2c\20float*\29\20const 1529:OT::GSUBGPOS::get_lookup\28unsigned\20int\29\20const 1530:OT::GDEF::get_glyph_props\28unsigned\20int\29\20const 1531:OT::CmapSubtable::get_glyph\28unsigned\20int\2c\20unsigned\20int*\29\20const 1532:GrTextureEffect::MakeSubset\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkMatrix\20const&\2c\20GrSamplerState\2c\20SkRect\20const&\2c\20GrCaps\20const&\2c\20float\20const*\2c\20bool\29 1533:GrSurfaceProxyView::mipmapped\28\29\20const 1534:GrSurfaceProxy::backingStoreBoundsRect\28\29\20const 1535:GrStyledShape::knownToBeConvex\28\29\20const 1536:GrStyledShape::GrStyledShape\28SkPath\20const&\2c\20GrStyle\20const&\2c\20GrStyledShape::DoSimplify\29 1537:GrSimpleMeshDrawOpHelperWithStencil::isCompatible\28GrSimpleMeshDrawOpHelperWithStencil\20const&\2c\20GrCaps\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20bool\29\20const 1538:GrShape::asPath\28SkPath*\2c\20bool\29\20const 1539:GrScissorState::set\28SkIRect\20const&\29 1540:GrRenderTask::~GrRenderTask\28\29 1541:GrPixmap::Allocate\28GrImageInfo\20const&\29 1542:GrMakeCachedBitmapProxyView\28GrRecordingContext*\2c\20SkBitmap\20const&\2c\20std::__2::basic_string_view>\2c\20skgpu::Mipmapped\29 1543:GrImageInfo::makeColorType\28GrColorType\29\20const 1544:GrGpuResource::CacheAccess::release\28\29 1545:GrGpuBuffer::map\28\29 1546:GrGpu::didWriteToSurface\28GrSurface*\2c\20GrSurfaceOrigin\2c\20SkIRect\20const*\2c\20unsigned\20int\29\20const 1547:GrGeometryProcessor::TextureSampler::TextureSampler\28\29 1548:GrGeometryProcessor::AttributeSet::begin\28\29\20const 1549:GrGeometryProcessor::AttributeSet::Iter::operator++\28\29 1550:GrGLFunction::GrGLFunction\28void\20\28*\29\28int\2c\20int\2c\20int\2c\20int\2c\20int\29\29::'lambda'\28void\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\29::__invoke\28void\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\29 1551:GrFragmentProcessors::Make\28SkShader\20const*\2c\20GrFPArgs\20const&\2c\20SkMatrix\20const&\29 1552:GrFragmentProcessor::MakeColor\28SkRGBA4f<\28SkAlphaType\292>\29 1553:GrConvertPixels\28GrPixmap\20const&\2c\20GrCPixmap\20const&\2c\20bool\29 1554:GrColorSpaceXformEffect::Make\28std::__2::unique_ptr>\2c\20SkColorSpace*\2c\20SkAlphaType\2c\20SkColorSpace*\2c\20SkAlphaType\29 1555:GrColorSpaceXformEffect::Make\28std::__2::unique_ptr>\2c\20GrColorInfo\20const&\2c\20GrColorInfo\20const&\29 1556:GrAtlasManager::getAtlas\28skgpu::MaskFormat\29\20const 1557:FT_Get_Char_Index 1558:CFF::CFFIndex>::operator\5b\5d\28unsigned\20int\29\20const 1559:wrapper_cmp 1560:void\20std::__2::vector>::__construct_at_end\28SkFontArguments::VariationPosition::Coordinate*\2c\20SkFontArguments::VariationPosition::Coordinate*\2c\20unsigned\20long\29 1561:void\20std::__2::__memberwise_forward_assign\5babi:v160004\5d\2c\20std::__2::tuple\2c\20GrFragmentProcessor\20const*\2c\20GrGeometryProcessor::ProgramImpl::TransformInfo\2c\200ul\2c\201ul>\28std::__2::tuple&\2c\20std::__2::tuple&&\2c\20std::__2::__tuple_types\2c\20std::__2::__tuple_indices<0ul\2c\201ul>\29 1562:void\20std::__2::__double_or_nothing\5babi:v160004\5d\28std::__2::unique_ptr&\2c\20unsigned\20int*&\2c\20unsigned\20int*&\29 1563:void\20hb_sanitize_context_t::set_object>\28AAT::ChainSubtable\20const*\29 1564:unsigned\20int\20std::__2::__sort3\5babi:v160004\5d\28skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::finish\28skia::textlayout::Block\20const&\2c\20float\2c\20float&\29::$_0&\29 1565:unsigned\20int\20std::__2::__sort3\5babi:v160004\5d\28SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::Transform::\28anonymous\20namespace\29::BuiltinVariableScanner::sortNewElements\28\29::'lambda'\28SkSL::ProgramElement\20const*\2c\20SkSL::ProgramElement\20const*\29&\29 1566:unsigned\20int\20std::__2::__sort3\5babi:v160004\5d\28SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::Transform::FindAndDeclareBuiltinFunctions\28SkSL::Program&\29::$_0&\29 1567:toupper 1568:top12.2 1569:store\28unsigned\20char*\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20int\29 1570:std::__2::vector>::__vallocate\5babi:v160004\5d\28unsigned\20long\29 1571:std::__2::vector>::__recommend\5babi:v160004\5d\28unsigned\20long\29\20const 1572:std::__2::unique_ptr::~unique_ptr\5babi:v160004\5d\28\29 1573:std::__2::unique_ptr\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair\2c\20SkSL::Type\20const*\2c\20skia_private::THashMap\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair\2c\20SkSL::Type\20const*\2c\20skia_private::THashMap\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 1574:std::__2::unique_ptr>::reset\5babi:v160004\5d\28skia::textlayout::Run*\29 1575:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 1576:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 1577:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 1578:std::__2::numpunct\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 1579:std::__2::numpunct\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 1580:std::__2::istreambuf_iterator>::istreambuf_iterator\5babi:v160004\5d\28\29 1581:std::__2::enable_if::value\2c\20sk_sp>::type\20GrResourceProvider::findByUniqueKey\28skgpu::UniqueKey\20const&\29 1582:std::__2::deque>::end\5babi:v160004\5d\28\29 1583:std::__2::ctype::narrow\5babi:v160004\5d\28wchar_t\2c\20char\29\20const 1584:std::__2::ctype::narrow\5babi:v160004\5d\28char\2c\20char\29\20const 1585:std::__2::char_traits::to_int_type\28char\29 1586:std::__2::char_traits::compare\28char\20const*\2c\20char\20const*\2c\20unsigned\20long\29 1587:std::__2::basic_string\2c\20std::__2::allocator>::__recommend\5babi:v160004\5d\28unsigned\20long\29 1588:std::__2::basic_string\2c\20std::__2::allocator>\20std::__2::operator+\5babi:v160004\5d\2c\20std::__2::allocator>\28std::__2::basic_string\2c\20std::__2::allocator>&&\2c\20char\29 1589:std::__2::basic_string\2c\20std::__2::allocator>::clear\5babi:v160004\5d\28\29 1590:std::__2::basic_string\2c\20std::__2::allocator>::__recommend\5babi:v160004\5d\28unsigned\20long\29 1591:std::__2::basic_string\2c\20std::__2::allocator>::~basic_string\28\29 1592:std::__2::basic_streambuf>::sputn\5babi:v160004\5d\28char\20const*\2c\20long\29 1593:std::__2::basic_streambuf>::setg\5babi:v160004\5d\28char*\2c\20char*\2c\20char*\29 1594:std::__2::allocator::allocate\5babi:v160004\5d\28unsigned\20long\29 1595:std::__2::__tree\2c\20std::__2::__map_value_compare\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator>>::~__tree\28\29 1596:std::__2::__optional_destruct_base::~__optional_destruct_base\5babi:v160004\5d\28\29 1597:std::__2::__num_get::__stage2_int_loop\28wchar_t\2c\20int\2c\20char*\2c\20char*&\2c\20unsigned\20int&\2c\20wchar_t\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int*\2c\20unsigned\20int*&\2c\20wchar_t\20const*\29 1598:std::__2::__num_get::__stage2_int_loop\28char\2c\20int\2c\20char*\2c\20char*&\2c\20unsigned\20int&\2c\20char\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int*\2c\20unsigned\20int*&\2c\20char\20const*\29 1599:std::__2::__next_prime\28unsigned\20long\29 1600:std::__2::__allocation_result>::pointer>\20std::__2::__allocate_at_least\5babi:v160004\5d>\28std::__2::allocator&\2c\20unsigned\20long\29 1601:std::__2::__allocation_result>::pointer>\20std::__2::__allocate_at_least\5babi:v160004\5d>\28std::__2::allocator&\2c\20unsigned\20long\29 1602:src_p\28unsigned\20char\2c\20unsigned\20char\29 1603:sort_r_swap\28char*\2c\20char*\2c\20unsigned\20long\29 1604:snprintf 1605:skvx::Vec<4\2c\20float>\20skvx::operator+<4\2c\20float\2c\20float\2c\20void>\28skvx::Vec<4\2c\20float>\20const&\2c\20float\29 1606:sktext::SkStrikePromise::SkStrikePromise\28sktext::SkStrikePromise&&\29 1607:skif::FilterResult::resolve\28skif::Context\20const&\2c\20skif::LayerSpace\2c\20bool\29\20const 1608:skia_private::THashTable>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::resize\28int\29 1609:skia_private::THashTable::Pair\2c\20char\20const*\2c\20skia_private::THashMap::Pair>::uncheckedSet\28skia_private::THashMap::Pair&&\29 1610:skia_private::THashSet::contains\28SkSL::Variable\20const*\20const&\29\20const 1611:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 1612:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 1613:skia_private::TArray\2c\20true>::~TArray\28\29 1614:skia_private::TArray::resize_back\28int\29 1615:skia_private::AutoTMalloc::AutoTMalloc\28unsigned\20long\29 1616:skia_private::AutoSTArray<4\2c\20float>::reset\28int\29 1617:skia_png_free_data 1618:skia::textlayout::TextStyle::TextStyle\28\29 1619:skia::textlayout::Run::Run\28skia::textlayout::ParagraphImpl*\2c\20SkShaper::RunHandler::RunInfo\20const&\2c\20unsigned\20long\2c\20float\2c\20bool\2c\20float\2c\20unsigned\20long\2c\20float\29 1620:skia::textlayout::InternalLineMetrics::delta\28\29\20const 1621:skia::textlayout::Cluster::Cluster\28skia::textlayout::ParagraphImpl*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkSpan\2c\20float\2c\20float\29 1622:skgpu::tess::PatchWriter\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\294>\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\298>\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\2964>\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\2932>\2c\20skgpu::tess::ReplicateLineEndPoints\2c\20skgpu::tess::TrackJoinControlPoints>::chopAndWriteCubics\28skvx::Vec<2\2c\20float>\2c\20skvx::Vec<2\2c\20float>\2c\20skvx::Vec<2\2c\20float>\2c\20skvx::Vec<2\2c\20float>\2c\20int\29 1623:skgpu::ganesh::SurfaceDrawContext::fillRectToRect\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 1624:skgpu::ganesh::ClipStack::RawElement::contains\28skgpu::ganesh::ClipStack::RawElement\20const&\29\20const 1625:skgpu::VertexWriter&\20skgpu::operator<<<4\2c\20SkPoint>\28skgpu::VertexWriter&\2c\20skgpu::VertexWriter::RepeatDesc<4\2c\20SkPoint>\20const&\29 1626:skgpu::TAsyncReadResult::addCpuPlane\28sk_sp\2c\20unsigned\20long\29 1627:sk_sp::reset\28SkVertices*\29 1628:sk_sp::reset\28SkPathRef*\29 1629:sk_sp::reset\28SkMeshPriv::VB\20const*\29 1630:sk_sp::reset\28SkColorSpace*\29 1631:sk_malloc_throw\28unsigned\20long\29 1632:sk_doubles_nearly_equal_ulps\28double\2c\20double\2c\20unsigned\20char\29 1633:sbrk 1634:saveSetjmp 1635:remove_node\28OffsetEdge\20const*\2c\20OffsetEdge**\29 1636:quick_div\28int\2c\20int\29 1637:pt_to_line\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\29 1638:processPropertySeq\28UBiDi*\2c\20LevState*\2c\20unsigned\20char\2c\20int\2c\20int\29 1639:left\28SkPoint\20const&\2c\20SkPoint\20const&\29 1640:inversion\28GrTriangulator::Vertex*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::Edge*\2c\20GrTriangulator::Comparator\20const&\29 1641:interp_quad_coords\28double\20const*\2c\20double\29 1642:hb_vector_t::alloc\28unsigned\20int\2c\20bool\29 1643:hb_set_digest_combiner_t\2c\20hb_set_digest_combiner_t\2c\20hb_set_digest_bits_pattern_t>>::may_have\28unsigned\20int\29\20const 1644:hb_serialize_context_t::object_t::fini\28\29 1645:hb_ot_map_builder_t::add_feature\28hb_ot_map_feature_t\20const&\29 1646:hb_lazy_loader_t\2c\20hb_face_t\2c\2015u\2c\20OT::glyf_accelerator_t>::get_stored\28\29\20const 1647:hb_hashmap_t::fini\28\29 1648:hb_buffer_t::make_room_for\28unsigned\20int\2c\20unsigned\20int\29 1649:hb_buffer_t::ensure\28unsigned\20int\29 1650:hairquad\28SkPoint\20const*\2c\20SkRegion\20const*\2c\20SkRect\20const*\2c\20SkRect\20const*\2c\20SkBlitter*\2c\20int\2c\20void\20\28*\29\28SkPoint\20const*\2c\20int\2c\20SkRegion\20const*\2c\20SkBlitter*\29\29 1651:fmt_u 1652:float*\20SkArenaAlloc::allocUninitializedArray\28unsigned\20long\29 1653:emscripten_futex_wait 1654:duplicate_pt\28SkPoint\20const&\2c\20SkPoint\20const&\29 1655:compute_quad_level\28SkPoint\20const*\29 1656:char*\20const&\20std::__2::max\5babi:v160004\5d\28char*\20const&\2c\20char*\20const&\29 1657:cff2_extents_param_t::update_bounds\28CFF::point_t\20const&\29 1658:cf2_arrstack_getPointer 1659:cbrtf 1660:can_add_curve\28SkPath::Verb\2c\20SkPoint*\29 1661:call_hline_blitter\28SkBlitter*\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\29 1662:byn$mgfn-shared$std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d>>\28SkSL::Position&\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>&&\29 1663:byn$mgfn-shared$GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::onMakeProgramImpl\28\29\20const 1664:bounds_t::update\28CFF::point_t\20const&\29 1665:bool\20hb_sanitize_context_t::check_array>\28OT::IntType\20const*\2c\20unsigned\20int\29\20const 1666:bool\20hb_sanitize_context_t::check_array>\28OT::IntType\20const*\2c\20unsigned\20int\29\20const 1667:bool\20OT::OffsetTo\2c\20true>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 1668:bool\20OT::OffsetTo\2c\20true>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 1669:blit_trapezoid_row\28AdditiveBlitter*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char*\2c\20bool\2c\20bool\2c\20bool\29 1670:auto\20std::__2::__unwrap_range\5babi:v160004\5d\28char\20const*\2c\20char\20const*\29 1671:auto\20sktext::gpu::VertexFiller::fillVertexData\28int\2c\20int\2c\20SkSpan\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkIRect\2c\20void*\29\20const::$_0::operator\28\29\28sktext::gpu::Mask2DVertex\20\28*\29\20\5b4\5d\29\20const 1672:atan2f 1673:af_shaper_get_cluster 1674:_hb_ot_metrics_get_position_common\28hb_font_t*\2c\20hb_ot_metrics_tag_t\2c\20int*\29 1675:__wait 1676:__tandf 1677:__pthread_setcancelstate 1678:__floatunsitf 1679:__cxa_allocate_exception 1680:\28anonymous\20namespace\29::subtract\28SkIRect\20const&\2c\20SkIRect\20const&\2c\20bool\29 1681:\28anonymous\20namespace\29::MeshOp::fixedFunctionFlags\28\29\20const 1682:\28anonymous\20namespace\29::DrawAtlasOpImpl::fixedFunctionFlags\28\29\20const 1683:Update_Max 1684:TT_Get_MM_Var 1685:SkUTF::UTF8ToUTF16\28unsigned\20short*\2c\20int\2c\20char\20const*\2c\20unsigned\20long\29 1686:SkTextBlob::RunRecord::textSize\28\29\20const 1687:SkTSpan::resetBounds\28SkTCurve\20const&\29 1688:SkTSect::removeSpan\28SkTSpan*\29 1689:SkTSect::BinarySearch\28SkTSect*\2c\20SkTSect*\2c\20SkIntersections*\29 1690:SkTInternalLList::remove\28skgpu::Plot*\29 1691:SkTDArray::append\28\29 1692:SkTDArray::append\28\29 1693:SkTConic::operator\5b\5d\28int\29\20const 1694:SkTBlockList::~SkTBlockList\28\29 1695:SkStrokeRec::needToApply\28\29\20const 1696:SkString::set\28char\20const*\2c\20unsigned\20long\29 1697:SkString::SkString\28char\20const*\2c\20unsigned\20long\29 1698:SkStrikeSpec::findOrCreateStrike\28\29\20const 1699:SkShaders::MatrixRec::applyForFragmentProcessor\28SkMatrix\20const&\29\20const 1700:SkShaders::Color\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20sk_sp\29 1701:SkScan::FillRect\28SkRect\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 1702:SkScalerContext_FreeType::setupSize\28\29 1703:SkScalarsAreFinite\28float\20const*\2c\20int\29 1704:SkSL::type_is_valid_for_color\28SkSL::Type\20const&\29 1705:SkSL::optimize_intrinsic_call\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::IntrinsicKind\2c\20SkSL::ExpressionArray\20const&\2c\20SkSL::Type\20const&\29::$_4::operator\28\29\28int\29\20const 1706:SkSL::optimize_intrinsic_call\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::IntrinsicKind\2c\20SkSL::ExpressionArray\20const&\2c\20SkSL::Type\20const&\29::$_3::operator\28\29\28int\29\20const 1707:SkSL::optimize_comparison\28SkSL::Context\20const&\2c\20std::__2::array\20const&\2c\20bool\20\28*\29\28double\2c\20double\29\29 1708:SkSL::VariableReference::Make\28SkSL::Position\2c\20SkSL::Variable\20const*\2c\20SkSL::VariableRefKind\29 1709:SkSL::Variable*\20SkSL::SymbolTable::add\28SkSL::Context\20const&\2c\20std::__2::unique_ptr>\29 1710:SkSL::Type::coercionCost\28SkSL::Type\20const&\29\20const 1711:SkSL::SymbolTable::addArrayDimension\28SkSL::Context\20const&\2c\20SkSL::Type\20const*\2c\20int\29 1712:SkSL::RP::VariableLValue::fixedSlotRange\28SkSL::RP::Generator*\29 1713:SkSL::RP::Program::appendCopySlotsUnmasked\28skia_private::TArray*\2c\20SkArenaAlloc*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20int\29\20const 1714:SkSL::RP::Generator::pushBinaryExpression\28SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\29 1715:SkSL::RP::Generator::emitTraceLine\28SkSL::Position\29 1716:SkSL::RP::AutoStack::enter\28\29 1717:SkSL::PipelineStage::PipelineStageCodeGenerator::writeStatement\28SkSL::Statement\20const&\29 1718:SkSL::PipelineStage::PipelineStageCodeGenerator::writeLine\28std::__2::basic_string_view>\29 1719:SkSL::Operator::determineBinaryType\28SkSL::Context\20const&\2c\20SkSL::Type\20const&\2c\20SkSL::Type\20const&\2c\20SkSL::Type\20const**\2c\20SkSL::Type\20const**\2c\20SkSL::Type\20const**\29\20const 1720:SkSL::Literal::MakeBool\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20bool\29 1721:SkSL::GLSLCodeGenerator::getTypePrecision\28SkSL::Type\20const&\29 1722:SkSL::ExpressionStatement::Make\28SkSL::Context\20const&\2c\20std::__2::unique_ptr>\29 1723:SkSL::ConstructorDiagonalMatrix::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>\29 1724:SkSL::ConstructorArrayCast::~ConstructorArrayCast\28\29 1725:SkSL::ConstantFolder::MakeConstantValueForVariable\28SkSL::Position\2c\20std::__2::unique_ptr>\29 1726:SkSBlockAllocator<64ul>::SkSBlockAllocator\28SkBlockAllocator::GrowthPolicy\2c\20unsigned\20long\29 1727:SkRuntimeEffect::uniformSize\28\29\20const 1728:SkRuntimeEffect::findUniform\28std::__2::basic_string_view>\29\20const 1729:SkResourceCache::Key::init\28void*\2c\20unsigned\20long\20long\2c\20unsigned\20long\29 1730:SkRegion::op\28SkRegion\20const&\2c\20SkRegion::Op\29 1731:SkRasterPipelineBlitter::appendStore\28SkRasterPipeline*\29\20const 1732:SkRasterPipeline::compile\28\29\20const 1733:SkRasterPipeline::appendClampIfNormalized\28SkImageInfo\20const&\29 1734:SkRasterClipStack::writable_rc\28\29 1735:SkRRect::transform\28SkMatrix\20const&\2c\20SkRRect*\29\20const 1736:SkPointPriv::EqualsWithinTolerance\28SkPoint\20const&\2c\20SkPoint\20const&\29 1737:SkPoint::Length\28float\2c\20float\29 1738:SkPixmap::operator=\28SkPixmap&&\29 1739:SkPathWriter::matchedLast\28SkOpPtT\20const*\29\20const 1740:SkPathWriter::finishContour\28\29 1741:SkPathRef::atVerb\28int\29\20const 1742:SkPathEdgeIter::next\28\29 1743:SkPathBuilder::ensureMove\28\29 1744:SkPathBuilder::close\28\29 1745:SkPath::addPath\28SkPath\20const&\2c\20SkPath::AddPathMode\29 1746:SkPaint::isSrcOver\28\29\20const 1747:SkOpSpanBase::contains\28SkOpSegment\20const*\29\20const 1748:SkOpSegment::updateWinding\28SkOpSpanBase*\2c\20SkOpSpanBase*\29 1749:SkOpAngle::linesOnOriginalSide\28SkOpAngle\20const*\29 1750:SkNoPixelsDevice::writableClip\28\29 1751:SkNextID::ImageID\28\29 1752:SkNVRefCnt::unref\28\29\20const 1753:SkMatrixPriv::MapRect\28SkM44\20const&\2c\20SkRect\20const&\29 1754:SkMatrix::mapVectors\28SkPoint*\2c\20int\29\20const 1755:SkMaskBuilder::AllocImage\28unsigned\20long\2c\20SkMaskBuilder::AllocType\29 1756:SkMask::computeImageSize\28\29\20const 1757:SkMask::AlphaIter<\28SkMask::Format\294>::operator*\28\29\20const 1758:SkMakeImageFromRasterBitmap\28SkBitmap\20const&\2c\20SkCopyPixelsMode\29 1759:SkKnownRuntimeEffects::\28anonymous\20namespace\29::make_blur_2D_effect\28int\2c\20SkRuntimeEffect::Options\20const&\29 1760:SkKnownRuntimeEffects::\28anonymous\20namespace\29::make_blur_1D_effect\28int\2c\20SkRuntimeEffect::Options\20const&\29 1761:SkKnownRuntimeEffects::GetKnownRuntimeEffect\28SkKnownRuntimeEffects::StableKey\29 1762:SkJSONWriter::beginValue\28bool\29 1763:SkIntersections::flip\28\29 1764:SkImageFilter::getInput\28int\29\20const 1765:SkIRect::inset\28int\2c\20int\29 1766:SkIDChangeListener::List::changed\28\29 1767:SkFont::unicharToGlyph\28int\29\20const 1768:SkDrawTiler::~SkDrawTiler\28\29 1769:SkDrawTiler::next\28\29 1770:SkDrawTiler::SkDrawTiler\28SkBitmapDevice*\2c\20SkRect\20const*\29 1771:SkDrawBase::drawRect\28SkRect\20const&\2c\20SkPaint\20const&\29\20const 1772:SkDescriptor::operator==\28SkDescriptor\20const&\29\20const 1773:SkData::MakeEmpty\28\29 1774:SkDRect::add\28SkDPoint\20const&\29 1775:SkDCubic::FindExtrema\28double\20const*\2c\20double*\29 1776:SkConic::chopAt\28float\2c\20SkConic*\29\20const 1777:SkColorInfo::isOpaque\28\29\20const 1778:SkColorFilters::Blend\28unsigned\20int\2c\20SkBlendMode\29 1779:SkColorFilter::makeComposed\28sk_sp\29\20const 1780:SkCanvas::saveLayer\28SkRect\20const*\2c\20SkPaint\20const*\29 1781:SkCanvas::getTotalMatrix\28\29\20const 1782:SkCanvas::computeDeviceClipBounds\28bool\29\20const 1783:SkBlockAllocator::ByteRange\20SkBlockAllocator::allocate<4ul\2c\200ul>\28unsigned\20long\29 1784:SkBinaryWriteBuffer::~SkBinaryWriteBuffer\28\29 1785:SkAutoSMalloc<1024ul>::SkAutoSMalloc\28unsigned\20long\29 1786:SkAutoCanvasRestore::SkAutoCanvasRestore\28SkCanvas*\2c\20bool\29 1787:RunBasedAdditiveBlitter::checkY\28int\29 1788:RoughlyEqualUlps\28double\2c\20double\29 1789:PS_Conv_ToFixed 1790:OT::post::accelerator_t::cmp_gids\28void\20const*\2c\20void\20const*\2c\20void*\29 1791:OT::hmtxvmtx::accelerator_t::get_advance_without_var_unscaled\28unsigned\20int\29\20const 1792:OT::Layout::GPOS_impl::ValueFormat::apply_value\28OT::hb_ot_apply_context_t*\2c\20void\20const*\2c\20OT::IntType\20const*\2c\20hb_glyph_position_t&\29\20const 1793:GrTriangulator::VertexList::remove\28GrTriangulator::Vertex*\29 1794:GrTriangulator::Vertex*\20SkArenaAlloc::make\28SkPoint&\2c\20int&&\29 1795:GrTriangulator::Poly::addEdge\28GrTriangulator::Edge*\2c\20GrTriangulator::Side\2c\20GrTriangulator*\29 1796:GrSurface::invokeReleaseProc\28\29 1797:GrSurface::GrSurface\28GrGpu*\2c\20SkISize\20const&\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 1798:GrStyledShape::operator=\28GrStyledShape\20const&\29 1799:GrSimpleMeshDrawOpHelperWithStencil::createProgramInfoWithStencil\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrGeometryProcessor*\2c\20GrPrimitiveType\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 1800:GrSimpleMeshDrawOpHelper::CreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrGeometryProcessor*\2c\20GrProcessorSet&&\2c\20GrPrimitiveType\2c\20GrXferBarrierFlags\2c\20GrLoadOp\2c\20GrPipeline::InputFlags\2c\20GrUserStencilSettings\20const*\29 1801:GrShape::setRRect\28SkRRect\20const&\29 1802:GrShape::reset\28GrShape::Type\29 1803:GrResourceProvider::findOrCreatePatternedIndexBuffer\28unsigned\20short\20const*\2c\20int\2c\20int\2c\20int\2c\20skgpu::UniqueKey\20const&\29 1804:GrResourceProvider::createBuffer\28unsigned\20long\2c\20GrGpuBufferType\2c\20GrAccessPattern\2c\20GrResourceProvider::ZeroInit\29 1805:GrResourceProvider::assignUniqueKeyToResource\28skgpu::UniqueKey\20const&\2c\20GrGpuResource*\29 1806:GrRenderTask::addDependency\28GrRenderTask*\29 1807:GrRenderTask::GrRenderTask\28\29 1808:GrRenderTarget::onRelease\28\29 1809:GrQuadUtils::TessellationHelper::Vertices::asGrQuads\28GrQuad*\2c\20GrQuad::Type\2c\20GrQuad*\2c\20GrQuad::Type\29\20const 1810:GrProxyProvider::findOrCreateProxyByUniqueKey\28skgpu::UniqueKey\20const&\2c\20GrSurfaceProxy::UseAllocator\29 1811:GrProxyProvider::assignUniqueKeyToProxy\28skgpu::UniqueKey\20const&\2c\20GrTextureProxy*\29 1812:GrPaint::setCoverageFragmentProcessor\28std::__2::unique_ptr>\29 1813:GrMeshDrawOp::QuadHelper::QuadHelper\28GrMeshDrawTarget*\2c\20unsigned\20long\2c\20int\29 1814:GrIsStrokeHairlineOrEquivalent\28GrStyle\20const&\2c\20SkMatrix\20const&\2c\20float*\29 1815:GrImageInfo::minRowBytes\28\29\20const 1816:GrGpuResource::CacheAccess::isUsableAsScratch\28\29\20const 1817:GrGeometryProcessor::ProgramImpl::setupUniformColor\28GrGLSLFPFragmentBuilder*\2c\20GrGLSLUniformHandler*\2c\20char\20const*\2c\20GrResourceHandle*\29 1818:GrGLSLUniformHandler::addUniformArray\28GrProcessor\20const*\2c\20unsigned\20int\2c\20SkSLType\2c\20char\20const*\2c\20int\2c\20char\20const**\29 1819:GrGLSLShaderBuilder::emitFunction\28SkSLType\2c\20char\20const*\2c\20SkSpan\2c\20char\20const*\29 1820:GrGLSLShaderBuilder::code\28\29 1821:GrGLOpsRenderPass::bindVertexBuffer\28GrBuffer\20const*\2c\20int\29 1822:GrGLGpu::unbindSurfaceFBOForPixelOps\28GrSurface*\2c\20int\2c\20unsigned\20int\29 1823:GrGLGpu::flushRenderTarget\28GrGLRenderTarget*\2c\20bool\29 1824:GrGLGpu::bindSurfaceFBOForPixelOps\28GrSurface*\2c\20int\2c\20unsigned\20int\2c\20GrGLGpu::TempFBOTarget\29 1825:GrGLCompileAndAttachShader\28GrGLContext\20const&\2c\20unsigned\20int\2c\20unsigned\20int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20bool\2c\20GrThreadSafePipelineBuilder::Stats*\2c\20skgpu::ShaderErrorHandler*\29 1826:GrFragmentProcessor::visitTextureEffects\28std::__2::function\20const&\29\20const 1827:GrDirectContextPriv::flushSurface\28GrSurfaceProxy*\2c\20SkSurfaces::BackendSurfaceAccess\2c\20GrFlushInfo\20const&\2c\20skgpu::MutableTextureState\20const*\29 1828:GrBlendFragmentProcessor::Make\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20SkBlendMode\2c\20bool\29 1829:GrBackendFormat::operator=\28GrBackendFormat\20const&\29 1830:GrAAConvexTessellator::addPt\28SkPoint\20const&\2c\20float\2c\20float\2c\20bool\2c\20GrAAConvexTessellator::CurveState\29 1831:FT_Outline_Transform 1832:CFF::parsed_values_t::add_op\28unsigned\20int\2c\20CFF::byte_str_ref_t\20const&\2c\20CFF::op_str_t\20const&\29 1833:CFF::dict_opset_t::process_op\28unsigned\20int\2c\20CFF::interp_env_t&\29 1834:CFF::cs_opset_t\2c\20cff2_extents_param_t\2c\20cff2_path_procs_extents_t>::process_post_move\28unsigned\20int\2c\20CFF::cff2_cs_interp_env_t&\2c\20cff2_extents_param_t&\29 1835:CFF::cs_opset_t::process_post_move\28unsigned\20int\2c\20CFF::cff1_cs_interp_env_t&\2c\20cff1_extents_param_t&\29 1836:CFF::cs_interp_env_t>>::determine_hintmask_size\28\29 1837:BlockIndexIterator::Last\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::First\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::Decrement\28SkBlockAllocator::Block\20const*\2c\20int\29\2c\20&SkTBlockList::GetItem\28SkBlockAllocator::Block*\2c\20int\29>::begin\28\29\20const 1838:AlmostBetweenUlps\28double\2c\20double\2c\20double\29 1839:ActiveEdgeList::SingleRotation\28ActiveEdge*\2c\20int\29 1840:AAT::StateTable::EntryData>::get_entry\28int\2c\20unsigned\20int\29\20const 1841:AAT::StateTable::EntryData>::get_entry\28int\2c\20unsigned\20int\29\20const 1842:AAT::ContextualSubtable::driver_context_t::is_actionable\28AAT::StateTableDriver::EntryData>*\2c\20AAT::Entry::EntryData>\20const&\29 1843:void\20std::__2::__stable_sort\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::'lambda'\28\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\29&\2c\20std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>\28std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>\2c\20std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::'lambda'\28\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\29&\2c\20std::__2::iterator_traits\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>::difference_type\2c\20std::__2::iterator_traits\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>::value_type*\2c\20long\29 1844:void\20std::__2::__memberwise_forward_assign\5babi:v160004\5d>&>\2c\20std::__2::tuple>>\2c\20bool\2c\20std::__2::unique_ptr>\2c\200ul\2c\201ul>\28std::__2::tuple>&>&\2c\20std::__2::tuple>>&&\2c\20std::__2::__tuple_types>>\2c\20std::__2::__tuple_indices<0ul\2c\201ul>\29 1845:void\20extend_pts<\28SkPaint::Cap\292>\28SkPath::Verb\2c\20SkPath::Verb\2c\20SkPoint*\2c\20int\29 1846:void\20extend_pts<\28SkPaint::Cap\291>\28SkPath::Verb\2c\20SkPath::Verb\2c\20SkPoint*\2c\20int\29 1847:void\20SkSafeUnref\28SkTextBlob*\29 1848:void\20SkSafeUnref\28GrTextureProxy*\29 1849:unsigned\20int*\20SkRecorder::copy\28unsigned\20int\20const*\2c\20unsigned\20long\29 1850:tt_cmap14_ensure 1851:tanf 1852:std::__2::vector>\2c\20std::__2::allocator>>>::push_back\5babi:v160004\5d\28std::__2::unique_ptr>&&\29 1853:std::__2::vector>\2c\20std::__2::allocator>>>::~vector\5babi:v160004\5d\28\29 1854:std::__2::vector>::operator\5b\5d\5babi:v160004\5d\28unsigned\20long\29\20const 1855:std::__2::vector>::vector\28std::__2::vector>\20const&\29 1856:std::__2::unique_ptr>\20\5b\5d\2c\20std::__2::default_delete>\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 1857:std::__2::unique_ptr\20\28*\29\28SkReadBuffer&\29\2c\20SkGoodHash>::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap\20\28*\29\28SkReadBuffer&\29\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete\20\28*\29\28SkReadBuffer&\29\2c\20SkGoodHash>::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap\20\28*\29\28SkReadBuffer&\29\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 1858:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 1859:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 1860:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 1861:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 1862:std::__2::unique_ptr>::reset\5babi:v160004\5d\28GrDrawOpAtlas*\29 1863:std::__2::enable_if<__is_cpp17_forward_iterator>::value\2c\20void>::type\20std::__2::__split_buffer&>::__construct_at_end>\28std::__2::move_iterator\2c\20std::__2::move_iterator\29 1864:std::__2::codecvt::do_unshift\28__mbstate_t&\2c\20char8_t*\2c\20char8_t*\2c\20char8_t*&\29\20const 1865:std::__2::basic_string\2c\20std::__2::allocator>::__grow_by_and_replace\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20char\20const*\29 1866:std::__2::basic_string\2c\20std::__2::allocator>::__assign_external\28char\20const*\29 1867:std::__2::array\2c\204ul>::~array\28\29 1868:std::__2::__wrap_iter::operator++\5babi:v160004\5d\28\29 1869:std::__2::__wrap_iter::operator++\5babi:v160004\5d\28\29 1870:std::__2::__variant_detail::__copy_constructor\2c\20\28std::__2::__variant_detail::_Trait\291>::__copy_constructor\28std::__2::__variant_detail::__copy_constructor\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\29 1871:std::__2::__shared_count::__release_shared\5babi:v160004\5d\28\29 1872:std::__2::__num_get::__stage2_int_prep\28std::__2::ios_base&\2c\20wchar_t&\29 1873:std::__2::__num_get::__do_widen\28std::__2::ios_base&\2c\20wchar_t*\29\20const 1874:std::__2::__num_get::__stage2_int_prep\28std::__2::ios_base&\2c\20char&\29 1875:std::__2::__itoa::__append1\5babi:v160004\5d\28char*\2c\20unsigned\20int\29 1876:std::__2::__function::__value_func::operator=\5babi:v160004\5d\28std::__2::__function::__value_func&&\29 1877:std::__2::__function::__value_func::operator\28\29\5babi:v160004\5d\28SkIRect\20const&\29\20const 1878:sqrtf 1879:skvx::Vec<4\2c\20unsigned\20int>&\20skvx::operator-=<4\2c\20unsigned\20int>\28skvx::Vec<4\2c\20unsigned\20int>&\2c\20skvx::Vec<4\2c\20unsigned\20int>\20const&\29 1880:skvx::Vec<4\2c\20unsigned\20int>&\20skvx::operator+=<4\2c\20unsigned\20int>\28skvx::Vec<4\2c\20unsigned\20int>&\2c\20skvx::Vec<4\2c\20unsigned\20int>\20const&\29 1881:skvx::Vec<4\2c\20skvx::Mask::type>\20skvx::operator><4\2c\20float>\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\29 1882:skvx::Vec<4\2c\20float>\20skvx::operator+<4\2c\20float\2c\20float\2c\20void>\28skvx::Vec<4\2c\20float>\20const&\2c\20float\29\20\28.5784\29 1883:skvx::Vec<4\2c\20float>\20skvx::operator+<4\2c\20float>\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\29\20\28.640\29 1884:skvx::Vec<4\2c\20float>\20skvx::max<4\2c\20float>\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\29\20\28.7601\29 1885:skvx::Vec<4\2c\20float>\20skvx::max<4\2c\20float>\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\29 1886:sktext::gpu::VertexFiller::vertexStride\28SkMatrix\20const&\29\20const 1887:sktext::gpu::SubRunList::append\28std::__2::unique_ptr\29 1888:sktext::gpu::SubRun::~SubRun\28\29 1889:sktext::gpu::GlyphVector::~GlyphVector\28\29 1890:skif::LayerSpace::roundOut\28\29\20const 1891:skif::FilterResult::FilterResult\28sk_sp\2c\20skif::LayerSpace\20const&\29 1892:skia_private::THashTable::AdaptedTraits>::findOrNull\28skgpu::UniqueKey\20const&\29\20const 1893:skia_private::TArray::reset\28int\29 1894:skia_private::TArray::push_back_raw\28int\29 1895:skia_private::TArray::push_back\28\29 1896:skia_private::TArray::push_back\28SkSL::Variable*&&\29 1897:skia_private::TArray::~TArray\28\29 1898:skia_private::TArray::preallocateNewData\28int\2c\20double\29 1899:skia_private::AutoSTArray<8\2c\20unsigned\20int>::reset\28int\29 1900:skia_private::AutoSTArray<24\2c\20unsigned\20int>::~AutoSTArray\28\29 1901:skia_png_reciprocal2 1902:skia::textlayout::Run::~Run\28\29 1903:skia::textlayout::Run::posX\28unsigned\20long\29\20const 1904:skia::textlayout::ParagraphStyle::ParagraphStyle\28skia::textlayout::ParagraphStyle\20const&\29 1905:skia::textlayout::InternalLineMetrics::runTop\28skia::textlayout::Run\20const*\2c\20skia::textlayout::LineMetricStyle\29\20const 1906:skia::textlayout::InternalLineMetrics::height\28\29\20const 1907:skia::textlayout::InternalLineMetrics::add\28skia::textlayout::Run*\29 1908:skia::textlayout::FontCollection::findTypefaces\28std::__2::vector>\20const&\2c\20SkFontStyle\2c\20std::__2::optional\20const&\29 1909:skgpu::ganesh::TextureOp::BatchSizeLimiter::createOp\28GrTextureSetEntry*\2c\20int\2c\20GrAAType\29 1910:skgpu::ganesh::SurfaceFillContext::fillRectWithFP\28SkIRect\20const&\2c\20std::__2::unique_ptr>\29 1911:skgpu::ganesh::SurfaceFillContext::fillRectToRectWithFP\28SkIRect\20const&\2c\20SkIRect\20const&\2c\20std::__2::unique_ptr>\29 1912:skgpu::ganesh::SurfaceDrawContext::drawShapeUsingPathRenderer\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20GrStyledShape&&\2c\20bool\29 1913:skgpu::ganesh::SurfaceDrawContext::drawRect\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20GrStyle\20const*\29 1914:skgpu::ganesh::SurfaceDrawContext::drawRRect\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkRRect\20const&\2c\20GrStyle\20const&\29 1915:skgpu::ganesh::SurfaceDrawContext::drawFilledQuad\28GrClip\20const*\2c\20GrPaint&&\2c\20DrawQuad*\2c\20GrUserStencilSettings\20const*\29 1916:skgpu::ganesh::SurfaceContext::transferPixels\28GrColorType\2c\20SkIRect\20const&\29::$_0::~$_0\28\29 1917:skgpu::ganesh::SurfaceContext::transferPixels\28GrColorType\2c\20SkIRect\20const&\29 1918:skgpu::ganesh::SurfaceContext::PixelTransferResult::PixelTransferResult\28skgpu::ganesh::SurfaceContext::PixelTransferResult&&\29 1919:skgpu::ganesh::SoftwarePathRenderer::DrawNonAARect\28skgpu::ganesh::SurfaceDrawContext*\2c\20GrPaint&&\2c\20GrUserStencilSettings\20const&\2c\20GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20SkMatrix\20const&\29 1920:skgpu::ganesh::QuadPerEdgeAA::VertexSpec::vertexSize\28\29\20const 1921:skgpu::ganesh::OpsTask::OpChain::List::List\28skgpu::ganesh::OpsTask::OpChain::List&&\29 1922:skgpu::ganesh::LockTextureProxyView\28GrRecordingContext*\2c\20SkImage_Lazy\20const*\2c\20GrImageTexGenPolicy\2c\20skgpu::Mipmapped\29::$_0::operator\28\29\28GrSurfaceProxyView\20const&\29\20const 1923:skgpu::ganesh::Device::targetProxy\28\29 1924:skgpu::ganesh::ClipStack::getConservativeBounds\28\29\20const 1925:skgpu::UniqueKeyInvalidatedMessage::UniqueKeyInvalidatedMessage\28skgpu::UniqueKeyInvalidatedMessage\20const&\29 1926:skgpu::UniqueKey::operator=\28skgpu::UniqueKey\20const&\29 1927:skgpu::TAsyncReadResult::addTransferResult\28skgpu::ganesh::SurfaceContext::PixelTransferResult\20const&\2c\20SkISize\2c\20unsigned\20long\2c\20skgpu::TClientMappedBufferManager*\29 1928:skgpu::Swizzle::asString\28\29\20const 1929:skgpu::GetApproxSize\28SkISize\29 1930:sk_srgb_linear_singleton\28\29 1931:sk_sp::reset\28GrGpuBuffer*\29 1932:sk_sp\20sk_make_sp\28\29 1933:sfnt_get_name_id 1934:set_glyph\28hb_glyph_info_t&\2c\20hb_font_t*\29 1935:resource_cache_mutex\28\29 1936:ps_parser_to_token 1937:precisely_between\28double\2c\20double\2c\20double\29 1938:powf 1939:next_char\28hb_buffer_t*\2c\20unsigned\20int\29 1940:memchr 1941:log2f 1942:log 1943:less_or_equal_ulps\28float\2c\20float\2c\20int\29 1944:is_consonant\28hb_glyph_info_t\20const&\29 1945:int\20const*\20std::__2::find\5babi:v160004\5d\28int\20const*\2c\20int\20const*\2c\20int\20const&\29 1946:hb_vector_t::push\28\29 1947:hb_vector_t::resize\28int\2c\20bool\2c\20bool\29 1948:hb_unicode_funcs_destroy 1949:hb_serialize_context_t::pop_discard\28\29 1950:hb_paint_funcs_t::pop_clip\28void*\29 1951:hb_ot_map_t::feature_map_t\20const*\20hb_vector_t::bsearch\28unsigned\20int\20const&\2c\20hb_ot_map_t::feature_map_t\20const*\29\20const 1952:hb_lazy_loader_t\2c\20hb_face_t\2c\2024u\2c\20OT::GDEF_accelerator_t>::get_stored\28\29\20const 1953:hb_indic_would_substitute_feature_t::init\28hb_ot_map_t\20const*\2c\20unsigned\20int\2c\20bool\29 1954:hb_hashmap_t::del\28unsigned\20int\20const&\29 1955:hb_font_t::get_glyph_v_advance\28unsigned\20int\29 1956:hb_font_t::get_glyph_extents\28unsigned\20int\2c\20hb_glyph_extents_t*\29 1957:hb_buffer_t::_set_glyph_flags\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20bool\2c\20bool\29 1958:hb_buffer_create_similar 1959:gray_set_cell 1960:getenv 1961:ft_service_list_lookup 1962:fseek 1963:fillcheckrect\28int\2c\20int\2c\20int\2c\20int\2c\20SkBlitter*\29 1964:fflush 1965:fclose 1966:expm1 1967:expf 1968:crc_word 1969:clean_paint_for_drawImage\28SkPaint\20const*\29 1970:classify\28skcms_TransferFunction\20const&\2c\20TF_PQish*\2c\20TF_HLGish*\29 1971:choose_bmp_texture_colortype\28GrCaps\20const*\2c\20SkBitmap\20const&\29 1972:char*\20sktext::gpu::BagOfBytes::allocateBytesFor\28int\29 1973:cff_parse_fixed 1974:cf2_interpT2CharString 1975:cf2_hintmap_insertHint 1976:cf2_hintmap_build 1977:cf2_glyphpath_moveTo 1978:cf2_glyphpath_lineTo 1979:byn$mgfn-shared$std::__2::__split_buffer&>::~__split_buffer\28\29 1980:byn$mgfn-shared$std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 1981:byn$mgfn-shared$std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 1982:byn$mgfn-shared$std::__2::__function::__func\2c\20void\20\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29>::__clone\28std::__2::__function::__base*\29\20const 1983:byn$mgfn-shared$std::__2::__function::__func\2c\20void\20\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29>::__clone\28\29\20const 1984:byn$mgfn-shared$skgpu::ganesh::\28anonymous\20namespace\29::QuadEdgeEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const 1985:byn$mgfn-shared$skgpu::ganesh::PathStencilCoverOp::ClassID\28\29 1986:byn$mgfn-shared$format_alignment\28SkMask::Format\29 1987:byn$mgfn-shared$SkFibBlockSizes<4294967295u>::SkFibBlockSizes\28unsigned\20int\2c\20unsigned\20int\29::'lambda'\28\29::operator\28\29\28\29\20const 1988:bool\20std::__2::operator==\5babi:v160004\5d>\28std::__2::vector>\20const&\2c\20std::__2::vector>\20const&\29 1989:bool\20OT::OffsetTo>\2c\20OT::IntType\2c\20false>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 1990:blit_saved_trapezoid\28SkAnalyticEdge*\2c\20int\2c\20int\2c\20int\2c\20AdditiveBlitter*\2c\20unsigned\20char*\2c\20bool\2c\20bool\2c\20int\2c\20int\29 1991:append_multitexture_lookup\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20int\2c\20GrGLSLVarying\20const&\2c\20char\20const*\2c\20char\20const*\29 1992:afm_tokenize 1993:af_glyph_hints_reload 1994:a_dec 1995:_hb_glyph_info_set_unicode_props\28hb_glyph_info_t*\2c\20hb_buffer_t*\29 1996:_hb_draw_funcs_set_middle\28hb_draw_funcs_t*\2c\20void*\2c\20void\20\28*\29\28void*\29\29 1997:__syscall_ret 1998:__sin 1999:__cos 2000:\28anonymous\20namespace\29::valid_unit_divide\28float\2c\20float\2c\20float*\29 2001:\28anonymous\20namespace\29::draw_stencil_rect\28skgpu::ganesh::SurfaceDrawContext*\2c\20GrHardClip\20const&\2c\20GrUserStencilSettings\20const*\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20GrAA\29 2002:\28anonymous\20namespace\29::can_reorder\28SkRect\20const&\2c\20SkRect\20const&\29 2003:\28anonymous\20namespace\29::SkBlurImageFilter::~SkBlurImageFilter\28\29 2004:\28anonymous\20namespace\29::FillRectOpImpl::Make\28GrRecordingContext*\2c\20GrPaint&&\2c\20GrAAType\2c\20DrawQuad*\2c\20GrUserStencilSettings\20const*\2c\20GrSimpleMeshDrawOpHelper::InputFlags\29 2005:Skwasm::samplingOptionsForQuality\28Skwasm::FilterQuality\29 2006:Skwasm::createRRect\28float\20const*\29 2007:SkWriter32::writeSampling\28SkSamplingOptions\20const&\29 2008:SkWriter32::writePad\28void\20const*\2c\20unsigned\20long\29 2009:SkTextBlobRunIterator::next\28\29 2010:SkTextBlobBuilder::make\28\29 2011:SkTSect::addOne\28\29 2012:SkTMultiMap::remove\28skgpu::ScratchKey\20const&\2c\20GrGpuResource\20const*\29 2013:SkTLazy::set\28SkPath\20const&\29 2014:SkTDArray::append\28\29 2015:SkStrokeRec::isFillStyle\28\29\20const 2016:SkStrokeRec::SkStrokeRec\28SkPaint\20const&\2c\20float\29 2017:SkString::appendU32\28unsigned\20int\29 2018:SkStrike::digestFor\28skglyph::ActionType\2c\20SkPackedGlyphID\29 2019:SkSpecialImages::MakeFromRaster\28SkIRect\20const&\2c\20SkBitmap\20const&\2c\20SkSurfaceProps\20const&\29 2020:SkShaders::Blend\28SkBlendMode\2c\20sk_sp\2c\20sk_sp\29 2021:SkSemaphore::signal\28int\29 2022:SkScopeExit::~SkScopeExit\28\29 2023:SkScan::FillPath\28SkPath\20const&\2c\20SkRegion\20const&\2c\20SkBlitter*\29 2024:SkSL::is_scalar_op_matrix\28SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\29 2025:SkSL::evaluate_n_way_intrinsic\28SkSL::Context\20const&\2c\20SkSL::Expression\20const*\2c\20SkSL::Expression\20const*\2c\20SkSL::Expression\20const*\2c\20SkSL::Type\20const&\2c\20double\20\28*\29\28double\2c\20double\2c\20double\29\29 2026:SkSL::\28anonymous\20namespace\29::ProgramUsageVisitor::visitType\28SkSL::Type\20const&\29 2027:SkSL::Variable::initialValue\28\29\20const 2028:SkSL::Variable*\20SkSL::SymbolTable::takeOwnershipOfSymbol\28std::__2::unique_ptr>\29 2029:SkSL::Type::canCoerceTo\28SkSL::Type\20const&\2c\20bool\29\20const 2030:SkSL::SymbolTable::takeOwnershipOfString\28std::__2::basic_string\2c\20std::__2::allocator>\29 2031:SkSL::RP::pack_nybbles\28SkSpan\29 2032:SkSL::RP::Generator::foldComparisonOp\28SkSL::Operator\2c\20int\29 2033:SkSL::RP::Generator::createStack\28\29 2034:SkSL::RP::Builder::trace_var\28int\2c\20SkSL::RP::SlotRange\29 2035:SkSL::RP::Builder::jump\28int\29 2036:SkSL::RP::Builder::dot_floats\28int\29 2037:SkSL::RP::Builder::branch_if_no_lanes_active\28int\29 2038:SkSL::RP::AutoStack::~AutoStack\28\29 2039:SkSL::RP::AutoStack::pushClone\28int\29 2040:SkSL::Position::rangeThrough\28SkSL::Position\29\20const 2041:SkSL::PipelineStage::PipelineStageCodeGenerator::AutoOutputBuffer::~AutoOutputBuffer\28\29 2042:SkSL::Parser::type\28SkSL::Modifiers*\29 2043:SkSL::Parser::parseArrayDimensions\28SkSL::Position\2c\20SkSL::Type\20const**\29 2044:SkSL::Parser::modifiers\28\29 2045:SkSL::Parser::assignmentExpression\28\29 2046:SkSL::Parser::arraySize\28long\20long*\29 2047:SkSL::ModifierFlags::paddedDescription\28\29\20const 2048:SkSL::Inliner::inlineExpression\28SkSL::Position\2c\20skia_private::THashMap>\2c\20SkGoodHash>*\2c\20SkSL::SymbolTable*\2c\20SkSL::Expression\20const&\29::$_1::operator\28\29\28SkSL::ExpressionArray\20const&\29\20const 2049:SkSL::IRHelpers::Swizzle\28std::__2::unique_ptr>\2c\20skia_private::STArray<4\2c\20signed\20char\2c\20true>\29\20const 2050:SkSL::GLSLCodeGenerator::writeTypePrecision\28SkSL::Type\20const&\29 2051:SkSL::FunctionDeclaration::getMainCoordsParameter\28\29\20const 2052:SkSL::ExpressionArray::clone\28\29\20const 2053:SkSL::ConstantFolder::GetConstantValue\28SkSL::Expression\20const&\2c\20double*\29 2054:SkSL::ConstantFolder::GetConstantInt\28SkSL::Expression\20const&\2c\20long\20long*\29 2055:SkSL::Compiler::~Compiler\28\29 2056:SkSL::Compiler::errorText\28bool\29 2057:SkSL::Compiler::Compiler\28\29 2058:SkSL::Analysis::IsTrivialExpression\28SkSL::Expression\20const&\29 2059:SkRuntimeEffectPriv::TransformUniforms\28SkSpan\2c\20sk_sp\2c\20SkColorSpace\20const*\29 2060:SkRegion::setPath\28SkPath\20const&\2c\20SkRegion\20const&\29 2061:SkRegion::Iterator::Iterator\28SkRegion\20const&\29 2062:SkReduceOrder::Quad\28SkPoint\20const*\2c\20SkPoint*\29 2063:SkRect::sort\28\29 2064:SkRect::joinPossiblyEmptyRect\28SkRect\20const&\29 2065:SkRasterPipelineBlitter::appendClipScale\28SkRasterPipeline*\29\20const 2066:SkRasterPipelineBlitter::appendClipLerp\28SkRasterPipeline*\29\20const 2067:SkRRect::setRectRadii\28SkRect\20const&\2c\20SkPoint\20const*\29 2068:SkRGBA4f<\28SkAlphaType\292>::toBytes_RGBA\28\29\20const 2069:SkRGBA4f<\28SkAlphaType\292>::fitsInBytes\28\29\20const 2070:SkPointPriv::EqualsWithinTolerance\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\29 2071:SkPoint*\20SkRecorder::copy\28SkPoint\20const*\2c\20unsigned\20long\29 2072:SkPoint*\20SkArenaAlloc::allocUninitializedArray\28unsigned\20long\29 2073:SkPixmap::reset\28\29 2074:SkPixmap::computeByteSize\28\29\20const 2075:SkPictureRecord::addImage\28SkImage\20const*\29 2076:SkPathRef::SkPathRef\28int\2c\20int\2c\20int\29 2077:SkPathPriv::ComputeFirstDirection\28SkPath\20const&\29 2078:SkPath::isLine\28SkPoint*\29\20const 2079:SkPaintPriv::ComputeLuminanceColor\28SkPaint\20const&\29 2080:SkPaint::operator=\28SkPaint\20const&\29 2081:SkPaint::nothingToDraw\28\29\20const 2082:SkOpSpan::release\28SkOpPtT\20const*\29 2083:SkOpContourBuilder::addCurve\28SkPath::Verb\2c\20SkPoint\20const*\2c\20float\29 2084:SkMipmap::Build\28SkPixmap\20const&\2c\20SkDiscardableMemory*\20\28*\29\28unsigned\20long\29\2c\20bool\29 2085:SkMeshSpecification::Varying::Varying\28SkMeshSpecification::Varying&&\29 2086:SkMatrix::mapOrigin\28\29\20const 2087:SkMatrix::decomposeScale\28SkSize*\2c\20SkMatrix*\29\20const 2088:SkMaskFilter::MakeBlur\28SkBlurStyle\2c\20float\2c\20bool\29 2089:SkM44::SkM44\28SkMatrix\20const&\29 2090:SkIntersections::insertNear\28double\2c\20double\2c\20SkDPoint\20const&\2c\20SkDPoint\20const&\29 2091:SkImageShader::Make\28sk_sp\2c\20SkTileMode\2c\20SkTileMode\2c\20SkSamplingOptions\20const&\2c\20SkMatrix\20const*\2c\20bool\29 2092:SkImageGenerator::onRefEncodedData\28\29 2093:SkGradientBaseShader::flatten\28SkWriteBuffer&\29\20const 2094:SkFont::getMetrics\28SkFontMetrics*\29\20const 2095:SkFont::SkFont\28\29 2096:SkFindQuadMaxCurvature\28SkPoint\20const*\29 2097:SkFDot6Div\28int\2c\20int\29 2098:SkEvalQuadAt\28SkPoint\20const*\2c\20float\29 2099:SkEvalCubicAt\28SkPoint\20const*\2c\20float\2c\20SkPoint*\2c\20SkPoint*\2c\20SkPoint*\29 2100:SkEdgeClipper::appendVLine\28float\2c\20float\2c\20float\2c\20bool\29 2101:SkDrawShadowMetrics::GetSpotParams\28float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float*\2c\20float*\2c\20SkPoint*\29 2102:SkDraw::SkDraw\28\29 2103:SkDevice::setGlobalCTM\28SkM44\20const&\29 2104:SkDevice::onReadPixels\28SkPixmap\20const&\2c\20int\2c\20int\29 2105:SkDLine::exactPoint\28SkDPoint\20const&\29\20const 2106:SkColorSpace::MakeSRGBLinear\28\29 2107:SkChopCubicAtHalf\28SkPoint\20const*\2c\20SkPoint*\29 2108:SkCanvas::getLocalClipBounds\28\29\20const 2109:SkCanvas::drawPicture\28SkPicture\20const*\2c\20SkMatrix\20const*\2c\20SkPaint\20const*\29 2110:SkBulkGlyphMetrics::glyphs\28SkSpan\29 2111:SkBlockAllocator::releaseBlock\28SkBlockAllocator::Block*\29 2112:SkBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 2113:SkBlendMode_AppendStages\28SkBlendMode\2c\20SkRasterPipeline*\29 2114:SkBitmap::tryAllocPixels\28SkBitmap::Allocator*\29 2115:SkBitmap::readPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20int\2c\20int\29\20const 2116:SkBitmap::operator=\28SkBitmap\20const&\29 2117:SkBitmap::getGenerationID\28\29\20const 2118:SkAutoPixmapStorage::SkAutoPixmapStorage\28\29 2119:SkAAClipBlitter::~SkAAClipBlitter\28\29 2120:SkAAClip::setRegion\28SkRegion\20const&\29::$_0::operator\28\29\28unsigned\20char\2c\20int\29\20const 2121:SkAAClip::findX\28unsigned\20char\20const*\2c\20int\2c\20int*\29\20const 2122:SkAAClip::findRow\28int\2c\20int*\29\20const 2123:SkAAClip::Builder::Blitter::~Blitter\28\29 2124:RoughlyEqualUlps\28float\2c\20float\29 2125:R 2126:PS_Conv_ToInt 2127:OT::hmtxvmtx::accelerator_t::get_leading_bearing_without_var_unscaled\28unsigned\20int\2c\20int*\29\20const 2128:OT::hb_ot_apply_context_t::replace_glyph\28unsigned\20int\29 2129:OT::fvar::get_axes\28\29\20const 2130:OT::Layout::GPOS_impl::ValueFormat::sanitize_values_stride_unsafe\28hb_sanitize_context_t*\2c\20void\20const*\2c\20OT::IntType\20const*\2c\20unsigned\20int\2c\20unsigned\20int\29\20const 2131:OT::DeltaSetIndexMap::map\28unsigned\20int\29\20const 2132:Normalize 2133:Ins_Goto_CodeRange 2134:GrTriangulator::setBottom\28GrTriangulator::Edge*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Comparator\20const&\29\20const 2135:GrTriangulator::VertexList::append\28GrTriangulator::VertexList\20const&\29 2136:GrTriangulator::Line::normalize\28\29 2137:GrTriangulator::Edge::disconnect\28\29 2138:GrThreadSafeCache::find\28skgpu::UniqueKey\20const&\29 2139:GrThreadSafeCache::add\28skgpu::UniqueKey\20const&\2c\20GrSurfaceProxyView\20const&\29 2140:GrTextureEffect::texture\28\29\20const 2141:GrTextureEffect::GrTextureEffect\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20GrTextureEffect::Sampling\20const&\29 2142:GrSurfaceProxyView::Copy\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20skgpu::Mipmapped\2c\20SkIRect\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20std::__2::basic_string_view>\29 2143:GrSurfaceProxyPriv::doLazyInstantiation\28GrResourceProvider*\29 2144:GrSurface::~GrSurface\28\29 2145:GrStyledShape::simplify\28\29 2146:GrStyle::applies\28\29\20const 2147:GrSimpleMeshDrawOpHelperWithStencil::fixedFunctionFlags\28\29\20const 2148:GrSimpleMeshDrawOpHelper::finalizeProcessors\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrUserStencilSettings\20const*\2c\20GrClampType\2c\20GrProcessorAnalysisCoverage\2c\20GrProcessorAnalysisColor*\29 2149:GrSimpleMeshDrawOpHelper::detachProcessorSet\28\29 2150:GrSimpleMeshDrawOpHelper::CreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrPipeline\20const*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrGeometryProcessor*\2c\20GrPrimitiveType\2c\20GrXferBarrierFlags\2c\20GrLoadOp\2c\20GrUserStencilSettings\20const*\29 2151:GrSimpleMesh::setIndexedPatterned\28sk_sp\2c\20int\2c\20int\2c\20int\2c\20sk_sp\2c\20int\2c\20int\29 2152:GrShape::setRect\28SkRect\20const&\29 2153:GrShape::GrShape\28GrShape\20const&\29 2154:GrShaderVar::addModifier\28char\20const*\29 2155:GrSWMaskHelper::~GrSWMaskHelper\28\29 2156:GrResourceProvider::findOrMakeStaticBuffer\28GrGpuBufferType\2c\20unsigned\20long\2c\20void\20const*\2c\20skgpu::UniqueKey\20const&\29 2157:GrResourceProvider::findOrMakeStaticBuffer\28GrGpuBufferType\2c\20unsigned\20long\2c\20skgpu::UniqueKey\20const&\2c\20void\20\28*\29\28skgpu::VertexWriter\2c\20unsigned\20long\29\29 2158:GrResourceCache::purgeAsNeeded\28\29 2159:GrRenderTask::addDependency\28GrDrawingManager*\2c\20GrSurfaceProxy*\2c\20skgpu::Mipmapped\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29 2160:GrRecordingContextPriv::makeSFC\28GrImageInfo\2c\20std::__2::basic_string_view>\2c\20SkBackingFit\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrSurfaceOrigin\2c\20skgpu::Budgeted\29 2161:GrQuad::asRect\28SkRect*\29\20const 2162:GrProcessorSet::operator!=\28GrProcessorSet\20const&\29\20const 2163:GrPixmapBase::GrPixmapBase\28GrImageInfo\2c\20void\20const*\2c\20unsigned\20long\29 2164:GrPipeline::getXferProcessor\28\29\20const 2165:GrPathUtils::generateQuadraticPoints\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20SkPoint**\2c\20unsigned\20int\29 2166:GrPathUtils::generateCubicPoints\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20SkPoint**\2c\20unsigned\20int\29 2167:GrNativeRect::asSkIRect\28\29\20const 2168:GrGeometryProcessor::ProgramImpl::~ProgramImpl\28\29 2169:GrGeometryProcessor::ProgramImpl::WriteOutputPosition\28GrGLSLVertexBuilder*\2c\20GrGLSLUniformHandler*\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\2c\20char\20const*\2c\20SkMatrix\20const&\2c\20GrResourceHandle*\29 2170:GrGLSLShaderBuilder::defineConstant\28char\20const*\2c\20float\29 2171:GrGLSLShaderBuilder::addFeature\28unsigned\20int\2c\20char\20const*\29 2172:GrGLSLProgramBuilder::nameVariable\28char\2c\20char\20const*\2c\20bool\29 2173:GrGLSLColorSpaceXformHelper::setData\28GrGLSLProgramDataManager\20const&\2c\20GrColorSpaceXform\20const*\29 2174:GrGLSLColorSpaceXformHelper::emitCode\28GrGLSLUniformHandler*\2c\20GrColorSpaceXform\20const*\2c\20unsigned\20int\29 2175:GrGLGpu::flushColorWrite\28bool\29 2176:GrGLGpu::bindTexture\28int\2c\20GrSamplerState\2c\20skgpu::Swizzle\20const&\2c\20GrGLTexture*\29 2177:GrFragmentProcessor::visitWithImpls\28std::__2::function\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29\20const 2178:GrFragmentProcessor::visitProxies\28std::__2::function\20const&\29\20const 2179:GrFragmentProcessor::ColorMatrix\28std::__2::unique_ptr>\2c\20float\20const*\2c\20bool\2c\20bool\2c\20bool\29 2180:GrDstProxyView::operator=\28GrDstProxyView\20const&\29 2181:GrDrawingManager::closeActiveOpsTask\28\29 2182:GrDrawingManager::appendTask\28sk_sp\29 2183:GrColorSpaceXformEffect::Make\28std::__2::unique_ptr>\2c\20sk_sp\29 2184:GrColorSpaceXform::XformKey\28GrColorSpaceXform\20const*\29 2185:GrColorSpaceXform::Make\28GrColorInfo\20const&\2c\20GrColorInfo\20const&\29 2186:GrColorInfo::GrColorInfo\28GrColorInfo\20const&\29 2187:GrCaps::isFormatCompressed\28GrBackendFormat\20const&\29\20const 2188:GrBufferAllocPool::~GrBufferAllocPool\28\29 2189:GrBufferAllocPool::putBack\28unsigned\20long\29 2190:GrBlurUtils::convolve_gaussian\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20GrColorType\2c\20SkAlphaType\2c\20SkIRect\2c\20SkIRect\2c\20GrBlurUtils::\28anonymous\20namespace\29::Direction\2c\20int\2c\20float\2c\20SkTileMode\2c\20sk_sp\2c\20SkBackingFit\29::$_1::operator\28\29\28SkIRect\29\20const 2191:GrAAConvexTessellator::lineTo\28SkPoint\20const&\2c\20GrAAConvexTessellator::CurveState\29 2192:FwDCubicEvaluator::restart\28int\29 2193:FT_Vector_Transform 2194:FT_Stream_Read 2195:FT_Select_Charmap 2196:FT_Lookup_Renderer 2197:FT_Get_Module_Interface 2198:CFF::opset_t::process_op\28unsigned\20int\2c\20CFF::interp_env_t&\29 2199:CFF::arg_stack_t::push_int\28int\29 2200:CFF::CFFIndex>::offset_at\28unsigned\20int\29\20const 2201:BlockIndexIterator::Last\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::First\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::Decrement\28SkBlockAllocator::Block\20const*\2c\20int\29\2c\20&SkTBlockList::GetItem\28SkBlockAllocator::Block*\2c\20int\29>::Item::operator++\28\29 2202:ActiveEdge::intersect\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20unsigned\20short\2c\20unsigned\20short\29\20const 2203:AAT::hb_aat_apply_context_t::~hb_aat_apply_context_t\28\29 2204:AAT::hb_aat_apply_context_t::hb_aat_apply_context_t\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\2c\20hb_blob_t*\29 2205:void\20std::__2::reverse\5babi:v160004\5d\28unsigned\20int*\2c\20unsigned\20int*\29 2206:void\20std::__2::__variant_detail::__assignment>::__generic_assign\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&>\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\29 2207:void\20skgpu::ganesh::SurfaceFillContext::clear<\28SkAlphaType\292>\28SkRGBA4f<\28SkAlphaType\292>\20const&\29 2208:void\20hb_serialize_context_t::add_link\2c\20true>>\28OT::OffsetTo\2c\20true>&\2c\20unsigned\20int\2c\20hb_serialize_context_t::whence_t\2c\20unsigned\20int\29 2209:void\20SkSafeUnref\28GrArenas*\29 2210:void\20SkSL::RP::unpack_nybbles_to_offsets\28unsigned\20int\2c\20SkSpan\29 2211:unlock 2212:ubidi_setPara_skia 2213:ubidi_getCustomizedClass_skia 2214:tt_set_mm_blend 2215:tt_face_get_ps_name 2216:trinkle 2217:t1_builder_check_points 2218:subdivide\28SkConic\20const&\2c\20SkPoint*\2c\20int\29 2219:std::__2::vector>\2c\20std::__2::allocator>>>::__swap_out_circular_buffer\28std::__2::__split_buffer>\2c\20std::__2::allocator>>&>&\29 2220:std::__2::vector>\2c\20std::__2::allocator>>>::__clear\5babi:v160004\5d\28\29 2221:std::__2::vector>\2c\20std::__2::allocator>>>::~vector\5babi:v160004\5d\28\29 2222:std::__2::vector>::__recommend\5babi:v160004\5d\28unsigned\20long\29\20const 2223:std::__2::vector>::__recommend\5babi:v160004\5d\28unsigned\20long\29\20const 2224:std::__2::vector\2c\20std::__2::allocator>>::push_back\5babi:v160004\5d\28sk_sp\20const&\29 2225:std::__2::vector>::push_back\5babi:v160004\5d\28float&&\29 2226:std::__2::vector>::push_back\5babi:v160004\5d\28char\20const*&&\29 2227:std::__2::vector>::__move_assign\28std::__2::vector>&\2c\20std::__2::integral_constant\29 2228:std::__2::vector>::__swap_out_circular_buffer\28std::__2::__split_buffer&>&\29 2229:std::__2::unordered_map\2c\20std::__2::equal_to\2c\20std::__2::allocator>>::operator\5b\5d\28GrTriangulator::Vertex*\20const&\29 2230:std::__2::unique_ptr::Pair\2c\20SkSL::SymbolTable::SymbolKey\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete::Pair\2c\20SkSL::SymbolTable::SymbolKey\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 2231:std::__2::unique_ptr::Traits>::Slot\20\5b\5d\2c\20std::__2::default_delete::Traits>::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 2232:std::__2::unique_ptr>::reset\5babi:v160004\5d\28skgpu::ganesh::SurfaceDrawContext*\29 2233:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 2234:std::__2::unique_ptr>::reset\5babi:v160004\5d\28skgpu::ganesh::PathRendererChain*\29 2235:std::__2::unique_ptr>::reset\5babi:v160004\5d\28hb_face_t*\29 2236:std::__2::unique_ptr::release\5babi:v160004\5d\28\29 2237:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 2238:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 2239:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 2240:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 2241:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 2242:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 2243:std::__2::mutex::unlock\28\29 2244:std::__2::mutex::lock\28\29 2245:std::__2::moneypunct::do_decimal_point\28\29\20const 2246:std::__2::moneypunct::pos_format\5babi:v160004\5d\28\29\20const 2247:std::__2::moneypunct::do_decimal_point\28\29\20const 2248:std::__2::locale::locale\28std::__2::locale\20const&\29 2249:std::__2::locale::classic\28\29 2250:std::__2::istreambuf_iterator>::istreambuf_iterator\5babi:v160004\5d\28std::__2::basic_istream>&\29 2251:std::__2::function::operator\28\29\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29\20const 2252:std::__2::function::operator\28\29\28int\2c\20skia::textlayout::Paragraph::VisitorInfo\20const*\29\20const 2253:std::__2::enable_if::value\20&&\20is_move_assignable::value\2c\20void>::type\20std::__2::swap\5babi:v160004\5d\28unsigned\20int&\2c\20unsigned\20int&\29 2254:std::__2::enable_if<_CheckArrayPointerConversion::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::Slot*>::value\2c\20void>::type\20std::__2::unique_ptr::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d>>::reset\5babi:v160004\5d::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::Slot*>\28skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::Slot*\29 2255:std::__2::enable_if<_CheckArrayPointerConversion>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::Slot*>::value\2c\20void>::type\20std::__2::unique_ptr>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d>>::reset\5babi:v160004\5d>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::Slot*>\28skia_private::THashTable>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::Slot*\29 2256:std::__2::deque>::pop_front\28\29 2257:std::__2::deque>::begin\5babi:v160004\5d\28\29 2258:std::__2::default_delete::Pair\2c\20char\20const*\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d>::_EnableIfConvertible::Pair\2c\20char\20const*\2c\20skia_private::THashMap::Pair>::Slot>::type\20std::__2::default_delete::Pair\2c\20char\20const*\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d>::operator\28\29\5babi:v160004\5d::Pair\2c\20char\20const*\2c\20skia_private::THashMap::Pair>::Slot>\28skia_private::THashTable::Pair\2c\20char\20const*\2c\20skia_private::THashMap::Pair>::Slot*\29\20const 2259:std::__2::ctype::toupper\5babi:v160004\5d\28char\29\20const 2260:std::__2::chrono::duration>::duration\5babi:v160004\5d\28long\20long\20const&\2c\20std::__2::enable_if::value\20&&\20\28std::__2::integral_constant::value\20||\20!treat_as_floating_point::value\29\2c\20void>::type*\29 2261:std::__2::basic_string_view>::find\5babi:v160004\5d\28char\2c\20unsigned\20long\29\20const 2262:std::__2::basic_string\2c\20std::__2::allocator>\20const*\20std::__2::__scan_keyword\5babi:v160004\5d>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::ctype>\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::ctype\20const&\2c\20unsigned\20int&\2c\20bool\29 2263:std::__2::basic_string\2c\20std::__2::allocator>::operator\5b\5d\5babi:v160004\5d\28unsigned\20long\29\20const 2264:std::__2::basic_string\2c\20std::__2::allocator>::__fits_in_sso\5babi:v160004\5d\28unsigned\20long\29 2265:std::__2::basic_string\2c\20std::__2::allocator>\20const*\20std::__2::__scan_keyword\5babi:v160004\5d>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::ctype>\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::ctype\20const&\2c\20unsigned\20int&\2c\20bool\29 2266:std::__2::basic_string\2c\20std::__2::allocator>::operator=\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 2267:std::__2::basic_string\2c\20std::__2::allocator>::__get_short_size\5babi:v160004\5d\28\29\20const 2268:std::__2::basic_string\2c\20std::__2::allocator>::__fits_in_sso\5babi:v160004\5d\28unsigned\20long\29 2269:std::__2::basic_string\2c\20std::__2::allocator>::__assign_external\28char\20const*\2c\20unsigned\20long\29 2270:std::__2::basic_streambuf>::__pbump\5babi:v160004\5d\28long\29 2271:std::__2::basic_ostream>::sentry::operator\20bool\5babi:v160004\5d\28\29\20const 2272:std::__2::basic_iostream>::~basic_iostream\28\29 2273:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d>>\28SkSL::Position&\2c\20SkSL::OperatorKind&&\2c\20std::__2::unique_ptr>&&\29 2274:std::__2::__tuple_impl\2c\20sk_sp\2c\20sk_sp>::~__tuple_impl\28\29 2275:std::__2::__tuple_impl\2c\20GrFragmentProcessor\20const*\2c\20GrGeometryProcessor::ProgramImpl::TransformInfo>::__tuple_impl\28std::__2::__tuple_impl\2c\20GrFragmentProcessor\20const*\2c\20GrGeometryProcessor::ProgramImpl::TransformInfo>&&\29 2276:std::__2::__tree\2c\20std::__2::__map_value_compare\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator>>::destroy\28std::__2::__tree_node\2c\20void*>*\29 2277:std::__2::__throw_bad_variant_access\5babi:v160004\5d\28\29 2278:std::__2::__split_buffer>\2c\20std::__2::allocator>>&>::~__split_buffer\28\29 2279:std::__2::__split_buffer>::push_front\28skia::textlayout::OneLineShaper::RunBlock*&&\29 2280:std::__2::__split_buffer>::push_back\5babi:v160004\5d\28skia::textlayout::OneLineShaper::RunBlock*\20const&\29 2281:std::__2::__split_buffer\2c\20std::__2::allocator>&>::~__split_buffer\28\29 2282:std::__2::__split_buffer\2c\20std::__2::allocator>&>::__split_buffer\28unsigned\20long\2c\20unsigned\20long\2c\20std::__2::allocator>&\29 2283:std::__2::__split_buffer&>::__split_buffer\28unsigned\20long\2c\20unsigned\20long\2c\20std::__2::allocator&\29 2284:std::__2::__shared_count::__add_shared\5babi:v160004\5d\28\29 2285:std::__2::__optional_destruct_base::~__optional_destruct_base\5babi:v160004\5d\28\29 2286:std::__2::__optional_destruct_base::reset\5babi:v160004\5d\28\29 2287:std::__2::__num_put_base::__format_int\28char*\2c\20char\20const*\2c\20bool\2c\20unsigned\20int\29 2288:std::__2::__num_put_base::__format_float\28char*\2c\20char\20const*\2c\20unsigned\20int\29 2289:std::__2::__itoa::__append8\5babi:v160004\5d\28char*\2c\20unsigned\20int\29 2290:skvx::Vec<8\2c\20unsigned\20short>\20skvx::operator+<8\2c\20unsigned\20short\2c\20unsigned\20short\2c\20void>\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20unsigned\20short\29 2291:skvx::Vec<4\2c\20skvx::Mask::type>\20skvx::operator>=<4\2c\20float\2c\20float\2c\20void>\28skvx::Vec<4\2c\20float>\20const&\2c\20float\29 2292:skvx::Vec<4\2c\20float>\20skvx::operator*<4\2c\20float\2c\20double\2c\20void>\28skvx::Vec<4\2c\20float>\20const&\2c\20double\29 2293:sktext::gpu::VertexFiller::deviceRectAndCheckTransform\28SkMatrix\20const&\29\20const 2294:sktext::gpu::GlyphVector::packedGlyphIDToGlyph\28sktext::gpu::StrikeCache*\29 2295:sktext::SkStrikePromise::strike\28\29 2296:skif::\28anonymous\20namespace\29::GaneshBackend::~GaneshBackend\28\29 2297:skif::RoundOut\28SkRect\29 2298:skif::Mapping::applyOrigin\28skif::LayerSpace\20const&\29 2299:skif::LayerSpace\20skif::Mapping::paramToLayer\28skif::ParameterSpace\20const&\29\20const 2300:skif::LayerSpace::mapRect\28skif::LayerSpace\20const&\29\20const 2301:skif::FilterResult::analyzeBounds\28skif::LayerSpace\20const&\2c\20skif::FilterResult::BoundsScope\29\20const 2302:skif::FilterResult::Builder::add\28skif::FilterResult\20const&\2c\20std::__2::optional>\2c\20SkEnumBitMask\2c\20SkSamplingOptions\20const&\29 2303:skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::uncheckedSet\28skia_private::THashMap::Pair&&\29 2304:skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::uncheckedSet\28skia_private::THashMap::Pair&&\29 2305:skia_private::THashTable>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::uncheckedSet\28skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair&&\29 2306:skia_private::THashTable>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::Hash\28std::__2::basic_string_view>\20const&\29 2307:skia_private::THashTable\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair\2c\20SkSL::Type\20const*\2c\20skia_private::THashMap\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair>::Slot::emplace\28skia_private::THashMap\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair&&\2c\20unsigned\20int\29 2308:skia_private::THashTable\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair\2c\20SkSL::FunctionDeclaration\20const*\2c\20skia_private::THashMap\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair>::uncheckedSet\28skia_private::THashMap\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair&&\29 2309:skia_private::THashTable::Traits>::uncheckedSet\28long\20long&&\29 2310:skia_private::THashTable::Traits>::uncheckedSet\28int&&\29 2311:skia_private::THashTable::Entry*\2c\20unsigned\20int\2c\20SkLRUCache::Traits>::resize\28int\29 2312:skia_private::THashTable::Entry*\2c\20unsigned\20int\2c\20SkLRUCache::Traits>::find\28unsigned\20int\20const&\29\20const 2313:skia_private::THashMap::find\28unsigned\20int\20const&\29\20const 2314:skia_private::THashMap::operator\5b\5d\28SkSL::Variable\20const*\20const&\29 2315:skia_private::TArray::push_back_raw\28int\29 2316:skia_private::TArray>\2c\20true>::destroyAll\28\29 2317:skia_private::TArray>\2c\20true>::push_back\28std::__2::unique_ptr>&&\29 2318:skia_private::TArray::preallocateNewData\28int\2c\20double\29 2319:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 2320:skia_private::TArray::~TArray\28\29 2321:skia_private::TArray::preallocateNewData\28int\2c\20double\29 2322:skia_private::TArray::~TArray\28\29 2323:skia_private::TArray\2c\20true>::~TArray\28\29 2324:skia_private::TArray::reserve_exact\28int\29 2325:skia_private::TArray<\28anonymous\20namespace\29::MeshOp::Mesh\2c\20true>::preallocateNewData\28int\2c\20double\29 2326:skia_private::TArray<\28anonymous\20namespace\29::MeshOp::Mesh\2c\20true>::installDataAndUpdateCapacity\28SkSpan\29 2327:skia_private::TArray::copy\28SkUnicode::CodeUnitFlags\20const*\29 2328:skia_private::TArray::clear\28\29 2329:skia_private::TArray::operator=\28skia_private::TArray&&\29 2330:skia_private::TArray::preallocateNewData\28int\2c\20double\29 2331:skia_private::TArray::preallocateNewData\28int\2c\20double\29 2332:skia_private::TArray::push_back\28GrRenderTask*&&\29 2333:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 2334:skia_private::STArray<4\2c\20signed\20char\2c\20true>::STArray\28skia_private::STArray<4\2c\20signed\20char\2c\20true>&&\29 2335:skia_private::AutoSTMalloc<4ul\2c\20SkFontArguments::Palette::Override\2c\20void>::AutoSTMalloc\28unsigned\20long\29 2336:skia_private::AutoSTArray<24\2c\20unsigned\20int>::reset\28int\29 2337:skia_png_zstream_error 2338:skia_png_read_data 2339:skia_png_get_int_32 2340:skia_png_chunk_unknown_handling 2341:skia_png_calloc 2342:skia_png_benign_error 2343:skia::textlayout::TextWrapper::getClustersTrimmedWidth\28\29 2344:skia::textlayout::TextWrapper::TextStretch::startFrom\28skia::textlayout::Cluster*\2c\20unsigned\20long\29 2345:skia::textlayout::TextWrapper::TextStretch::extend\28skia::textlayout::Cluster*\29 2346:skia::textlayout::TextLine::measureTextInsideOneRun\28skia::textlayout::SkRange\2c\20skia::textlayout::Run\20const*\2c\20float\2c\20float\2c\20bool\2c\20skia::textlayout::TextLine::TextAdjustment\29\20const 2347:skia::textlayout::TextLine::isLastLine\28\29\20const 2348:skia::textlayout::Run::calculateHeight\28skia::textlayout::LineMetricStyle\2c\20skia::textlayout::LineMetricStyle\29\20const 2349:skia::textlayout::Run::Run\28skia::textlayout::Run\20const&\29 2350:skia::textlayout::ParagraphImpl::getLineNumberAt\28unsigned\20long\29\20const 2351:skia::textlayout::ParagraphImpl::findPreviousGraphemeBoundary\28unsigned\20long\29\20const 2352:skia::textlayout::ParagraphCacheKey::~ParagraphCacheKey\28\29 2353:skia::textlayout::ParagraphBuilderImpl::startStyledBlock\28\29 2354:skia::textlayout::OneLineShaper::RunBlock&\20std::__2::vector>::emplace_back\28skia::textlayout::OneLineShaper::RunBlock&\29 2355:skia::textlayout::OneLineShaper::FontKey::FontKey\28skia::textlayout::OneLineShaper::FontKey&&\29 2356:skia::textlayout::InternalLineMetrics::updateLineMetrics\28skia::textlayout::InternalLineMetrics&\29 2357:skia::textlayout::FontCollection::getFontManagerOrder\28\29\20const 2358:skia::textlayout::Decorations::calculateGaps\28skia::textlayout::TextLine::ClipContext\20const&\2c\20SkRect\20const&\2c\20float\2c\20float\29 2359:skia::textlayout::Cluster::runOrNull\28\29\20const 2360:skgpu::tess::PatchStride\28skgpu::tess::PatchAttribs\29 2361:skgpu::tess::MiddleOutPolygonTriangulator::MiddleOutPolygonTriangulator\28int\2c\20SkPoint\29 2362:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::fixedFunctionFlags\28\29\20const 2363:skgpu::ganesh::SurfaceFillContext::~SurfaceFillContext\28\29 2364:skgpu::ganesh::SurfaceFillContext::replaceOpsTask\28\29 2365:skgpu::ganesh::SurfaceDrawContext::fillPixelsWithLocalMatrix\28GrClip\20const*\2c\20GrPaint&&\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\29 2366:skgpu::ganesh::SurfaceDrawContext::drawShape\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20GrStyledShape&&\29 2367:skgpu::ganesh::SurfaceDrawContext::drawPaint\28GrClip\20const*\2c\20GrPaint&&\2c\20SkMatrix\20const&\29 2368:skgpu::ganesh::SurfaceDrawContext::MakeWithFallback\28GrRecordingContext*\2c\20GrColorType\2c\20sk_sp\2c\20SkBackingFit\2c\20SkISize\2c\20SkSurfaceProps\20const&\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrSurfaceOrigin\2c\20skgpu::Budgeted\29 2369:skgpu::ganesh::SurfaceContext::~SurfaceContext\28\29 2370:skgpu::ganesh::SurfaceContext::transferPixels\28GrColorType\2c\20SkIRect\20const&\29::$_0::$_0\28$_0&&\29 2371:skgpu::ganesh::SurfaceContext::PixelTransferResult::operator=\28skgpu::ganesh::SurfaceContext::PixelTransferResult&&\29 2372:skgpu::ganesh::SupportedTextureFormats\28GrImageContext\20const&\29::$_0::operator\28\29\28SkYUVAPixmapInfo::DataType\2c\20int\29\20const 2373:skgpu::ganesh::SmallPathAtlasMgr::~SmallPathAtlasMgr\28\29 2374:skgpu::ganesh::QuadPerEdgeAA::VertexSpec::coverageMode\28\29\20const 2375:skgpu::ganesh::PathInnerTriangulateOp::pushFanFillProgram\28GrTessellationShader::ProgramArgs\20const&\2c\20GrUserStencilSettings\20const*\29 2376:skgpu::ganesh::OpsTask::deleteOps\28\29 2377:skgpu::ganesh::OpsTask::OpChain::List::operator=\28skgpu::ganesh::OpsTask::OpChain::List&&\29 2378:skgpu::ganesh::Device::drawEdgeAAImageSet\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29::$_0::operator\28\29\28int\29\20const 2379:skgpu::ganesh::ClipStack::clipRect\28SkMatrix\20const&\2c\20SkRect\20const&\2c\20GrAA\2c\20SkClipOp\29 2380:skgpu::TClientMappedBufferManager::BufferFinishedMessage::BufferFinishedMessage\28skgpu::TClientMappedBufferManager::BufferFinishedMessage&&\29 2381:skgpu::Swizzle::Concat\28skgpu::Swizzle\20const&\2c\20skgpu::Swizzle\20const&\29 2382:skgpu::Swizzle::CToI\28char\29 2383:sk_sp::operator=\28sk_sp\20const&\29 2384:sk_sp::operator=\28sk_sp&&\29 2385:sk_sp::reset\28SkMipmap*\29 2386:sk_sp::~sk_sp\28\29 2387:sk_sp::~sk_sp\28\29 2388:sk_sp::~sk_sp\28\29 2389:shr 2390:shl 2391:set_result_path\28SkPath*\2c\20SkPath\20const&\2c\20SkPathFillType\29 2392:sect_with_horizontal\28SkPoint\20const*\2c\20float\29 2393:roughly_between\28double\2c\20double\2c\20double\29 2394:psh_calc_max_height 2395:ps_mask_set_bit 2396:ps_dimension_set_mask_bits 2397:ps_builder_check_points 2398:ps_builder_add_point 2399:png_colorspace_endpoints_match 2400:path_is_trivial\28SkPath\20const&\29::Trivializer::addTrivialContourPoint\28SkPoint\20const&\29 2401:output_char\28hb_buffer_t*\2c\20unsigned\20int\2c\20unsigned\20int\29 2402:operator!=\28SkRect\20const&\2c\20SkRect\20const&\29 2403:nearly_equal\28double\2c\20double\29 2404:mbrtowc 2405:mask_gamma_cache_mutex\28\29 2406:map_rect_perspective\28SkRect\20const&\2c\20float\20const*\29::$_0::operator\28\29\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\29\20const 2407:lock.9130 2408:lineMetrics_getEndIndex 2409:is_smooth_enough\28SkAnalyticEdge*\2c\20SkAnalyticEdge*\2c\20int\29 2410:is_ICC_signature_char 2411:interpolate_local\28float\2c\20int\2c\20int\2c\20int\2c\20int\2c\20float*\2c\20float*\2c\20float*\29 2412:int\20_hb_cmp_method>\28void\20const*\2c\20void\20const*\29 2413:init_file_lock 2414:image_filter_color_type\28SkImageInfo\29 2415:ilogbf 2416:hb_vector_t::alloc\28unsigned\20int\2c\20bool\29 2417:hb_vector_t\2c\20false>::fini\28\29 2418:hb_unicode_funcs_t::compose\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\29 2419:hb_syllabic_insert_dotted_circles\28hb_font_t*\2c\20hb_buffer_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20int\2c\20int\29 2420:hb_shape_full 2421:hb_serialize_context_t::~hb_serialize_context_t\28\29 2422:hb_serialize_context_t::hb_serialize_context_t\28void*\2c\20unsigned\20int\29 2423:hb_serialize_context_t::end_serialize\28\29 2424:hb_paint_funcs_t::push_scale\28void*\2c\20float\2c\20float\29 2425:hb_paint_extents_context_t::paint\28\29 2426:hb_ot_map_builder_t::disable_feature\28unsigned\20int\29 2427:hb_map_iter_t\2c\20OT::IntType\2c\20true>\20const>\2c\20hb_partial_t<2u\2c\20$_9\20const*\2c\20OT::ChainRuleSet\20const*>\2c\20\28hb_function_sortedness_t\290\2c\20\28void*\290>::__item__\28\29\20const 2428:hb_lazy_loader_t\2c\20hb_face_t\2c\2012u\2c\20OT::vmtx_accelerator_t>::get_stored\28\29\20const 2429:hb_lazy_loader_t\2c\20hb_face_t\2c\2038u\2c\20OT::sbix_accelerator_t>::do_destroy\28OT::sbix_accelerator_t*\29 2430:hb_lazy_loader_t\2c\20hb_face_t\2c\205u\2c\20OT::hmtx_accelerator_t>::do_destroy\28OT::hmtx_accelerator_t*\29 2431:hb_lazy_loader_t\2c\20hb_face_t\2c\2016u\2c\20OT::cff1_accelerator_t>::get_stored\28\29\20const 2432:hb_lazy_loader_t\2c\20hb_face_t\2c\2025u\2c\20OT::GSUB_accelerator_t>::do_destroy\28OT::GSUB_accelerator_t*\29 2433:hb_lazy_loader_t\2c\20hb_face_t\2c\2026u\2c\20OT::GPOS_accelerator_t>::get_stored\28\29\20const 2434:hb_lazy_loader_t\2c\20hb_face_t\2c\2034u\2c\20hb_blob_t>::get\28\29\20const 2435:hb_language_from_string 2436:hb_iter_t\2c\20hb_array_t>\2c\20$_7\20const&\2c\20\28hb_function_sortedness_t\291\2c\20\28void*\290>\2c\20OT::HBGlyphID16&>::operator*\28\29 2437:hb_hashmap_t::add\28unsigned\20int\20const&\29 2438:hb_hashmap_t::alloc\28unsigned\20int\29 2439:hb_font_t::parent_scale_position\28int*\2c\20int*\29 2440:hb_font_t::get_h_extents_with_fallback\28hb_font_extents_t*\29 2441:hb_buffer_t::output_glyph\28unsigned\20int\29 2442:hb_buffer_t::copy_glyph\28\29 2443:hb_buffer_t::clear_positions\28\29 2444:hb_bounds_t*\20hb_vector_t::push\28hb_bounds_t&&\29 2445:hb_blob_create_sub_blob 2446:hb_blob_create 2447:get_cache\28\29 2448:ftell 2449:ft_var_readpackedpoints 2450:ft_glyphslot_free_bitmap 2451:filter_to_gl_mag_filter\28SkFilterMode\29 2452:extractMaskSubset\28SkMask\20const&\2c\20SkIRect\2c\20int\2c\20int\29 2453:exp 2454:equal_ulps\28float\2c\20float\2c\20int\2c\20int\29 2455:edges_too_close\28SkAnalyticEdge*\2c\20SkAnalyticEdge*\2c\20int\29 2456:direct_blur_y\28void\20\28*\29\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29\2c\20int\2c\20int\2c\20unsigned\20short*\2c\20unsigned\20char\20const*\2c\20unsigned\20long\2c\20int\2c\20int\2c\20unsigned\20char*\2c\20unsigned\20long\29 2457:derivative_at_t\28double\20const*\2c\20double\29 2458:crop_rect_edge\28SkRect\20const&\2c\20int\2c\20int\2c\20int\2c\20int\2c\20float*\2c\20float*\2c\20float*\2c\20float*\2c\20float*\29 2459:cleanup_program\28GrGLGpu*\2c\20unsigned\20int*\2c\20unsigned\20int*\2c\20unsigned\20int*\29 2460:clean_paint_for_drawVertices\28SkPaint\29 2461:check_edge_against_rect\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkRect\20const&\2c\20SkPathFirstDirection\29 2462:checkOnCurve\28float\2c\20float\2c\20SkPoint\20const&\2c\20SkPoint\20const&\29 2463:char*\20sktext::gpu::BagOfBytes::allocateBytesFor\28int\29::'lambda'\28\29::operator\28\29\28\29\20const 2464:cff_strcpy 2465:cff_size_get_globals_funcs 2466:cff_index_forget_element 2467:cf2_stack_setReal 2468:cf2_hint_init 2469:cf2_doStems 2470:cf2_doFlex 2471:calculate_path_gap\28float\2c\20float\2c\20SkPath\20const&\29::$_4::operator\28\29\28float\29\20const 2472:byn$mgfn-shared$tt_cmap6_get_info 2473:byn$mgfn-shared$tt_cmap13_get_info 2474:byn$mgfn-shared$std::__2::__time_get_c_storage::__c\28\29\20const 2475:byn$mgfn-shared$std::__2::__time_get_c_storage::__c\28\29\20const 2476:byn$mgfn-shared$std::__2::__split_buffer&>::__split_buffer\28unsigned\20long\2c\20unsigned\20long\2c\20std::__2::allocator&\29 2477:byn$mgfn-shared$skia::textlayout::ParagraphBuilderImpl::ensureUTF16Mapping\28\29::$_0::operator\28\29\28\29\20const::'lambda'\28unsigned\20long\29::operator\28\29\28unsigned\20long\29\20const 2478:byn$mgfn-shared$SkSL::Tracer::line\28int\29 2479:byn$mgfn-shared$SkImage_Base::isGraphiteBacked\28\29\20const 2480:byn$mgfn-shared$OT::PaintSkewAroundCenter::sanitize\28hb_sanitize_context_t*\29\20const 2481:buffer_verify_error\28hb_buffer_t*\2c\20hb_font_t*\2c\20char\20const*\2c\20...\29 2482:bool\20hb_hashmap_t::has\28unsigned\20int\20const&\2c\20unsigned\20int**\29\20const 2483:bool\20hb_buffer_t::replace_glyphs\28unsigned\20int\2c\20unsigned\20int\2c\20OT::HBGlyphID16\20const*\29 2484:bool\20OT::match_input>\28OT::hb_ot_apply_context_t*\2c\20unsigned\20int\2c\20OT::IntType\20const*\2c\20bool\20\28*\29\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29\2c\20void\20const*\2c\20unsigned\20int*\2c\20unsigned\20int*\2c\20unsigned\20int*\29 2485:bool\20OT::OffsetTo\2c\20true>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 2486:bool\20OT::OffsetTo>\2c\20OT::IntType\2c\20false>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 2487:blur_y_rect\28void\20\28*\29\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29\2c\20int\2c\20skvx::Vec<8\2c\20unsigned\20short>\20\28*\29\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29\2c\20int\2c\20unsigned\20short*\2c\20unsigned\20char\20const*\2c\20unsigned\20long\2c\20int\2c\20int\2c\20unsigned\20char*\2c\20unsigned\20long\29 2488:blur_column\28void\20\28*\29\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29\2c\20skvx::Vec<8\2c\20unsigned\20short>\20\28*\29\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29\2c\20int\2c\20int\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20unsigned\20char\20const*\2c\20unsigned\20long\2c\20int\2c\20unsigned\20char*\2c\20unsigned\20long\29::$_0::operator\28\29\28unsigned\20char*\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\29\20const 2489:blitClippedMask\28SkBlitter*\2c\20SkMask\20const&\2c\20SkIRect\20const&\2c\20SkIRect\20const&\29 2490:approx_arc_length\28SkPoint\20const*\2c\20int\29 2491:antifillrect\28SkIRect\20const&\2c\20SkBlitter*\29 2492:afm_parser_read_int 2493:af_sort_pos 2494:af_latin_hints_compute_segments 2495:_hb_glyph_info_get_lig_num_comps\28hb_glyph_info_t\20const*\29 2496:__wasi_syscall_ret 2497:__uselocale 2498:__math_xflow 2499:__cxxabiv1::__base_class_type_info::search_below_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 2500:\28anonymous\20namespace\29::make_vertices_spec\28bool\2c\20bool\29 2501:\28anonymous\20namespace\29::TransformedMaskSubRun::~TransformedMaskSubRun\28\29 2502:\28anonymous\20namespace\29::TentPass::blurSegment\28int\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int*\2c\20int\29::'lambda'\28unsigned\20int\20const*\29::operator\28\29\28unsigned\20int\20const*\29\20const 2503:\28anonymous\20namespace\29::TentPass::blurSegment\28int\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int*\2c\20int\29::'lambda'\28skvx::Vec<4\2c\20unsigned\20int>\20const&\29::operator\28\29\28skvx::Vec<4\2c\20unsigned\20int>\20const&\29\20const 2504:\28anonymous\20namespace\29::SkBlurImageFilter::kernelBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\2c\20bool\29\20const 2505:\28anonymous\20namespace\29::RunIteratorQueue::insert\28SkShaper::RunIterator*\2c\20int\29 2506:\28anonymous\20namespace\29::RunIteratorQueue::CompareEntry\28\28anonymous\20namespace\29::RunIteratorQueue::Entry\20const&\2c\20\28anonymous\20namespace\29::RunIteratorQueue::Entry\20const&\29 2507:\28anonymous\20namespace\29::PathGeoBuilder::ensureSpace\28int\2c\20int\2c\20SkPoint\20const*\29 2508:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::getMangledName\28char\20const*\29 2509:\28anonymous\20namespace\29::GaussPass::blurSegment\28int\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int*\2c\20int\29::'lambda'\28skvx::Vec<4\2c\20unsigned\20int>\20const&\29::operator\28\29\28skvx::Vec<4\2c\20unsigned\20int>\20const&\29\20const 2510:\28anonymous\20namespace\29::FillRectOpImpl::vertexSpec\28\29\20const 2511:\28anonymous\20namespace\29::CacheImpl::removeInternal\28\28anonymous\20namespace\29::CacheImpl::Value*\29 2512:TT_Load_Context 2513:Skwasm::makeCurrent\28int\29 2514:SkipCode 2515:SkYUVAPixmaps::~SkYUVAPixmaps\28\29 2516:SkYUVAPixmaps::operator=\28SkYUVAPixmaps\20const&\29 2517:SkYUVAPixmaps::SkYUVAPixmaps\28\29 2518:SkWriter32::writeRRect\28SkRRect\20const&\29 2519:SkWriter32::writeMatrix\28SkMatrix\20const&\29 2520:SkWriter32::snapshotAsData\28\29\20const 2521:SkWBuffer::write\28void\20const*\2c\20unsigned\20long\29 2522:SkVertices::approximateSize\28\29\20const 2523:SkTextBlobBuilder::~SkTextBlobBuilder\28\29 2524:SkTextBlob::RunRecord::textBuffer\28\29\20const 2525:SkTextBlob::RunRecord::clusterBuffer\28\29\20const 2526:SkTextBlob::RunRecord::StorageSize\28unsigned\20int\2c\20unsigned\20int\2c\20SkTextBlob::GlyphPositioning\2c\20SkSafeMath*\29 2527:SkTextBlob::RunRecord::Next\28SkTextBlob::RunRecord\20const*\29 2528:SkTSpan::oppT\28double\29\20const 2529:SkTSpan::closestBoundedT\28SkDPoint\20const&\29\20const 2530:SkTSect::updateBounded\28SkTSpan*\2c\20SkTSpan*\2c\20SkTSpan*\29 2531:SkTSect::trim\28SkTSpan*\2c\20SkTSect*\29 2532:SkTSect::removeSpanRange\28SkTSpan*\2c\20SkTSpan*\29 2533:SkTSect::removeCoincident\28SkTSpan*\2c\20bool\29 2534:SkTSect::deleteEmptySpans\28\29 2535:SkTInternalLList::Entry>::remove\28SkLRUCache::Entry*\29 2536:SkTInternalLList>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Entry>::remove\28SkLRUCache>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Entry*\29 2537:SkTInternalLList>\2c\20GrGLGpu::ProgramCache::DescHash>::Entry>::remove\28SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::Entry*\29 2538:SkTDStorage::insert\28int\2c\20int\2c\20void\20const*\29 2539:SkTDStorage::insert\28int\29 2540:SkTDStorage::erase\28int\2c\20int\29 2541:SkTBlockList::pushItem\28\29 2542:SkSurfaces::RenderTarget\28GrRecordingContext*\2c\20skgpu::Budgeted\2c\20SkImageInfo\20const&\2c\20int\2c\20GrSurfaceOrigin\2c\20SkSurfaceProps\20const*\2c\20bool\2c\20bool\29 2543:SkSurfaces::Raster\28SkImageInfo\20const&\2c\20SkSurfaceProps\20const*\29 2544:SkStrokeRec::applyToPath\28SkPath*\2c\20SkPath\20const&\29\20const 2545:SkString::set\28char\20const*\29 2546:SkString::Rec::Make\28char\20const*\2c\20unsigned\20long\29 2547:SkStrikeSpec::MakeCanonicalized\28SkFont\20const&\2c\20SkPaint\20const*\29 2548:SkStrikeCache::GlobalStrikeCache\28\29 2549:SkStrike::glyph\28SkPackedGlyphID\29 2550:SkSpriteBlitter::~SkSpriteBlitter\28\29 2551:SkShadowTessellator::MakeSpot\28SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkPoint3\20const&\2c\20SkPoint3\20const&\2c\20float\2c\20bool\2c\20bool\29 2552:SkShaders::MatrixRec::apply\28SkStageRec\20const&\2c\20SkMatrix\20const&\29\20const 2553:SkShaderBase::appendRootStages\28SkStageRec\20const&\2c\20SkMatrix\20const&\29\20const 2554:SkScan::FillIRect\28SkIRect\20const&\2c\20SkRegion\20const*\2c\20SkBlitter*\29 2555:SkScalerContext_FreeType::emboldenIfNeeded\28FT_FaceRec_*\2c\20FT_GlyphSlotRec_*\2c\20unsigned\20short\29 2556:SkScaleToSides::AdjustRadii\28double\2c\20double\2c\20float*\2c\20float*\29 2557:SkSTArenaAlloc<3332ul>::SkSTArenaAlloc\28unsigned\20long\29 2558:SkSTArenaAlloc<1024ul>::SkSTArenaAlloc\28unsigned\20long\29 2559:SkSL::write_stringstream\28SkSL::StringStream\20const&\2c\20SkSL::OutputStream&\29 2560:SkSL::evaluate_3_way_intrinsic\28SkSL::Context\20const&\2c\20std::__2::array\20const&\2c\20SkSL::Type\20const&\2c\20double\20\28*\29\28double\2c\20double\2c\20double\29\29 2561:SkSL::eliminate_dead_local_variables\28SkSL::Context\20const&\2c\20SkSpan>>\2c\20SkSL::ProgramUsage*\29::DeadLocalVariableEliminator::~DeadLocalVariableEliminator\28\29 2562:SkSL::calculate_count\28double\2c\20double\2c\20double\2c\20bool\2c\20bool\29 2563:SkSL::append_rtadjust_fixup_to_vertex_main\28SkSL::Context\20const&\2c\20SkSL::FunctionDeclaration\20const&\2c\20SkSL::Block&\29::AppendRTAdjustFixupHelper::Pos\28\29\20const 2564:SkSL::\28anonymous\20namespace\29::ProgramUsageVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 2565:SkSL::VarDeclaration::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Modifiers\20const&\2c\20SkSL::Type\20const&\2c\20SkSL::Position\2c\20std::__2::basic_string_view>\2c\20SkSL::VariableStorage\2c\20std::__2::unique_ptr>\29 2566:SkSL::Type::priority\28\29\20const 2567:SkSL::Type::checkForOutOfRangeLiteral\28SkSL::Context\20const&\2c\20double\2c\20SkSL::Position\29\20const 2568:SkSL::Transform::EliminateDeadFunctions\28SkSL::Program&\29::$_0::operator\28\29\28std::__2::unique_ptr>\20const&\29\20const 2569:SkSL::SymbolTable::lookup\28SkSL::SymbolTable::SymbolKey\20const&\29\20const 2570:SkSL::SymbolTable::isType\28std::__2::basic_string_view>\29\20const 2571:SkSL::Swizzle::MaskString\28skia_private::STArray<4\2c\20signed\20char\2c\20true>\20const&\29 2572:SkSL::RP::SlotManager::mapVariableToSlots\28SkSL::Variable\20const&\2c\20SkSL::RP::SlotRange\29 2573:SkSL::RP::Program::appendStages\28SkRasterPipeline*\2c\20SkArenaAlloc*\2c\20SkSL::RP::Callbacks*\2c\20SkSpan\29\20const::$_0::operator\28\29\28\29\20const 2574:SkSL::RP::Program::appendCopy\28skia_private::TArray*\2c\20SkArenaAlloc*\2c\20std::byte*\2c\20SkSL::RP::ProgramOp\2c\20unsigned\20int\2c\20int\2c\20unsigned\20int\2c\20int\2c\20int\29\20const 2575:SkSL::RP::Generator::store\28SkSL::RP::LValue&\29 2576:SkSL::RP::Generator::popToSlotRangeUnmasked\28SkSL::RP::SlotRange\29 2577:SkSL::RP::Generator::emitTraceScope\28int\29 2578:SkSL::RP::DynamicIndexLValue::dynamicSlotRange\28\29 2579:SkSL::RP::Builder::ternary_op\28SkSL::RP::BuilderOp\2c\20int\29 2580:SkSL::RP::Builder::simplifyPopSlotsUnmasked\28SkSL::RP::SlotRange*\29 2581:SkSL::RP::Builder::push_zeros\28int\29 2582:SkSL::RP::Builder::push_loop_mask\28\29 2583:SkSL::RP::Builder::pad_stack\28int\29 2584:SkSL::RP::Builder::exchange_src\28\29 2585:SkSL::ProgramVisitor::visit\28SkSL::Program\20const&\29 2586:SkSL::ProgramUsage::remove\28SkSL::Statement\20const*\29 2587:SkSL::PrefixExpression::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Operator\2c\20std::__2::unique_ptr>\29 2588:SkSL::PipelineStage::PipelineStageCodeGenerator::typedVariable\28SkSL::Type\20const&\2c\20std::__2::basic_string_view>\29 2589:SkSL::PipelineStage::PipelineStageCodeGenerator::typeName\28SkSL::Type\20const&\29 2590:SkSL::Parser::parseInitializer\28SkSL::Position\2c\20std::__2::unique_ptr>*\29 2591:SkSL::Parser::nextRawToken\28\29 2592:SkSL::Parser::arrayType\28SkSL::Type\20const*\2c\20int\2c\20SkSL::Position\29 2593:SkSL::Parser::AutoSymbolTable::AutoSymbolTable\28SkSL::Parser*\2c\20std::__2::unique_ptr>*\2c\20bool\29 2594:SkSL::LiteralType::priority\28\29\20const 2595:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_sub\28SkSL::Context\20const&\2c\20std::__2::array\20const&\29 2596:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_dot\28std::__2::array\20const&\29 2597:SkSL::InterfaceBlock::arraySize\28\29\20const 2598:SkSL::IndexExpression::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 2599:SkSL::GLSLCodeGenerator::writeExtension\28std::__2::basic_string_view>\2c\20bool\29 2600:SkSL::FieldAccess::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20int\2c\20SkSL::FieldAccessOwnerKind\29 2601:SkSL::DoStatement::~DoStatement\28\29 2602:SkSL::ConstructorArray::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray\29 2603:SkSL::Compiler::convertProgram\28SkSL::ProgramKind\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20SkSL::ProgramSettings\20const&\29 2604:SkSL::Block::isEmpty\28\29\20const 2605:SkSL::Block::Make\28SkSL::Position\2c\20skia_private::STArray<2\2c\20std::__2::unique_ptr>\2c\20true>\2c\20SkSL::Block::Kind\2c\20std::__2::unique_ptr>\29 2606:SkSL::Block::MakeBlock\28SkSL::Position\2c\20skia_private::STArray<2\2c\20std::__2::unique_ptr>\2c\20true>\2c\20SkSL::Block::Kind\2c\20std::__2::unique_ptr>\29 2607:SkSL::Analysis::DetectVarDeclarationWithoutScope\28SkSL::Statement\20const&\2c\20SkSL::ErrorReporter*\29 2608:SkRuntimeEffectBuilder::writableUniformData\28\29 2609:SkRuntimeEffect::Result::~Result\28\29 2610:SkResourceCache::remove\28SkResourceCache::Rec*\29 2611:SkRegion::writeToMemory\28void*\29\20const 2612:SkRegion::getBoundaryPath\28SkPath*\29\20const 2613:SkRegion::SkRegion\28SkRegion\20const&\29 2614:SkRect::set\28SkPoint\20const&\2c\20SkPoint\20const&\29 2615:SkRect::offset\28SkPoint\20const&\29 2616:SkRect::center\28\29\20const 2617:SkRecords::Optional::~Optional\28\29 2618:SkRecords::NoOp*\20SkRecord::replace\28int\29 2619:SkReadBuffer::skip\28unsigned\20long\29 2620:SkRasterPipeline_ConstantCtx*\20SkArenaAlloc::make\28SkRasterPipeline_ConstantCtx\20const&\29 2621:SkRasterPipeline::tailPointer\28\29 2622:SkRasterPipeline::appendMatrix\28SkArenaAlloc*\2c\20SkMatrix\20const&\29 2623:SkRasterPipeline::addMemoryContext\28SkRasterPipeline_MemoryCtx*\2c\20int\2c\20bool\2c\20bool\29 2624:SkRasterClip::SkRasterClip\28SkIRect\20const&\29 2625:SkRRect::setOval\28SkRect\20const&\29 2626:SkRRect::initializeRect\28SkRect\20const&\29 2627:SkRRect::MakeRectXY\28SkRect\20const&\2c\20float\2c\20float\29 2628:SkRGBA4f<\28SkAlphaType\293>::operator==\28SkRGBA4f<\28SkAlphaType\293>\20const&\29\20const 2629:SkQuads::RootsReal\28double\2c\20double\2c\20double\2c\20double*\29 2630:SkPixelRef::~SkPixelRef\28\29 2631:SkPixelRef::SkPixelRef\28int\2c\20int\2c\20void*\2c\20unsigned\20long\29 2632:SkPictureRecord::~SkPictureRecord\28\29 2633:SkPictureRecord::recordRestoreOffsetPlaceholder\28\29 2634:SkPathStroker::quadStroke\28SkPoint\20const*\2c\20SkQuadConstruct*\29 2635:SkPathStroker::preJoinTo\28SkPoint\20const&\2c\20SkPoint*\2c\20SkPoint*\2c\20bool\29 2636:SkPathStroker::intersectRay\28SkQuadConstruct*\2c\20SkPathStroker::IntersectRayType\29\20const 2637:SkPathStroker::cubicStroke\28SkPoint\20const*\2c\20SkQuadConstruct*\29 2638:SkPathStroker::cubicPerpRay\28SkPoint\20const*\2c\20float\2c\20SkPoint*\2c\20SkPoint*\2c\20SkPoint*\29\20const 2639:SkPathStroker::conicStroke\28SkConic\20const&\2c\20SkQuadConstruct*\29 2640:SkPathRef::computeBounds\28\29\20const 2641:SkPathEdgeIter::SkPathEdgeIter\28SkPath\20const&\29 2642:SkPathBuilder::incReserve\28int\2c\20int\29 2643:SkPathBuilder::conicTo\28SkPoint\2c\20SkPoint\2c\20float\29 2644:SkPath::rewind\28\29 2645:SkPath::hasOnlyMoveTos\28\29\20const 2646:SkPath::getPoint\28int\29\20const 2647:SkPath::addRect\28SkRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\29 2648:SkPaint::computeFastBounds\28SkRect\20const&\2c\20SkRect*\29\20const 2649:SkPaint::canComputeFastBounds\28\29\20const 2650:SkPaint::SkPaint\28SkPaint&&\29 2651:SkOpSpanBase::mergeMatches\28SkOpSpanBase*\29 2652:SkOpSpanBase::addOpp\28SkOpSpanBase*\29 2653:SkOpSegment::updateOppWinding\28SkOpSpanBase\20const*\2c\20SkOpSpanBase\20const*\29\20const 2654:SkOpSegment::subDivide\28SkOpSpanBase\20const*\2c\20SkOpSpanBase\20const*\2c\20SkDCurve*\29\20const 2655:SkOpSegment::setUpWindings\28SkOpSpanBase*\2c\20SkOpSpanBase*\2c\20int*\2c\20int*\2c\20int*\2c\20int*\2c\20int*\2c\20int*\29 2656:SkOpSegment::nextChase\28SkOpSpanBase**\2c\20int*\2c\20SkOpSpan**\2c\20SkOpSpanBase**\29\20const 2657:SkOpSegment::markAndChaseDone\28SkOpSpanBase*\2c\20SkOpSpanBase*\2c\20SkOpSpanBase**\29 2658:SkOpSegment::isSimple\28SkOpSpanBase**\2c\20int*\29\20const 2659:SkOpSegment::init\28SkPoint*\2c\20float\2c\20SkOpContour*\2c\20SkPath::Verb\29 2660:SkOpEdgeBuilder::complete\28\29 2661:SkOpContour::appendSegment\28\29 2662:SkOpCoincidence::overlap\28SkOpPtT\20const*\2c\20SkOpPtT\20const*\2c\20SkOpPtT\20const*\2c\20SkOpPtT\20const*\2c\20double*\2c\20double*\29\20const 2663:SkOpCoincidence::add\28SkOpPtT*\2c\20SkOpPtT*\2c\20SkOpPtT*\2c\20SkOpPtT*\29 2664:SkOpCoincidence::addIfMissing\28SkOpPtT\20const*\2c\20SkOpPtT\20const*\2c\20double\2c\20double\2c\20SkOpSegment*\2c\20SkOpSegment*\2c\20bool*\29 2665:SkOpCoincidence::addExpanded\28\29 2666:SkOpCoincidence::addEndMovedSpans\28SkOpPtT\20const*\29 2667:SkOpCoincidence::TRange\28SkOpPtT\20const*\2c\20double\2c\20SkOpSegment\20const*\29 2668:SkOpAngle::set\28SkOpSpanBase*\2c\20SkOpSpanBase*\29 2669:SkOpAngle::loopCount\28\29\20const 2670:SkOpAngle::insert\28SkOpAngle*\29 2671:SkOpAngle*\20SkArenaAlloc::make\28\29 2672:SkNoPixelsDevice::ClipState::op\28SkClipOp\2c\20SkM44\20const&\2c\20SkRect\20const&\2c\20bool\2c\20bool\29 2673:SkMipmap*\20SkSafeRef\28SkMipmap*\29 2674:SkMeshSpecification::Varying::Varying\28SkMeshSpecification::Varying\20const&\29 2675:SkMatrixPriv::DifferentialAreaScale\28SkMatrix\20const&\2c\20SkPoint\20const&\29 2676:SkMatrix::setRotate\28float\29 2677:SkMatrix::mapVectors\28SkPoint*\2c\20SkPoint\20const*\2c\20int\29\20const 2678:SkMatrix::mapHomogeneousPoints\28SkPoint3*\2c\20SkPoint\20const*\2c\20int\29\20const 2679:SkMaskFilterBase::getFlattenableType\28\29\20const 2680:SkMallocPixelRef::MakeAllocate\28SkImageInfo\20const&\2c\20unsigned\20long\29 2681:SkM44::setConcat\28SkM44\20const&\2c\20SkM44\20const&\29::$_0::operator\28\29\28skvx::Vec<4\2c\20float>\29\20const 2682:SkM44::normalizePerspective\28\29 2683:SkLineClipper::IntersectLine\28SkPoint\20const*\2c\20SkRect\20const&\2c\20SkPoint*\29 2684:SkJSONWriter::scope\28\29\20const 2685:SkImage_Ganesh::makeView\28GrRecordingContext*\29\20const 2686:SkImage_Base::~SkImage_Base\28\29 2687:SkImage_Base::isGaneshBacked\28\29\20const 2688:SkImage_Base::SkImage_Base\28SkImageInfo\20const&\2c\20unsigned\20int\29 2689:SkImageInfo::validRowBytes\28unsigned\20long\29\20const 2690:SkImageInfo::MakeUnknown\28int\2c\20int\29 2691:SkImageGenerator::~SkImageGenerator\28\29 2692:SkImageFilters::Crop\28SkRect\20const&\2c\20SkTileMode\2c\20sk_sp\29 2693:SkImageFilter_Base::~SkImageFilter_Base\28\29 2694:SkImage::makeRasterImage\28GrDirectContext*\2c\20SkImage::CachingHint\29\20const 2695:SkIRect\20skif::Mapping::map\28SkIRect\20const&\2c\20SkMatrix\20const&\29 2696:SkHalfToFloat\28unsigned\20short\29 2697:SkGradientBaseShader::commonAsAGradient\28SkShaderBase::GradientInfo*\29\20const 2698:SkGradientBaseShader::ValidGradient\28SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20int\2c\20SkTileMode\2c\20SkGradientShader::Interpolation\20const&\29 2699:SkGradientBaseShader::SkGradientBaseShader\28SkGradientBaseShader::Descriptor\20const&\2c\20SkMatrix\20const&\29 2700:SkGradientBaseShader::MakeDegenerateGradient\28SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20float\20const*\2c\20int\2c\20sk_sp\2c\20SkTileMode\29 2701:SkGlyph::setPath\28SkArenaAlloc*\2c\20SkPath\20const*\2c\20bool\29 2702:SkGetPolygonWinding\28SkPoint\20const*\2c\20int\29 2703:SkFontMgr::RefEmpty\28\29 2704:SkFont::setTypeface\28sk_sp\29 2705:SkEmptyFontMgr::onMakeFromStreamIndex\28std::__2::unique_ptr>\2c\20int\29\20const 2706:SkEdgeBuilder::~SkEdgeBuilder\28\29 2707:SkDynamicMemoryWStream::~SkDynamicMemoryWStream\28\29 2708:SkDrawable::draw\28SkCanvas*\2c\20SkMatrix\20const*\29 2709:SkDrawBase::drawPathCoverage\28SkPath\20const&\2c\20SkPaint\20const&\2c\20SkBlitter*\29\20const 2710:SkDevice::~SkDevice\28\29 2711:SkDevice::setLocalToDevice\28SkM44\20const&\29 2712:SkDevice::scalerContextFlags\28\29\20const 2713:SkDevice::accessPixels\28SkPixmap*\29 2714:SkData::MakeWithProc\28void\20const*\2c\20unsigned\20long\2c\20void\20\28*\29\28void\20const*\2c\20void*\29\2c\20void*\29 2715:SkDQuad::dxdyAtT\28double\29\20const 2716:SkDQuad::RootsReal\28double\2c\20double\2c\20double\2c\20double*\29 2717:SkDPoint::distance\28SkDPoint\20const&\29\20const 2718:SkDLine::NearPointV\28SkDPoint\20const&\2c\20double\2c\20double\2c\20double\29 2719:SkDLine::NearPointH\28SkDPoint\20const&\2c\20double\2c\20double\2c\20double\29 2720:SkDCubic::dxdyAtT\28double\29\20const 2721:SkDCubic::RootsValidT\28double\2c\20double\2c\20double\2c\20double\2c\20double*\29 2722:SkDConic::dxdyAtT\28double\29\20const 2723:SkConicalGradient::~SkConicalGradient\28\29 2724:SkComputeRadialSteps\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20float*\2c\20float*\2c\20int*\29 2725:SkColorSpace::serialize\28\29\20const 2726:SkColorFilters::Compose\28sk_sp\20const&\2c\20sk_sp\29 2727:SkColorFilterPriv::MakeGaussian\28\29 2728:SkColorFilter::filterColor4f\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkColorSpace*\2c\20SkColorSpace*\29\20const 2729:SkColorConverter::SkColorConverter\28unsigned\20int\20const*\2c\20int\29 2730:SkCoincidentSpans::correctOneEnd\28SkOpPtT\20const*\20\28SkCoincidentSpans::*\29\28\29\20const\2c\20void\20\28SkCoincidentSpans::*\29\28SkOpPtT\20const*\29\29 2731:SkClosestRecord::findEnd\28SkTSpan\20const*\2c\20SkTSpan\20const*\2c\20int\2c\20int\29 2732:SkChopCubicAt\28SkPoint\20const*\2c\20SkPoint*\2c\20float\20const*\2c\20int\29 2733:SkChopCubicAtYExtrema\28SkPoint\20const*\2c\20SkPoint*\29 2734:SkCanvas::restore\28\29 2735:SkCanvas::init\28sk_sp\29 2736:SkCanvas::drawOval\28SkRect\20const&\2c\20SkPaint\20const&\29 2737:SkCanvas::drawImageRect\28SkImage\20const*\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 2738:SkCanvas::concat\28SkM44\20const&\29 2739:SkCanvas::clipRect\28SkRect\20const&\2c\20SkClipOp\2c\20bool\29 2740:SkCachedData::detachFromCacheAndUnref\28\29\20const 2741:SkCachedData::attachToCacheAndRef\28\29\20const 2742:SkBitmap::pixelRefOrigin\28\29\20const 2743:SkBitmap::notifyPixelsChanged\28\29\20const 2744:SkBitmap::extractSubset\28SkBitmap*\2c\20SkIRect\20const&\29\20const 2745:SkBinaryWriteBuffer::writeByteArray\28void\20const*\2c\20unsigned\20long\29 2746:SkBaseShadowTessellator::~SkBaseShadowTessellator\28\29 2747:SkAutoPixmapStorage::tryAlloc\28SkImageInfo\20const&\29 2748:SkAutoDeviceTransformRestore::~SkAutoDeviceTransformRestore\28\29 2749:SkAutoDeviceTransformRestore::SkAutoDeviceTransformRestore\28SkDevice*\2c\20SkMatrix\20const&\29 2750:SkAutoBlitterChoose::SkAutoBlitterChoose\28SkDrawBase\20const&\2c\20SkMatrix\20const*\2c\20SkPaint\20const&\2c\20bool\29 2751:SkArenaAllocWithReset::SkArenaAllocWithReset\28char*\2c\20unsigned\20long\2c\20unsigned\20long\29 2752:SkAAClip::setPath\28SkPath\20const&\2c\20SkIRect\20const&\2c\20bool\29 2753:SkAAClip::quickContains\28SkIRect\20const&\29\20const 2754:SkAAClip::op\28SkAAClip\20const&\2c\20SkClipOp\29 2755:SkAAClip::Builder::flushRowH\28SkAAClip::Builder::Row*\29 2756:SkAAClip::Builder::Blitter::checkForYGap\28int\29 2757:RunBasedAdditiveBlitter::~RunBasedAdditiveBlitter\28\29 2758:OT::post::accelerator_t::find_glyph_name\28unsigned\20int\29\20const 2759:OT::hb_ot_layout_lookup_accelerator_t::apply\28OT::hb_ot_apply_context_t*\2c\20unsigned\20int\2c\20bool\29\20const 2760:OT::hb_ot_apply_context_t::skipping_iterator_t::match\28hb_glyph_info_t&\29 2761:OT::hb_ot_apply_context_t::_set_glyph_class\28unsigned\20int\2c\20unsigned\20int\2c\20bool\2c\20bool\29 2762:OT::glyf_accelerator_t::glyph_for_gid\28unsigned\20int\2c\20bool\29\20const 2763:OT::cff1::accelerator_templ_t>::std_code_to_glyph\28unsigned\20int\29\20const 2764:OT::apply_lookup\28OT::hb_ot_apply_context_t*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int\2c\20OT::LookupRecord\20const*\2c\20unsigned\20int\29 2765:OT::VariationStore::create_cache\28\29\20const 2766:OT::VarRegionList::evaluate\28unsigned\20int\2c\20int\20const*\2c\20unsigned\20int\2c\20float*\29\20const 2767:OT::Lookup::get_props\28\29\20const 2768:OT::Layout::GSUB_impl::SubstLookup*\20hb_serialize_context_t::copy\28\29\20const 2769:OT::Layout::GPOS_impl::ValueFormat::get_device\28OT::IntType\20const*\2c\20bool*\2c\20void\20const*\2c\20hb_sanitize_context_t&\29 2770:OT::Layout::GPOS_impl::Anchor::get_anchor\28OT::hb_ot_apply_context_t*\2c\20unsigned\20int\2c\20float*\2c\20float*\29\20const 2771:OT::IntType*\20hb_serialize_context_t::extend_min>\28OT::IntType*\29 2772:OT::GSUBGPOS::get_script\28unsigned\20int\29\20const 2773:OT::GSUBGPOS::get_feature_tag\28unsigned\20int\29\20const 2774:OT::GSUBGPOS::find_script_index\28unsigned\20int\2c\20unsigned\20int*\29\20const 2775:OT::ArrayOf>*\20hb_serialize_context_t::extend_size>>\28OT::ArrayOf>*\2c\20unsigned\20long\2c\20bool\29 2776:Move_Zp2_Point 2777:Modify_CVT_Check 2778:GrYUVATextureProxies::operator=\28GrYUVATextureProxies&&\29 2779:GrYUVATextureProxies::GrYUVATextureProxies\28\29 2780:GrXPFactory::FromBlendMode\28SkBlendMode\29 2781:GrWindowRectangles::operator=\28GrWindowRectangles\20const&\29 2782:GrTriangulator::~GrTriangulator\28\29 2783:GrTriangulator::simplify\28GrTriangulator::VertexList*\2c\20GrTriangulator::Comparator\20const&\29 2784:GrTriangulator::setTop\28GrTriangulator::Edge*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Comparator\20const&\29\20const 2785:GrTriangulator::mergeCollinearEdges\28GrTriangulator::Edge*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Comparator\20const&\29\20const 2786:GrTriangulator::mergeCoincidentVertices\28GrTriangulator::VertexList*\2c\20GrTriangulator::Comparator\20const&\29\20const 2787:GrTriangulator::emitTriangle\28GrTriangulator::Vertex*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::Vertex*\2c\20int\2c\20skgpu::VertexWriter\29\20const 2788:GrTriangulator::allocateEdge\28GrTriangulator::Vertex*\2c\20GrTriangulator::Vertex*\2c\20int\2c\20GrTriangulator::EdgeType\29 2789:GrTriangulator::FindEnclosingEdges\28GrTriangulator::Vertex\20const&\2c\20GrTriangulator::EdgeList\20const&\2c\20GrTriangulator::Edge**\2c\20GrTriangulator::Edge**\29 2790:GrTriangulator::Edge::dist\28SkPoint\20const&\29\20const 2791:GrTriangulator::Edge::Edge\28GrTriangulator::Vertex*\2c\20GrTriangulator::Vertex*\2c\20int\2c\20GrTriangulator::EdgeType\29 2792:GrThreadSafeCache::remove\28skgpu::UniqueKey\20const&\29 2793:GrThreadSafeCache::internalFind\28skgpu::UniqueKey\20const&\29 2794:GrThreadSafeCache::internalAdd\28skgpu::UniqueKey\20const&\2c\20GrSurfaceProxyView\20const&\29 2795:GrTextureRenderTargetProxy::~GrTextureRenderTargetProxy\28\29 2796:GrTextureEffect::Sampling::Sampling\28GrSurfaceProxy\20const&\2c\20GrSamplerState\2c\20SkRect\20const&\2c\20SkRect\20const*\2c\20float\20const*\2c\20bool\2c\20GrCaps\20const&\2c\20SkPoint\29 2797:GrTessellationShader::MakePipeline\28GrTessellationShader::ProgramArgs\20const&\2c\20GrAAType\2c\20GrAppliedClip&&\2c\20GrProcessorSet&&\29 2798:GrSurfaceProxyView::operator!=\28GrSurfaceProxyView\20const&\29\20const 2799:GrSurfaceProxyView::concatSwizzle\28skgpu::Swizzle\29 2800:GrSurfaceProxy::~GrSurfaceProxy\28\29 2801:GrSurfaceProxy::isFunctionallyExact\28\29\20const 2802:GrSurfaceProxy::gpuMemorySize\28\29\20const 2803:GrSurfaceProxy::createSurfaceImpl\28GrResourceProvider*\2c\20int\2c\20skgpu::Renderable\2c\20skgpu::Mipmapped\29\20const 2804:GrSurfaceProxy::Copy\28GrRecordingContext*\2c\20sk_sp\2c\20GrSurfaceOrigin\2c\20skgpu::Mipmapped\2c\20SkIRect\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20std::__2::basic_string_view>\2c\20GrSurfaceProxy::RectsMustMatch\2c\20sk_sp*\29 2805:GrSurfaceProxy::Copy\28GrRecordingContext*\2c\20sk_sp\2c\20GrSurfaceOrigin\2c\20skgpu::Mipmapped\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20std::__2::basic_string_view>\2c\20sk_sp*\29 2806:GrStyledShape::hasUnstyledKey\28\29\20const 2807:GrStyledShape::GrStyledShape\28GrStyledShape\20const&\2c\20GrStyle::Apply\2c\20float\29 2808:GrStyle::GrStyle\28GrStyle\20const&\29 2809:GrSkSLFP::setInput\28std::__2::unique_ptr>\29 2810:GrSimpleMeshDrawOpHelper::CreatePipeline\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20skgpu::Swizzle\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrProcessorSet&&\2c\20GrPipeline::InputFlags\29 2811:GrSimpleMesh::set\28sk_sp\2c\20int\2c\20int\29 2812:GrShape::simplifyRect\28SkRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\2c\20unsigned\20int\29 2813:GrShape::simplifyRRect\28SkRRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\2c\20unsigned\20int\29 2814:GrShape::simplifyPoint\28SkPoint\20const&\2c\20unsigned\20int\29 2815:GrShape::simplifyLine\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20unsigned\20int\29 2816:GrShape::setInverted\28bool\29 2817:GrSWMaskHelper::init\28SkIRect\20const&\29 2818:GrSWMaskHelper::GrSWMaskHelper\28SkAutoPixmapStorage*\29 2819:GrResourceProvider::refNonAAQuadIndexBuffer\28\29 2820:GrRenderTask::addTarget\28GrDrawingManager*\2c\20sk_sp\29 2821:GrRenderTarget::~GrRenderTarget\28\29 2822:GrQuadUtils::WillUseHairline\28GrQuad\20const&\2c\20GrAAType\2c\20GrQuadAAFlags\29 2823:GrQuadBuffer<\28anonymous\20namespace\29::FillRectOpImpl::ColorAndAA>::unpackQuad\28GrQuad::Type\2c\20float\20const*\2c\20GrQuad*\29\20const 2824:GrQuadBuffer<\28anonymous\20namespace\29::FillRectOpImpl::ColorAndAA>::MetadataIter::next\28\29 2825:GrProxyProvider::processInvalidUniqueKey\28skgpu::UniqueKey\20const&\2c\20GrTextureProxy*\2c\20GrProxyProvider::InvalidateGPUResource\29 2826:GrProxyProvider::createMippedProxyFromBitmap\28SkBitmap\20const&\2c\20skgpu::Budgeted\29::$_0::~$_0\28\29 2827:GrProgramInfo::GrProgramInfo\28GrCaps\20const&\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrPipeline\20const*\2c\20GrUserStencilSettings\20const*\2c\20GrGeometryProcessor\20const*\2c\20GrPrimitiveType\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 2828:GrPipeline::visitProxies\28std::__2::function\20const&\29\20const 2829:GrPipeline::getFragmentProcessor\28int\29\20const 2830:GrPathUtils::scaleToleranceToSrc\28float\2c\20SkMatrix\20const&\2c\20SkRect\20const&\29 2831:GrPathUtils::cubicPointCount\28SkPoint\20const*\2c\20float\29 2832:GrPaint::GrPaint\28GrPaint\20const&\29 2833:GrOpsRenderPass::prepareToDraw\28\29 2834:GrOpFlushState::~GrOpFlushState\28\29 2835:GrOpFlushState::drawInstanced\28int\2c\20int\2c\20int\2c\20int\29 2836:GrOpFlushState::bindTextures\28GrGeometryProcessor\20const&\2c\20GrSurfaceProxy\20const&\2c\20GrPipeline\20const&\29 2837:GrOp::uniqueID\28\29\20const 2838:GrNativeRect::MakeIRectRelativeTo\28GrSurfaceOrigin\2c\20int\2c\20SkIRect\29 2839:GrMeshDrawOp::onPrePrepareDraws\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 2840:GrMapRectPoints\28SkRect\20const&\2c\20SkRect\20const&\2c\20SkPoint\20const*\2c\20SkPoint*\2c\20int\29 2841:GrMakeKeyFromImageID\28skgpu::UniqueKey*\2c\20unsigned\20int\2c\20SkIRect\20const&\29 2842:GrGradientShader::MakeGradientFP\28SkGradientBaseShader\20const&\2c\20GrFPArgs\20const&\2c\20SkShaders::MatrixRec\20const&\2c\20std::__2::unique_ptr>\2c\20SkMatrix\20const*\29 2843:GrGpuResource::setUniqueKey\28skgpu::UniqueKey\20const&\29 2844:GrGpuResource::registerWithCache\28skgpu::Budgeted\29 2845:GrGpu::writePixels\28GrSurface*\2c\20SkIRect\2c\20GrColorType\2c\20GrColorType\2c\20GrMipLevel\20const*\2c\20int\2c\20bool\29 2846:GrGpu::submitToGpu\28GrSyncCpu\29 2847:GrGLTextureRenderTarget::~GrGLTextureRenderTarget\28\29 2848:GrGLTexture::onSetLabel\28\29 2849:GrGLTexture::onAbandon\28\29 2850:GrGLTexture::backendFormat\28\29\20const 2851:GrGLSLVaryingHandler::appendDecls\28SkTBlockList\20const&\2c\20SkString*\29\20const 2852:GrGLSLShaderBuilder::newTmpVarName\28char\20const*\29 2853:GrGLSLShaderBuilder::definitionAppend\28char\20const*\29 2854:GrGLSLProgramBuilder::invokeFP\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl\20const&\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\29\20const 2855:GrGLSLProgramBuilder::advanceStage\28\29 2856:GrGLSLFragmentShaderBuilder::dstColor\28\29 2857:GrGLRenderTarget::bindInternal\28unsigned\20int\2c\20bool\29 2858:GrGLGpu::unbindXferBuffer\28GrGpuBufferType\29 2859:GrGLGpu::resolveRenderFBOs\28GrGLRenderTarget*\2c\20SkIRect\20const&\2c\20GrGLRenderTarget::ResolveDirection\2c\20bool\29 2860:GrGLGpu::flushBlendAndColorWrite\28skgpu::BlendInfo\20const&\2c\20skgpu::Swizzle\20const&\29 2861:GrGLGpu::currentProgram\28\29 2862:GrGLGpu::SamplerObjectCache::Sampler::~Sampler\28\29 2863:GrGLGpu::HWVertexArrayState::setVertexArrayID\28GrGLGpu*\2c\20unsigned\20int\29 2864:GrGLGetVersionFromString\28char\20const*\29 2865:GrGLFunction::GrGLFunction\28void\20\28*\29\28unsigned\20int\29\29::'lambda'\28void\20const*\2c\20unsigned\20int\29::__invoke\28void\20const*\2c\20unsigned\20int\29 2866:GrGLFunction::GrGLFunction\28unsigned\20char\20const*\20\28*\29\28unsigned\20int\29\29::'lambda'\28void\20const*\2c\20unsigned\20int\29::__invoke\28void\20const*\2c\20unsigned\20int\29 2867:GrGLFinishCallbacks::callAll\28bool\29 2868:GrGLCheckLinkStatus\28GrGLGpu\20const*\2c\20unsigned\20int\2c\20bool\2c\20skgpu::ShaderErrorHandler*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const**\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\29 2869:GrGLAttribArrayState::set\28GrGLGpu*\2c\20int\2c\20GrBuffer\20const*\2c\20GrVertexAttribType\2c\20SkSLType\2c\20int\2c\20unsigned\20long\2c\20int\29 2870:GrFragmentProcessors::Make\28SkBlenderBase\20const*\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20GrFPArgs\20const&\29 2871:GrFragmentProcessor::isEqual\28GrFragmentProcessor\20const&\29\20const 2872:GrFragmentProcessor::Rect\28std::__2::unique_ptr>\2c\20GrClipEdgeType\2c\20SkRect\29 2873:GrFragmentProcessor::ModulateRGBA\28std::__2::unique_ptr>\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\29 2874:GrDstProxyView::setProxyView\28GrSurfaceProxyView\29 2875:GrDrawingManager::getPathRenderer\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\2c\20bool\2c\20skgpu::ganesh::PathRendererChain::DrawType\2c\20skgpu::ganesh::PathRenderer::StencilSupport*\29 2876:GrDrawingManager::getLastRenderTask\28GrSurfaceProxy\20const*\29\20const 2877:GrDrawOpAtlas::updatePlot\28GrDeferredUploadTarget*\2c\20skgpu::AtlasLocator*\2c\20skgpu::Plot*\29::'lambda'\28std::__2::function&\29::\28'lambda'\28std::__2::function&\29\20const&\29 2878:GrDrawOpAtlas::processEvictionAndResetRects\28skgpu::Plot*\29 2879:GrDeferredProxyUploader::~GrDeferredProxyUploader\28\29 2880:GrDeferredProxyUploader::wait\28\29 2881:GrCpuBuffer::Make\28unsigned\20long\29 2882:GrContext_Base::~GrContext_Base\28\29 2883:GrColorSpaceXform::Make\28SkColorSpace*\2c\20SkAlphaType\2c\20SkColorSpace*\2c\20SkAlphaType\29 2884:GrColorInfo::operator=\28GrColorInfo\20const&\29 2885:GrClip::IsPixelAligned\28SkRect\20const&\29 2886:GrClip::GetPixelIBounds\28SkRect\20const&\2c\20GrAA\2c\20GrClip::BoundsType\29::'lambda0'\28float\29::operator\28\29\28float\29\20const 2887:GrClip::GetPixelIBounds\28SkRect\20const&\2c\20GrAA\2c\20GrClip::BoundsType\29::'lambda'\28float\29::operator\28\29\28float\29\20const 2888:GrCaps::supportedReadPixelsColorType\28GrColorType\2c\20GrBackendFormat\20const&\2c\20GrColorType\29\20const 2889:GrCaps::getFallbackColorTypeAndFormat\28GrColorType\2c\20int\29\20const 2890:GrCaps::areColorTypeAndFormatCompatible\28GrColorType\2c\20GrBackendFormat\20const&\29\20const 2891:GrBufferAllocPool::~GrBufferAllocPool\28\29.1 2892:GrBufferAllocPool::makeSpace\28unsigned\20long\2c\20unsigned\20long\2c\20sk_sp*\2c\20unsigned\20long*\29 2893:GrBufferAllocPool::GrBufferAllocPool\28GrGpu*\2c\20GrGpuBufferType\2c\20sk_sp\29 2894:GrBlurUtils::GaussianBlur\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20GrColorType\2c\20SkAlphaType\2c\20sk_sp\2c\20SkIRect\2c\20SkIRect\2c\20float\2c\20float\2c\20SkTileMode\2c\20SkBackingFit\29 2895:GrBlurUtils::DrawShapeWithMaskFilter\28GrRecordingContext*\2c\20skgpu::ganesh::SurfaceDrawContext*\2c\20GrClip\20const*\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\2c\20GrStyledShape\20const&\29 2896:GrBaseContextPriv::getShaderErrorHandler\28\29\20const 2897:GrBackendTexture::GrBackendTexture\28GrBackendTexture\20const&\29 2898:GrBackendRenderTarget::getBackendFormat\28\29\20const 2899:GrAAConvexTessellator::createOuterRing\28GrAAConvexTessellator::Ring\20const&\2c\20float\2c\20float\2c\20GrAAConvexTessellator::Ring*\29 2900:GrAAConvexTessellator::createInsetRings\28GrAAConvexTessellator::Ring&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20GrAAConvexTessellator::Ring**\29 2901:GrAAConvexTessellator::Ring::init\28GrAAConvexTessellator\20const&\29 2902:FwDCubicEvaluator::FwDCubicEvaluator\28SkPoint\20const*\29 2903:FT_Stream_ReadAt 2904:FT_Set_Charmap 2905:FT_New_Size 2906:FT_Load_Sfnt_Table 2907:FT_List_Find 2908:FT_GlyphLoader_Add 2909:FT_Get_Next_Char 2910:FT_Get_Color_Glyph_Layer 2911:FT_Done_Face 2912:FT_CMap_New 2913:Current_Ratio 2914:Compute_Funcs 2915:CircleOp::Circle&\20skia_private::TArray::emplace_back\28CircleOp::Circle&&\29 2916:CFF::path_procs_t\2c\20cff2_path_param_t>::curve2\28CFF::cff2_cs_interp_env_t&\2c\20cff2_path_param_t&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\29 2917:CFF::path_procs_t\2c\20cff2_extents_param_t>::curve2\28CFF::cff2_cs_interp_env_t&\2c\20cff2_extents_param_t&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\29 2918:CFF::path_procs_t::curve2\28CFF::cff1_cs_interp_env_t&\2c\20cff1_path_param_t&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\29 2919:CFF::path_procs_t::curve2\28CFF::cff1_cs_interp_env_t&\2c\20cff1_extents_param_t&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\2c\20CFF::point_t\20const&\29 2920:CFF::parsed_values_t::operator=\28CFF::parsed_values_t&&\29 2921:CFF::cs_interp_env_t>>::return_from_subr\28\29 2922:CFF::cs_interp_env_t>>::in_error\28\29\20const 2923:CFF::cs_interp_env_t>>::call_subr\28CFF::biased_subrs_t>>\20const&\2c\20CFF::cs_type_t\29 2924:CFF::cs_interp_env_t>>::call_subr\28CFF::biased_subrs_t>>\20const&\2c\20CFF::cs_type_t\29 2925:CFF::byte_str_ref_t::operator\5b\5d\28int\29 2926:CFF::arg_stack_t::push_fixed_from_substr\28CFF::byte_str_ref_t&\29 2927:CFF::CFFIndex>::sanitize\28hb_sanitize_context_t*\29\20const 2928:CFF::CFFIndex>::operator\5b\5d\28unsigned\20int\29\20const 2929:CFF::CFFIndex>::offset_at\28unsigned\20int\29\20const 2930:AlmostLessOrEqualUlps\28float\2c\20float\29 2931:AlmostEqualUlps_Pin\28double\2c\20double\29 2932:ActiveEdge::intersect\28ActiveEdge\20const*\29 2933:AAT::Lookup::get_value\28unsigned\20int\2c\20unsigned\20int\29\20const 2934:AAT::ClassTable>::get_class\28unsigned\20int\2c\20unsigned\20int\29\20const 2935:zero_length\28SkPoint\20const&\2c\20float\29 2936:wcrtomb 2937:void\20std::__2::vector>::__construct_at_end\28unsigned\20long*\2c\20unsigned\20long*\2c\20unsigned\20long\29 2938:void\20std::__2::vector>::__construct_at_end\28skia::textlayout::FontFeature*\2c\20skia::textlayout::FontFeature*\2c\20unsigned\20long\29 2939:void\20std::__2::vector>::__construct_at_end\28SkString*\2c\20SkString*\2c\20unsigned\20long\29 2940:void\20std::__2::__introsort\28skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::finish\28skia::textlayout::Block\20const&\2c\20float\2c\20float&\29::$_0&\2c\20std::__2::iterator_traits::difference_type\29 2941:void\20std::__2::__introsort\28SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::Transform::\28anonymous\20namespace\29::BuiltinVariableScanner::sortNewElements\28\29::'lambda'\28SkSL::ProgramElement\20const*\2c\20SkSL::ProgramElement\20const*\29&\2c\20std::__2::iterator_traits::difference_type\29 2942:void\20std::__2::__introsort\28SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::Transform::FindAndDeclareBuiltinFunctions\28SkSL::Program&\29::$_0&\2c\20std::__2::iterator_traits::difference_type\29 2943:void\20std::__2::__inplace_merge\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::'lambda'\28\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\29&\2c\20std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>\28std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>\2c\20std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>\2c\20std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::'lambda'\28\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\29&\2c\20std::__2::iterator_traits\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>::difference_type\2c\20std::__2::iterator_traits\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>::difference_type\2c\20std::__2::iterator_traits\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>::value_type*\2c\20long\29 2944:void\20skgpu::VertexWriter::writeQuad\28GrQuad\20const&\29 2945:void\20merge_sort<&sweep_lt_vert\28SkPoint\20const&\2c\20SkPoint\20const&\29>\28GrTriangulator::VertexList*\29 2946:void\20merge_sort<&sweep_lt_horiz\28SkPoint\20const&\2c\20SkPoint\20const&\29>\28GrTriangulator::VertexList*\29 2947:void\20hb_stable_sort\2c\20unsigned\20int>\28OT::HBGlyphID16*\2c\20unsigned\20int\2c\20int\20\28*\29\28OT::IntType\20const*\2c\20OT::IntType\20const*\29\2c\20unsigned\20int*\29 2948:void\20SkSafeUnref\28sktext::gpu::TextStrike*\29 2949:void\20SkSafeUnref\28SkMeshSpecification*\29 2950:void\20SkSafeUnref\28SkMeshPriv::VB\20const*\29 2951:void\20SkSafeUnref\28GrTexture*\29\20\28.4382\29 2952:void\20SkSafeUnref\28GrCpuBuffer*\29 2953:vfprintf 2954:valid_args\28SkImageInfo\20const&\2c\20unsigned\20long\2c\20unsigned\20long*\29 2955:uprv_malloc_skia 2956:update_offset_to_base\28char\20const*\2c\20long\29 2957:unsigned\20long\20std::__2::__str_find\5babi:v160004\5d\2c\204294967295ul>\28char\20const*\2c\20unsigned\20long\2c\20char\20const*\2c\20unsigned\20long\2c\20unsigned\20long\29 2958:unsigned\20long\20const&\20std::__2::min\5babi:v160004\5d\28unsigned\20long\20const&\2c\20unsigned\20long\20const&\29 2959:unsigned\20int\20std::__2::__sort5_wrap_policy\5babi:v160004\5d\28skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::finish\28skia::textlayout::Block\20const&\2c\20float\2c\20float&\29::$_0&\29 2960:unsigned\20int\20std::__2::__sort5_wrap_policy\5babi:v160004\5d\28SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::Transform::\28anonymous\20namespace\29::BuiltinVariableScanner::sortNewElements\28\29::'lambda'\28SkSL::ProgramElement\20const*\2c\20SkSL::ProgramElement\20const*\29&\29 2961:unsigned\20int\20std::__2::__sort5_wrap_policy\5babi:v160004\5d\28SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::Transform::FindAndDeclareBuiltinFunctions\28SkSL::Program&\29::$_0&\29 2962:unsigned\20int\20std::__2::__sort4\5babi:v160004\5d\28skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::finish\28skia::textlayout::Block\20const&\2c\20float\2c\20float&\29::$_0&\29 2963:unsigned\20int\20std::__2::__sort4\5babi:v160004\5d\28SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::Transform::\28anonymous\20namespace\29::BuiltinVariableScanner::sortNewElements\28\29::'lambda'\28SkSL::ProgramElement\20const*\2c\20SkSL::ProgramElement\20const*\29&\29 2964:unsigned\20int\20std::__2::__sort4\5babi:v160004\5d\28SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::Transform::FindAndDeclareBuiltinFunctions\28SkSL::Program&\29::$_0&\29 2965:ubidi_getRuns_skia 2966:u_charMirror_skia 2967:tt_size_reset 2968:tt_sbit_decoder_load_metrics 2969:tt_glyphzone_done 2970:tt_face_get_location 2971:tt_face_find_bdf_prop 2972:tt_delta_interpolate 2973:tt_cmap14_find_variant 2974:tt_cmap14_char_map_nondef_binary 2975:tt_cmap14_char_map_def_binary 2976:tolower 2977:t1_cmap_unicode_done 2978:subdivide_cubic_to\28SkPath*\2c\20SkPoint\20const*\2c\20int\29 2979:strtox 2980:strtoull_l 2981:std::logic_error::~logic_error\28\29.1 2982:std::__2::vector>::vector\28std::__2::vector>\20const&\29 2983:std::__2::vector>::__destroy_vector::operator\28\29\5babi:v160004\5d\28\29 2984:std::__2::vector>\2c\20std::__2::allocator>>>::erase\28std::__2::__wrap_iter>\20const*>\2c\20std::__2::__wrap_iter>\20const*>\29 2985:std::__2::vector>::__alloc\5babi:v160004\5d\28\29 2986:std::__2::vector>::~vector\5babi:v160004\5d\28\29 2987:std::__2::vector>::vector\28std::__2::vector>\20const&\29 2988:std::__2::vector\2c\20std::__2::allocator>>::vector\5babi:v160004\5d\28std::__2::vector\2c\20std::__2::allocator>>&&\29 2989:std::__2::vector>::__swap_out_circular_buffer\28std::__2::__split_buffer&>&\29 2990:std::__2::vector>::__recommend\5babi:v160004\5d\28unsigned\20long\29\20const 2991:std::__2::vector>::push_back\5babi:v160004\5d\28SkString\20const&\29 2992:std::__2::vector>::__swap_out_circular_buffer\28std::__2::__split_buffer&>&\29 2993:std::__2::vector\2c\20std::__2::allocator>>::push_back\5babi:v160004\5d\28SkRGBA4f<\28SkAlphaType\293>\20const&\29 2994:std::__2::vector\2c\20std::__2::allocator>>::__recommend\5babi:v160004\5d\28unsigned\20long\29\20const 2995:std::__2::vector>::push_back\5babi:v160004\5d\28SkMeshSpecification::Attribute&&\29 2996:std::__2::unique_ptr\2c\20void*>\2c\20std::__2::__hash_node_destructor\2c\20void*>>>>::~unique_ptr\5babi:v160004\5d\28\29 2997:std::__2::unique_ptr::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 2998:std::__2::unique_ptr\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair\2c\20skia::textlayout::FontCollection::FamilyKey\2c\20skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair\2c\20skia::textlayout::FontCollection::FamilyKey\2c\20skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair>::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 2999:std::__2::unique_ptr>::Pair\2c\20skgpu::ganesh::AtlasPathRenderer::AtlasPathKey\2c\20skia_private::THashMap>::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete>::Pair\2c\20skgpu::ganesh::AtlasPathRenderer::AtlasPathKey\2c\20skia_private::THashMap>::Pair>::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 3000:std::__2::unique_ptr::Pair\2c\20skgpu::UniqueKey\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete::Pair\2c\20skgpu::UniqueKey\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 3001:std::__2::unique_ptr\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot\20\5b\5d\2c\20std::__2::default_delete\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 3002:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 3003:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 3004:std::__2::unique_ptr>::reset\5babi:v160004\5d\28SkTypeface_FreeType::FaceRec*\29 3005:std::__2::unique_ptr>::reset\5babi:v160004\5d\28SkStrikeSpec*\29 3006:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 3007:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 3008:std::__2::unique_ptr>::reset\5babi:v160004\5d\28SkSL::Pool*\29 3009:std::__2::unique_ptr>::reset\5babi:v160004\5d\28SkSL::Block*\29 3010:std::__2::unique_ptr>::reset\5babi:v160004\5d\28SkDrawableList*\29 3011:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 3012:std::__2::unique_ptr>::reset\5babi:v160004\5d\28SkContourMeasureIter::Impl*\29 3013:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 3014:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 3015:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 3016:std::__2::unique_ptr>::reset\5babi:v160004\5d\28GrGLGpu::SamplerObjectCache*\29 3017:std::__2::unique_ptr>\20GrBlendFragmentProcessor::Make<\28SkBlendMode\296>\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 3018:std::__2::unique_ptr>::reset\5babi:v160004\5d\28GrDrawingManager*\29 3019:std::__2::unique_ptr>::reset\5babi:v160004\5d\28GrClientMappedBufferManager*\29 3020:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 3021:std::__2::unique_ptr>::reset\5babi:v160004\5d\28FT_FaceRec_*\29 3022:std::__2::tuple&\20std::__2::tuple::operator=\5babi:v160004\5d\28std::__2::pair&&\29 3023:std::__2::time_put>>::~time_put\28\29 3024:std::__2::pair\20std::__2::minmax\5babi:v160004\5d>\28std::initializer_list\2c\20std::__2::__less\29 3025:std::__2::pair\20std::__2::__copy_trivial::operator\28\29\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20char*\29\20const 3026:std::__2::locale::locale\28\29 3027:std::__2::iterator_traits::difference_type\20std::__2::distance\5babi:v160004\5d\28unsigned\20int\20const*\2c\20unsigned\20int\20const*\29 3028:std::__2::ios_base::~ios_base\28\29 3029:std::__2::function\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>::operator\28\29\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29\20const 3030:std::__2::function\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const 3031:std::__2::fpos<__mbstate_t>::fpos\5babi:v160004\5d\28long\20long\29 3032:std::__2::enable_if\28\29\20==\20std::declval\28\29\29\2c\20bool>\2c\20bool>::type\20std::__2::operator==\5babi:v160004\5d\28std::__2::optional\20const&\2c\20std::__2::optional\20const&\29 3033:std::__2::deque>::__back_spare\5babi:v160004\5d\28\29\20const 3034:std::__2::default_delete::Traits>::Slot\20\5b\5d>::_EnableIfConvertible::Traits>::Slot>::type\20std::__2::default_delete::Traits>::Slot\20\5b\5d>::operator\28\29\5babi:v160004\5d::Traits>::Slot>\28skia_private::THashTable::Traits>::Slot*\29\20const 3035:std::__2::chrono::__libcpp_steady_clock_now\28\29 3036:std::__2::char_traits::move\28char*\2c\20char\20const*\2c\20unsigned\20long\29 3037:std::__2::char_traits::assign\28char*\2c\20unsigned\20long\2c\20char\29 3038:std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29.1 3039:std::__2::basic_stringbuf\2c\20std::__2::allocator>::~basic_stringbuf\28\29 3040:std::__2::basic_string\2c\20std::__2::allocator>::push_back\28wchar_t\29 3041:std::__2::basic_string\2c\20std::__2::allocator>::capacity\5babi:v160004\5d\28\29\20const 3042:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28wchar_t\20const*\29 3043:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28std::__2::__uninitialized_size_tag\2c\20unsigned\20long\2c\20std::__2::allocator\20const&\29 3044:std::__2::basic_string\2c\20std::__2::allocator>::__make_iterator\5babi:v160004\5d\28char*\29 3045:std::__2::basic_string\2c\20std::__2::allocator>::__grow_by\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29 3046:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 3047:std::__2::basic_streambuf>::~basic_streambuf\28\29 3048:std::__2::basic_streambuf>::setp\5babi:v160004\5d\28char*\2c\20char*\29 3049:std::__2::basic_streambuf>::sbumpc\5babi:v160004\5d\28\29 3050:std::__2::basic_istream>::~basic_istream\28\29 3051:std::__2::basic_istream>::sentry::sentry\28std::__2::basic_istream>&\2c\20bool\29 3052:std::__2::basic_iostream>::~basic_iostream\28\29.1 3053:std::__2::basic_ios>::~basic_ios\28\29 3054:std::__2::array\20skgpu::ganesh::SurfaceFillContext::adjustColorAlphaType<\28SkAlphaType\292>\28SkRGBA4f<\28SkAlphaType\292>\29\20const 3055:std::__2::allocator::allocate\5babi:v160004\5d\28unsigned\20long\29 3056:std::__2::allocator::allocate\5babi:v160004\5d\28unsigned\20long\29 3057:std::__2::__wrap_iter::operator+\5babi:v160004\5d\28long\29\20const 3058:std::__2::__wrap_iter::operator+\5babi:v160004\5d\28long\29\20const 3059:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d\28GrRecordingContext*&&\2c\20GrSurfaceProxyView&&\2c\20GrSurfaceProxyView&&\2c\20GrColorInfo\20const&\29 3060:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d\28GrRecordingContext*&\2c\20skgpu::ganesh::PathRendererChain::Options&\29 3061:std::__2::__unique_if>::__unique_single\20std::__2::make_unique\5babi:v160004\5d\2c\20GrDirectContext::DirectContextID>\28GrDirectContext::DirectContextID&&\29 3062:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d\28SkSL::SymbolTable*&\2c\20bool&\29 3063:std::__2::__tuple_impl\2c\20GrSurfaceProxyView\2c\20sk_sp>::~__tuple_impl\28\29 3064:std::__2::__split_buffer&>::~__split_buffer\28\29 3065:std::__2::__optional_destruct_base>\2c\20false>::~__optional_destruct_base\5babi:v160004\5d\28\29 3066:std::__2::__optional_destruct_base::~__optional_destruct_base\5babi:v160004\5d\28\29 3067:std::__2::__optional_destruct_base::reset\5babi:v160004\5d\28\29 3068:std::__2::__optional_destruct_base::~__optional_destruct_base\5babi:v160004\5d\28\29 3069:std::__2::__optional_destruct_base::~__optional_destruct_base\5babi:v160004\5d\28\29 3070:std::__2::__optional_destruct_base::reset\5babi:v160004\5d\28\29 3071:std::__2::__optional_copy_base::__optional_copy_base\5babi:v160004\5d\28std::__2::__optional_copy_base\20const&\29 3072:std::__2::__num_get::__stage2_float_prep\28std::__2::ios_base&\2c\20wchar_t*\2c\20wchar_t&\2c\20wchar_t&\29 3073:std::__2::__num_get::__stage2_float_loop\28wchar_t\2c\20bool&\2c\20char&\2c\20char*\2c\20char*&\2c\20wchar_t\2c\20wchar_t\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int*\2c\20unsigned\20int*&\2c\20unsigned\20int&\2c\20wchar_t*\29 3074:std::__2::__num_get::__stage2_float_prep\28std::__2::ios_base&\2c\20char*\2c\20char&\2c\20char&\29 3075:std::__2::__num_get::__stage2_float_loop\28char\2c\20bool&\2c\20char&\2c\20char*\2c\20char*&\2c\20char\2c\20char\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int*\2c\20unsigned\20int*&\2c\20unsigned\20int&\2c\20char*\29 3076:std::__2::__murmur2_or_cityhash::operator\28\29\28void\20const*\2c\20unsigned\20long\29 3077:std::__2::__libcpp_wcrtomb_l\5babi:v160004\5d\28char*\2c\20wchar_t\2c\20__mbstate_t*\2c\20__locale_struct*\29 3078:std::__2::__less::operator\28\29\5babi:v160004\5d\28unsigned\20int\20const&\2c\20unsigned\20long\20const&\29\20const 3079:std::__2::__itoa::__base_10_u32\5babi:v160004\5d\28char*\2c\20unsigned\20int\29 3080:std::__2::__itoa::__append6\5babi:v160004\5d\28char*\2c\20unsigned\20int\29 3081:std::__2::__itoa::__append4\5babi:v160004\5d\28char*\2c\20unsigned\20int\29 3082:std::__2::__hash_table\2c\20std::__2::__unordered_map_hasher\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal\2c\20std::__2::equal_to\2c\20std::__2::hash\2c\20true>\2c\20std::__2::allocator>>::~__hash_table\28\29 3083:std::__2::__hash_table\2c\20std::__2::equal_to\2c\20std::__2::allocator>::~__hash_table\28\29 3084:std::__2::__function::__value_func\2c\20sktext::gpu::RendererData\29>::operator\28\29\5babi:v160004\5d\28sktext::gpu::AtlasSubRun\20const*&&\2c\20SkPoint&&\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20sktext::gpu::RendererData&&\29\20const 3085:std::__2::__function::__value_func\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\5babi:v160004\5d\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\20const 3086:std::__2::__function::__func*\29::$_0\2c\20std::__2::allocator*\29::$_0>\2c\20void\20\28GrBackendTexture\29>::__clone\28std::__2::__function::__base*\29\20const 3087:skvx::Vec<4\2c\20unsigned\20short>\20skvx::to_half<4>\28skvx::Vec<4\2c\20float>\20const&\29 3088:skvx::Vec<4\2c\20skvx::Mask::type>\20skvx::operator<=<4\2c\20float\2c\20float\2c\20void>\28skvx::Vec<4\2c\20float>\20const&\2c\20float\29 3089:skvx::Vec<4\2c\20int>\20skvx::operator~<4\2c\20int>\28skvx::Vec<4\2c\20int>\20const&\29 3090:skvx::Vec<4\2c\20int>\20skvx::operator&<4\2c\20int\2c\20int\2c\20void>\28skvx::Vec<4\2c\20int>\20const&\2c\20int\29 3091:skvx::Vec<4\2c\20float>&\20skvx::operator+=<4\2c\20float>\28skvx::Vec<4\2c\20float>&\2c\20skvx::Vec<4\2c\20float>\20const&\29 3092:sktext::gpu::VertexFiller::flatten\28SkWriteBuffer&\29\20const 3093:sktext::gpu::TextBlobRedrawCoordinator::BlobIDCacheEntry::find\28sktext::gpu::TextBlob::Key\20const&\29\20const 3094:sktext::gpu::SubRunAllocator::SubRunAllocator\28char*\2c\20int\2c\20int\29 3095:sktext::gpu::GlyphVector::flatten\28SkWriteBuffer&\29\20const 3096:sktext::gpu::GlyphVector::Make\28sktext::SkStrikePromise&&\2c\20SkSpan\2c\20sktext::gpu::SubRunAllocator*\29 3097:sktext::gpu::GlyphVector::GlyphVector\28sktext::gpu::GlyphVector&&\29 3098:sktext::gpu::BagOfBytes::PlatformMinimumSizeWithOverhead\28int\2c\20int\29 3099:sktext::SkStrikePromise::flatten\28SkWriteBuffer&\29\20const 3100:sktext::GlyphRunList::sourceBoundsWithOrigin\28\29\20const 3101:skpaint_to_grpaint_impl\28GrRecordingContext*\2c\20GrColorInfo\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\2c\20std::__2::optional>>\2c\20SkBlender*\2c\20SkSurfaceProps\20const&\2c\20GrPaint*\29 3102:skip_literal_string 3103:skif::\28anonymous\20namespace\29::GaneshBackend::~GaneshBackend\28\29.1 3104:skif::Mapping::adjustLayerSpace\28SkMatrix\20const&\29 3105:skif::Mapping::Mapping\28\29 3106:skif::LayerSpace::ceil\28\29\20const 3107:skif::LayerSpace\20skif::Mapping::paramToLayer\28skif::ParameterSpace\20const&\29\20const 3108:skif::LayerSpace\20skif::Mapping::deviceToLayer\28skif::DeviceSpace\20const&\29\20const 3109:skif::LayerSpace::relevantSubset\28skif::LayerSpace\2c\20SkTileMode\29\20const 3110:skif::LayerSpace::offset\28skif::LayerSpace\20const&\29 3111:skif::FilterResult::operator=\28skif::FilterResult\20const&\29 3112:skif::FilterResult::getAnalyzedShaderView\28skif::Context\20const&\2c\20SkSamplingOptions\20const&\2c\20SkEnumBitMask\29\20const 3113:skif::FilterResult::analyzeBounds\28SkMatrix\20const&\2c\20SkIRect\20const&\2c\20skif::FilterResult::BoundsScope\29\20const 3114:skif::FilterResult::FilterResult\28sk_sp\2c\20skif::LayerSpace\20const&\2c\20skif::FilterResult::PixelBoundary\29 3115:skif::FilterResult::Builder::~Builder\28\29 3116:skif::FilterResult::AutoSurface::snap\28\29 3117:skif::FilterResult::AutoSurface::AutoSurface\28skif::Context\20const&\2c\20skif::LayerSpace\20const&\2c\20skif::FilterResult::PixelBoundary\2c\20bool\2c\20SkSurfaceProps\20const*\29 3118:skif::Backend::~Backend\28\29 3119:skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::Slot::reset\28\29 3120:skia_private::THashTable::Pair\2c\20SkSL::Symbol\20const*\2c\20skia_private::THashMap::Pair>::firstPopulatedSlot\28\29\20const 3121:skia_private::THashTable::Pair\2c\20SkSL::Symbol\20const*\2c\20skia_private::THashMap::Pair>::Iter>::operator++\28\29 3122:skia_private::THashTable>\2c\20SkGoodHash>::Pair\2c\20SkImageFilter\20const*\2c\20skia_private::THashMap>\2c\20SkGoodHash>::Pair>::Slot::reset\28\29 3123:skia_private::THashTable::AdaptedTraits>::Hash\28skgpu::ganesh::SmallPathShapeDataKey\20const&\29 3124:skia_private::THashTable\2c\20SkDescriptor\2c\20SkStrikeCache::StrikeTraits>::Slot::reset\28\29 3125:skia_private::THashTable::Traits>::Hash\28long\20long\20const&\29 3126:skia_private::THashTable<\28anonymous\20namespace\29::CacheImpl::Value*\2c\20SkImageFilterCacheKey\2c\20SkTDynamicHash<\28anonymous\20namespace\29::CacheImpl::Value\2c\20SkImageFilterCacheKey\2c\20\28anonymous\20namespace\29::CacheImpl::Value>::AdaptedTraits>::Hash\28SkImageFilterCacheKey\20const&\29 3127:skia_private::THashTable::ValueList*\2c\20skgpu::ScratchKey\2c\20SkTDynamicHash::ValueList\2c\20skgpu::ScratchKey\2c\20SkTMultiMap::ValueList>::AdaptedTraits>::findOrNull\28skgpu::ScratchKey\20const&\29\20const 3128:skia_private::THashTable::Traits>::set\28SkSL::Variable\20const*\29 3129:skia_private::THashTable::Entry*\2c\20unsigned\20int\2c\20SkLRUCache::Traits>::uncheckedSet\28SkLRUCache::Entry*&&\29 3130:skia_private::THashTable>\2c\20GrGLGpu::ProgramCache::DescHash>::Entry*\2c\20GrProgramDesc\2c\20SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::Traits>::Hash\28GrProgramDesc\20const&\29 3131:skia_private::THashTable::AdaptedTraits>::removeIfExists\28skgpu::UniqueKey\20const&\29 3132:skia_private::THashTable::Traits>::Hash\28FT_Opaque_Paint_\20const&\29 3133:skia_private::THashMap>\2c\20SkGoodHash>::set\28SkSL::Variable\20const*\2c\20std::__2::unique_ptr>\29 3134:skia_private::THashMap::find\28SkSL::Variable\20const*\20const&\29\20const 3135:skia_private::THashMap::operator\5b\5d\28SkSL::SymbolTable::SymbolKey\20const&\29 3136:skia_private::THashMap::find\28SkSL::SymbolTable::SymbolKey\20const&\29\20const 3137:skia_private::THashMap::find\28SkSL::IRNode\20const*\20const&\29\20const 3138:skia_private::THashMap::set\28SkSL::FunctionDeclaration\20const*\2c\20unsigned\20long\29 3139:skia_private::THashMap>\2c\20SkGoodHash>::find\28SkImageFilter\20const*\20const&\29\20const 3140:skia_private::TArray::resize_back\28int\29 3141:skia_private::TArray::push_back_raw\28int\29 3142:skia_private::TArray::operator==\28skia_private::TArray\20const&\29\20const 3143:skia_private::TArray::reserve_exact\28int\29 3144:skia_private::TArray>\2c\20true>::checkRealloc\28int\2c\20double\29 3145:skia_private::TArray\2c\20true>::push_back\28std::__2::array&&\29 3146:skia_private::TArray::clear\28\29 3147:skia_private::TArray::clear\28\29 3148:skia_private::TArray::TArray\28skia_private::TArray\20const&\29 3149:skia_private::TArray::TArray\28skia_private::TArray\20const&\29 3150:skia_private::TArray::~TArray\28\29 3151:skia_private::TArray::move\28void*\29 3152:skia_private::TArray::BufferFinishedMessage\2c\20false>::~TArray\28\29 3153:skia_private::TArray::BufferFinishedMessage\2c\20false>::move\28void*\29 3154:skia_private::TArray\2c\20true>::push_back\28sk_sp&&\29 3155:skia_private::TArray::reserve_exact\28int\29 3156:skia_private::TArray::push_back_n\28int\2c\20int\20const&\29 3157:skia_private::TArray::operator=\28skia_private::TArray&&\29 3158:skia_private::TArray::Allocate\28int\2c\20double\29 3159:skia_private::TArray\2c\20true>::Allocate\28int\2c\20double\29 3160:skia_private::TArray::reserve_exact\28int\29 3161:skia_private::TArray::~TArray\28\29 3162:skia_private::TArray::move\28void*\29 3163:skia_private::AutoSTMalloc<8ul\2c\20unsigned\20int\2c\20void>::reset\28unsigned\20long\29 3164:skia_private::AutoSTArray<20\2c\20SkGlyph\20const*>::reset\28int\29 3165:skia_private::AutoSTArray<16\2c\20SkRect>::reset\28int\29 3166:skia_private::AutoSTArray<128\2c\20unsigned\20char>::reset\28int\29 3167:skia_png_sig_cmp 3168:skia_png_set_text_2 3169:skia_png_realloc_array 3170:skia_png_get_uint_31 3171:skia_png_check_fp_string 3172:skia_png_check_fp_number 3173:skia_png_app_warning 3174:skia_png_app_error 3175:skia::textlayout::\28anonymous\20namespace\29::intersected\28skia::textlayout::SkRange\20const&\2c\20skia::textlayout::SkRange\20const&\29 3176:skia::textlayout::\28anonymous\20namespace\29::draw_line_as_rect\28skia::textlayout::ParagraphPainter*\2c\20float\2c\20float\2c\20float\2c\20skia::textlayout::ParagraphPainter::DecorationStyle\20const&\29 3177:skia::textlayout::TypefaceFontStyleSet::createTypeface\28int\29 3178:skia::textlayout::TextStyle::setForegroundColor\28SkPaint\29 3179:skia::textlayout::TextStyle::setBackgroundColor\28SkPaint\29 3180:skia::textlayout::TextLine::shapeEllipsis\28SkString\20const&\2c\20skia::textlayout::Cluster\20const*\29::ShapeHandler::~ShapeHandler\28\29 3181:skia::textlayout::TextLine::shapeEllipsis\28SkString\20const&\2c\20skia::textlayout::Cluster\20const*\29::$_0::operator\28\29\28sk_sp\2c\20sk_sp\29\20const 3182:skia::textlayout::TextLine::iterateThroughSingleRunByStyles\28skia::textlayout::TextLine::TextAdjustment\2c\20skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::StyleType\2c\20std::__2::function\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\20const&\29\20const::$_0::operator\28\29\28skia::textlayout::SkRange\2c\20float\29\20const 3183:skia::textlayout::TextLine::getRectsForRange\28skia::textlayout::SkRange\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const 3184:skia::textlayout::TextBox&\20std::__2::vector>::emplace_back\28SkRect&\2c\20skia::textlayout::TextDirection&&\29 3185:skia::textlayout::StrutStyle::StrutStyle\28skia::textlayout::StrutStyle\20const&\29 3186:skia::textlayout::Run::isResolved\28\29\20const 3187:skia::textlayout::Run::copyTo\28SkTextBlobBuilder&\2c\20unsigned\20long\2c\20unsigned\20long\29\20const 3188:skia::textlayout::Run::calculateWidth\28unsigned\20long\2c\20unsigned\20long\2c\20bool\29\20const 3189:skia::textlayout::ParagraphStyle::ParagraphStyle\28skia::textlayout::ParagraphStyle&&\29 3190:skia::textlayout::ParagraphImpl::getGlyphPositionAtCoordinate\28float\2c\20float\29 3191:skia::textlayout::ParagraphImpl::findNextGraphemeBoundary\28unsigned\20long\29\20const 3192:skia::textlayout::ParagraphImpl::findAllBlocks\28skia::textlayout::SkRange\29 3193:skia::textlayout::ParagraphImpl::ensureUTF16Mapping\28\29::$_0::operator\28\29\28\29\20const::'lambda'\28unsigned\20long\29::operator\28\29\28unsigned\20long\29\20const 3194:skia::textlayout::ParagraphImpl::buildClusterTable\28\29 3195:skia::textlayout::ParagraphCacheKey::operator==\28skia::textlayout::ParagraphCacheKey\20const&\29\20const 3196:skia::textlayout::ParagraphBuilderImpl::ensureUTF16Mapping\28\29::$_0::operator\28\29\28\29\20const::'lambda'\28unsigned\20long\29::operator\28\29\28unsigned\20long\29\20const 3197:skia::textlayout::ParagraphBuilderImpl::ensureUTF16Mapping\28\29 3198:skia::textlayout::ParagraphBuilderImpl::endRunIfNeeded\28\29 3199:skia::textlayout::OneLineShaper::~OneLineShaper\28\29 3200:skia::textlayout::LineMetrics::LineMetrics\28\29 3201:skia::textlayout::FontCollection::FamilyKey::~FamilyKey\28\29 3202:skia::textlayout::Cluster::isSoftBreak\28\29\20const 3203:skia::textlayout::Block::Block\28skia::textlayout::Block\20const&\29 3204:skgpu::ganesh::\28anonymous\20namespace\29::add_quad_segment\28SkPoint\20const*\2c\20skia_private::TArray*\29 3205:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::Entry::Entry\28skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::Entry&&\29 3206:skgpu::ganesh::\28anonymous\20namespace\29::HullShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::~Impl\28\29 3207:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::programInfo\28\29 3208:skgpu::ganesh::SurfaceFillContext::internalClear\28SkIRect\20const*\2c\20std::__2::array\2c\20bool\29 3209:skgpu::ganesh::SurfaceFillContext::discard\28\29 3210:skgpu::ganesh::SurfaceFillContext::addOp\28std::__2::unique_ptr>\29 3211:skgpu::ganesh::SurfaceDrawContext::wrapsVkSecondaryCB\28\29\20const 3212:skgpu::ganesh::SurfaceDrawContext::stencilRect\28GrClip\20const*\2c\20GrUserStencilSettings\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20SkMatrix\20const*\29 3213:skgpu::ganesh::SurfaceDrawContext::fillQuadWithEdgeAA\28GrClip\20const*\2c\20GrPaint&&\2c\20GrQuadAAFlags\2c\20SkMatrix\20const&\2c\20SkPoint\20const*\2c\20SkPoint\20const*\29 3214:skgpu::ganesh::SurfaceDrawContext::drawPath\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkPath\20const&\2c\20GrStyle\20const&\29 3215:skgpu::ganesh::SurfaceDrawContext::attemptQuadOptimization\28GrClip\20const*\2c\20GrUserStencilSettings\20const*\2c\20DrawQuad*\2c\20GrPaint*\29 3216:skgpu::ganesh::SurfaceDrawContext::Make\28GrRecordingContext*\2c\20GrColorType\2c\20sk_sp\2c\20sk_sp\2c\20GrSurfaceOrigin\2c\20SkSurfaceProps\20const&\29 3217:skgpu::ganesh::SurfaceContext::rescale\28GrImageInfo\20const&\2c\20GrSurfaceOrigin\2c\20SkIRect\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\29 3218:skgpu::ganesh::SurfaceContext::rescaleInto\28skgpu::ganesh::SurfaceFillContext*\2c\20SkIRect\2c\20SkIRect\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\29::$_0::operator\28\29\28GrSurfaceProxyView\2c\20SkIRect\29\20const 3219:skgpu::ganesh::SurfaceContext::SurfaceContext\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20GrColorInfo\20const&\29 3220:skgpu::ganesh::SmallPathShapeDataKey::operator==\28skgpu::ganesh::SmallPathShapeDataKey\20const&\29\20const 3221:skgpu::ganesh::QuadPerEdgeAA::MinColorType\28SkRGBA4f<\28SkAlphaType\292>\29 3222:skgpu::ganesh::PathTessellator::~PathTessellator\28\29 3223:skgpu::ganesh::PathCurveTessellator::draw\28GrOpFlushState*\29\20const 3224:skgpu::ganesh::OpsTask::~OpsTask\28\29 3225:skgpu::ganesh::OpsTask::recordOp\28std::__2::unique_ptr>\2c\20bool\2c\20GrProcessorSet::Analysis\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const*\2c\20GrCaps\20const&\29 3226:skgpu::ganesh::FilterAndMipmapHaveNoEffect\28GrQuad\20const&\2c\20GrQuad\20const&\29 3227:skgpu::ganesh::FillRectOp::MakeNonAARect\28GrRecordingContext*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20GrUserStencilSettings\20const*\29 3228:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::can_use_hw_derivatives_with_coverage\28skvx::Vec<2\2c\20float>\20const&\2c\20skvx::Vec<2\2c\20float>\20const&\29 3229:skgpu::ganesh::FillRRectOp::Make\28GrRecordingContext*\2c\20SkArenaAlloc*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkRRect\20const&\2c\20SkRect\20const&\2c\20GrAA\29 3230:skgpu::ganesh::Device::drawRRect\28SkRRect\20const&\2c\20SkPaint\20const&\29 3231:skgpu::ganesh::Device::drawImageQuadDirect\28SkImage\20const*\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 3232:skgpu::ganesh::Device::Make\28std::__2::unique_ptr>\2c\20SkAlphaType\2c\20skgpu::ganesh::Device::InitContents\29 3233:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::setup_dashed_rect\28SkRect\20const&\2c\20skgpu::VertexWriter&\2c\20SkMatrix\20const&\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashCap\29 3234:skgpu::ganesh::ClipStack::~ClipStack\28\29 3235:skgpu::ganesh::ClipStack::writableSaveRecord\28bool*\29 3236:skgpu::ganesh::ClipStack::end\28\29\20const 3237:skgpu::ganesh::ClipStack::clip\28skgpu::ganesh::ClipStack::RawElement&&\29 3238:skgpu::ganesh::ClipStack::clipState\28\29\20const 3239:skgpu::ganesh::ClipStack::SaveRecord::invalidateMasks\28GrProxyProvider*\2c\20SkTBlockList*\29 3240:skgpu::ganesh::ClipStack::SaveRecord::genID\28\29\20const 3241:skgpu::ganesh::ClipStack::RawElement::operator=\28skgpu::ganesh::ClipStack::RawElement&&\29 3242:skgpu::ganesh::ClipStack::RawElement::contains\28skgpu::ganesh::ClipStack::SaveRecord\20const&\29\20const 3243:skgpu::ganesh::ClipStack::RawElement::RawElement\28SkMatrix\20const&\2c\20GrShape\20const&\2c\20GrAA\2c\20SkClipOp\29 3244:skgpu::ganesh::AtlasPathRenderer::~AtlasPathRenderer\28\29 3245:skgpu::Swizzle::apply\28SkRasterPipeline*\29\20const 3246:skgpu::Swizzle::applyTo\28std::__2::array\29\20const 3247:skgpu::StringKeyBuilder::~StringKeyBuilder\28\29 3248:skgpu::ScratchKey::GenerateResourceType\28\29 3249:skgpu::RectanizerSkyline::reset\28\29 3250:skgpu::Plot::addSubImage\28int\2c\20int\2c\20void\20const*\2c\20skgpu::AtlasLocator*\29 3251:skgpu::BlurSigmaRadius\28float\29 3252:sk_sp::~sk_sp\28\29 3253:sk_sp::reset\28SkMeshSpecification*\29 3254:sk_sp::operator=\28sk_sp&&\29 3255:sk_sp::reset\28GrTextureProxy*\29 3256:sk_sp::reset\28GrTexture*\29 3257:sk_sp::operator=\28sk_sp&&\29 3258:sk_sp::reset\28GrCpuBuffer*\29 3259:sk_sp&\20sk_sp::operator=\28sk_sp&&\29 3260:sk_sp&\20sk_sp::operator=\28sk_sp\20const&\29 3261:skData_getSize 3262:sift 3263:set_initial_texture_params\28GrGLInterface\20const*\2c\20GrGLCaps\20const&\2c\20unsigned\20int\29 3264:setRegionCheck\28SkRegion*\2c\20SkRegion\20const&\29 3265:setLevelsOutsideIsolates\28UBiDi*\2c\20int\2c\20int\2c\20unsigned\20char\29 3266:sect_with_vertical\28SkPoint\20const*\2c\20float\29 3267:sampler_key\28GrTextureType\2c\20skgpu::Swizzle\20const&\2c\20GrCaps\20const&\29 3268:round\28SkPoint*\29 3269:read_color_line 3270:quick_inverse\28int\29 3271:quad_intersect_ray\28SkPoint\20const*\2c\20float\2c\20SkDLine\20const&\2c\20SkIntersections*\29 3272:psh_globals_set_scale 3273:ps_tofixedarray 3274:ps_parser_skip_PS_token 3275:ps_mask_test_bit 3276:ps_mask_table_alloc 3277:ps_mask_ensure 3278:ps_dimension_reset_mask 3279:ps_builder_init 3280:ps_builder_done 3281:pow 3282:portable::uniform_color\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3283:portable::parametric_k\28skcms_TransferFunction\20const*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20std::byte*&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\29::'lambda'\28float\29::operator\28\29\28float\29\20const 3284:portable::hsl_to_rgb_k\28void\20const*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20std::byte*&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\29::'lambda'\28float\29::operator\28\29\28float\29\20const 3285:portable::gamma__k\28float\20const*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20std::byte*&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\29::'lambda'\28float\29::operator\28\29\28float\29\20const 3286:portable::PQish_k\28skcms_TransferFunction\20const*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20std::byte*&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\29::'lambda'\28float\29::operator\28\29\28float\29\20const 3287:portable::HLGish_k\28skcms_TransferFunction\20const*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20std::byte*&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\29::'lambda'\28float\29::operator\28\29\28float\29\20const 3288:portable::HLGinvish_k\28skcms_TransferFunction\20const*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20std::byte*&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\2c\20float&\29::'lambda'\28float\29::operator\28\29\28float\29\20const 3289:points_are_colinear_and_b_is_middle\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20float*\29 3290:png_zlib_inflate 3291:png_inflate_read 3292:png_inflate_claim 3293:png_build_8bit_table 3294:png_build_16bit_table 3295:picture_approximateBytesUsed 3296:path_addOval 3297:paragraph_dispose 3298:operator==\28SkPath\20const&\2c\20SkPath\20const&\29 3299:operator!=\28SkString\20const&\2c\20SkString\20const&\29 3300:operator!=\28SkIRect\20const&\2c\20SkIRect\20const&\29 3301:normalize 3302:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::TransformedMaskSubRun::glyphCount\28\29\20const 3303:non-virtual\20thunk\20to\20GrOpFlushState::deferredUploadTarget\28\29 3304:nextafterf 3305:move_nearby\28SkOpContourHead*\29 3306:make_unpremul_effect\28std::__2::unique_ptr>\29 3307:machine_index_t\2c\20hb_filter_iter_t\2c\20hb_array_t>\2c\20find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_glyph_info_t\20const&\29\2c\20$_6\20const&\2c\20\28void*\290>\2c\20find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_pair_t\29\2c\20$_5\20const&\2c\20\28void*\290>>>::operator==\28machine_index_t\2c\20hb_filter_iter_t\2c\20hb_array_t>\2c\20find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_glyph_info_t\20const&\29\2c\20$_6\20const&\2c\20\28void*\290>\2c\20find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_pair_t\29\2c\20$_5\20const&\2c\20\28void*\290>>>\20const&\29\20const 3308:long\20std::__2::__libcpp_atomic_refcount_decrement\5babi:v160004\5d\28long&\29 3309:long\20const&\20std::__2::min\5babi:v160004\5d\28long\20const&\2c\20long\20const&\29 3310:log1p 3311:load_truetype_glyph 3312:load\28unsigned\20char\20const*\2c\20int\2c\20void\20\28*\29\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29\29 3313:line_intersect_ray\28SkPoint\20const*\2c\20float\2c\20SkDLine\20const&\2c\20SkIntersections*\29 3314:lineMetrics_getStartIndex 3315:just_solid_color\28SkPaint\20const&\29 3316:is_reflex_vertex\28SkPoint\20const*\2c\20int\2c\20float\2c\20unsigned\20short\2c\20unsigned\20short\2c\20unsigned\20short\29 3317:inner_scanline\28int\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkBlitter*\29 3318:inflate_table 3319:hb_vector_t::push\28\29 3320:hb_vector_t\2c\20false>::shrink_vector\28unsigned\20int\29 3321:hb_utf8_t::next\28unsigned\20char\20const*\2c\20unsigned\20char\20const*\2c\20unsigned\20int*\2c\20unsigned\20int\29 3322:hb_shape_plan_destroy 3323:hb_serialize_context_t::object_t::hash\28\29\20const 3324:hb_script_get_horizontal_direction 3325:hb_pool_t::alloc\28\29 3326:hb_paint_funcs_t::push_clip_rectangle\28void*\2c\20float\2c\20float\2c\20float\2c\20float\29 3327:hb_paint_funcs_t::push_clip_glyph\28void*\2c\20unsigned\20int\2c\20hb_font_t*\29 3328:hb_paint_funcs_t::image\28void*\2c\20hb_blob_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20float\2c\20hb_glyph_extents_t*\29 3329:hb_paint_funcs_t::color\28void*\2c\20int\2c\20unsigned\20int\29 3330:hb_paint_extents_context_t::push_clip\28hb_extents_t\29 3331:hb_ot_map_t::get_mask\28unsigned\20int\2c\20unsigned\20int*\29\20const 3332:hb_lazy_loader_t\2c\20hb_face_t\2c\202u\2c\20hb_blob_t>::get\28\29\20const 3333:hb_lazy_loader_t\2c\20hb_face_t\2c\2023u\2c\20hb_blob_t>::get\28\29\20const 3334:hb_lazy_loader_t\2c\20hb_face_t\2c\201u\2c\20hb_blob_t>::get\28\29\20const 3335:hb_lazy_loader_t\2c\20hb_face_t\2c\2018u\2c\20hb_blob_t>::get\28\29\20const 3336:hb_lazy_loader_t\2c\20hb_face_t\2c\203u\2c\20OT::cmap_accelerator_t>::get_stored\28\29\20const 3337:hb_iter_t\2c\20hb_array_t>\2c\20$_7\20const&\2c\20\28hb_function_sortedness_t\291\2c\20\28void*\290>\2c\20OT::HBGlyphID16&>::end\28\29\20const 3338:hb_iter_t\2c\20hb_array_t>\2c\20find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_glyph_info_t\20const&\29\2c\20$_6\20const&\2c\20\28void*\290>\2c\20find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_pair_t\29\2c\20$_5\20const&\2c\20\28void*\290>\2c\20hb_pair_t>::operator++\28\29\20& 3339:hb_hashmap_t::item_t::operator==\28hb_serialize_context_t::object_t\20const*\20const&\29\20const 3340:hb_font_t::mults_changed\28\29 3341:hb_font_t::has_glyph_h_origin_func\28\29 3342:hb_font_t::has_func\28unsigned\20int\29 3343:hb_font_t::get_nominal_glyphs\28unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int\29 3344:hb_font_t::get_glyph_v_origin\28unsigned\20int\2c\20int*\2c\20int*\29 3345:hb_font_t::get_glyph_v_advances\28unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20int*\2c\20unsigned\20int\29 3346:hb_font_t::get_glyph_h_origin_with_fallback\28unsigned\20int\2c\20int*\2c\20int*\29 3347:hb_font_t::get_glyph_h_origin\28unsigned\20int\2c\20int*\2c\20int*\29 3348:hb_font_t::get_glyph_h_advances\28unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20int*\2c\20unsigned\20int\29 3349:hb_font_t::get_glyph_contour_point_for_origin\28unsigned\20int\2c\20unsigned\20int\2c\20hb_direction_t\2c\20int*\2c\20int*\29 3350:hb_font_funcs_destroy 3351:hb_draw_cubic_to_nil\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 3352:hb_buffer_t::output_info\28hb_glyph_info_t\20const&\29 3353:hb_buffer_t::digest\28\29\20const 3354:hb_buffer_t::_infos_set_glyph_flags\28hb_glyph_info_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 3355:hb_buffer_t::_infos_find_min_cluster\28hb_glyph_info_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 3356:hb_buffer_set_length 3357:hb_buffer_create 3358:hb_blob_ptr_t::destroy\28\29 3359:haircubic\28SkPoint\20const*\2c\20SkRegion\20const*\2c\20SkRect\20const*\2c\20SkRect\20const*\2c\20SkBlitter*\2c\20int\2c\20void\20\28*\29\28SkPoint\20const*\2c\20int\2c\20SkRegion\20const*\2c\20SkBlitter*\29\29 3360:gray_render_line 3361:gl_target_to_gr_target\28unsigned\20int\29 3362:gl_target_to_binding_index\28unsigned\20int\29 3363:get_vendor\28char\20const*\29 3364:get_renderer\28char\20const*\2c\20GrGLExtensions\20const&\29 3365:get_joining_type\28unsigned\20int\2c\20hb_unicode_general_category_t\29 3366:get_child_table_pointer 3367:generate_distance_field_from_image\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\29 3368:gaussianIntegral\28float\29 3369:ft_var_readpackeddeltas 3370:ft_var_done_item_variation_store 3371:ft_glyphslot_alloc_bitmap 3372:ft_face_get_mm_service 3373:freelocale 3374:fputc 3375:fp_barrierf 3376:float*\20SkArenaAlloc::makeArray\28unsigned\20long\29 3377:fixN0c\28BracketData*\2c\20int\2c\20int\2c\20unsigned\20char\29 3378:filter_to_gl_min_filter\28SkFilterMode\2c\20SkMipmapMode\29 3379:emscripten_dispatch_to_thread_ 3380:emscripten_async_run_in_main_thread 3381:em_task_queue_execute 3382:em_queued_call_malloc 3383:dquad_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 3384:do_scanline\28int\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkBlitter*\29 3385:do_anti_hairline\28int\2c\20int\2c\20int\2c\20int\2c\20SkIRect\20const*\2c\20SkBlitter*\29 3386:dline_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 3387:directionFromFlags\28UBiDi*\29 3388:destroy_face 3389:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\20const&\2c\20skgpu::ganesh::DashOp::AAMode\2c\20SkMatrix\20const&\2c\20bool\29::$_0>\28skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingCircleEffect::Make\28SkArenaAlloc*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20skgpu::ganesh::DashOp::AAMode\2c\20SkMatrix\20const&\2c\20bool\29::$_0&&\29::'lambda'\28char*\29::__invoke\28char*\29 3390:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28GrCaps\20const&\2c\20GrSurfaceProxyView\20const&\2c\20bool&\2c\20GrPipeline*&\2c\20GrUserStencilSettings\20const*&&\2c\20\28anonymous\20namespace\29::DrawAtlasPathShader*&\2c\20GrPrimitiveType&&\2c\20GrXferBarrierFlags&\2c\20GrLoadOp&\29::'lambda'\28void*\29>\28GrProgramInfo&&\29::'lambda'\28char*\29::__invoke\28char*\29 3391:dcubic_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 3392:dconic_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 3393:cubic_intersect_ray\28SkPoint\20const*\2c\20float\2c\20SkDLine\20const&\2c\20SkIntersections*\29 3394:conic_intersect_ray\28SkPoint\20const*\2c\20float\2c\20SkDLine\20const&\2c\20SkIntersections*\29 3395:cleanup_shaders\28GrGLGpu*\2c\20SkTDArray\20const&\29 3396:chop_mono_cubic_at_y\28SkPoint*\2c\20float\2c\20SkPoint*\29 3397:check_inverse_on_empty_return\28SkRegion*\2c\20SkPath\20const&\2c\20SkRegion\20const&\29 3398:check_intersection\28SkAnalyticEdge\20const*\2c\20int\2c\20int*\29 3399:char\20const*\20std::__2::find\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20char\20const&\29 3400:cff_parse_real 3401:cff_parse_integer 3402:cff_index_read_offset 3403:cff_index_get_pointers 3404:cff_index_access_element 3405:cff2_path_param_t::move_to\28CFF::point_t\20const&\29 3406:cff1_path_param_t::move_to\28CFF::point_t\20const&\29 3407:cf2_hintmap_map 3408:cf2_glyphpath_pushPrevElem 3409:cf2_glyphpath_computeOffset 3410:cf2_glyphpath_closeOpenPath 3411:can_layer_be_drawn_as_sprite\28SkMatrix\20const&\2c\20SkISize\20const&\29 3412:calculate_path_gap\28float\2c\20float\2c\20SkPath\20const&\29::$_1::operator\28\29\28int\29\20const 3413:calc_dot_cross_cubic\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\29 3414:cached_mask_gamma\28float\2c\20float\2c\20float\29 3415:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 3416:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 3417:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 3418:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 3419:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 3420:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 3421:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 3422:byn$mgfn-shared$void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 3423:byn$mgfn-shared$void\20GrGLProgramDataManager::setMatrices<2>\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 3424:byn$mgfn-shared$std::__2::vector>::__recommend\5babi:v160004\5d\28unsigned\20long\29\20const 3425:byn$mgfn-shared$std::__2::vector>::__recommend\5babi:v160004\5d\28unsigned\20long\29\20const 3426:byn$mgfn-shared$std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 3427:byn$mgfn-shared$std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d\28SkSL::Position&\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray&&\29 3428:byn$mgfn-shared$std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 3429:byn$mgfn-shared$skia_private::THashMap\2c\20SkGoodHash>::find\28int\20const&\29\20const 3430:byn$mgfn-shared$skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 3431:byn$mgfn-shared$skia_private::TArray<\28anonymous\20namespace\29::DrawAtlasOpImpl::Geometry\2c\20true>::checkRealloc\28int\2c\20double\29 3432:byn$mgfn-shared$skia_private::TArray::checkRealloc\28int\2c\20double\29 3433:byn$mgfn-shared$skia_private::AutoSTMalloc<4ul\2c\20int\2c\20void>::AutoSTMalloc\28unsigned\20long\29 3434:byn$mgfn-shared$skgpu::ganesh::\28anonymous\20namespace\29::HullShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 3435:byn$mgfn-shared$skgpu::Swizzle::RGBA\28\29 3436:byn$mgfn-shared$resource_cache_mutex\28\29 3437:byn$mgfn-shared$portable::sub_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3438:byn$mgfn-shared$portable::sub_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3439:byn$mgfn-shared$portable::mul_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3440:byn$mgfn-shared$portable::mul_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3441:byn$mgfn-shared$portable::mod_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3442:byn$mgfn-shared$portable::mix_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3443:byn$mgfn-shared$portable::mix_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3444:byn$mgfn-shared$portable::min_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3445:byn$mgfn-shared$portable::min_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3446:byn$mgfn-shared$portable::min_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3447:byn$mgfn-shared$portable::max_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3448:byn$mgfn-shared$portable::max_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3449:byn$mgfn-shared$portable::max_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3450:byn$mgfn-shared$portable::invsqrt_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3451:byn$mgfn-shared$portable::floor_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3452:byn$mgfn-shared$portable::div_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3453:byn$mgfn-shared$portable::div_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3454:byn$mgfn-shared$portable::div_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3455:byn$mgfn-shared$portable::cmpne_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3456:byn$mgfn-shared$portable::cmpne_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3457:byn$mgfn-shared$portable::cmplt_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3458:byn$mgfn-shared$portable::cmplt_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3459:byn$mgfn-shared$portable::cmplt_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3460:byn$mgfn-shared$portable::cmple_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3461:byn$mgfn-shared$portable::cmple_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3462:byn$mgfn-shared$portable::cmple_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3463:byn$mgfn-shared$portable::cmpeq_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3464:byn$mgfn-shared$portable::cmpeq_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3465:byn$mgfn-shared$portable::ceil_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3466:byn$mgfn-shared$portable::cast_to_uint_from_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3467:byn$mgfn-shared$portable::cast_to_int_from_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3468:byn$mgfn-shared$portable::cast_to_float_from_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3469:byn$mgfn-shared$portable::cast_to_float_from_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3470:byn$mgfn-shared$portable::bitwise_xor_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3471:byn$mgfn-shared$portable::bitwise_or_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3472:byn$mgfn-shared$portable::bitwise_and_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3473:byn$mgfn-shared$portable::add_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3474:byn$mgfn-shared$portable::add_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3475:byn$mgfn-shared$portable::abs_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 3476:byn$mgfn-shared$paint_setColorFilter 3477:byn$mgfn-shared$SkTBlockList::pushItem\28\29 3478:byn$mgfn-shared$SkRuntimeEffect::MakeForShader\28SkString\2c\20SkRuntimeEffect::Options\20const&\29 3479:byn$mgfn-shared$Round_To_Grid 3480:byn$mgfn-shared$LineQuadraticIntersections::addLineNearEndPoints\28\29 3481:byn$mgfn-shared$GrModulateAtlasCoverageEffect::onMakeProgramImpl\28\29\20const 3482:byn$mgfn-shared$GrDistanceFieldA8TextGeoProc::~GrDistanceFieldA8TextGeoProc\28\29 3483:byn$mgfn-shared$DefaultGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 3484:bracketProcessBoundary\28BracketData*\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\29 3485:bracketAddOpening\28BracketData*\2c\20char16_t\2c\20int\29 3486:bool\20std::__2::equal\5babi:v160004\5d\28float\20const*\2c\20float\20const*\2c\20float\20const*\2c\20std::__2::__equal_to\29 3487:bool\20OT::would_match_input>\28OT::hb_would_apply_context_t*\2c\20unsigned\20int\2c\20OT::IntType\20const*\2c\20bool\20\28*\29\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29\2c\20void\20const*\29 3488:bool\20OT::match_lookahead>\28OT::hb_ot_apply_context_t*\2c\20unsigned\20int\2c\20OT::IntType\20const*\2c\20bool\20\28*\29\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29\2c\20void\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\29 3489:bool\20OT::match_backtrack>\28OT::hb_ot_apply_context_t*\2c\20unsigned\20int\2c\20OT::IntType\20const*\2c\20bool\20\28*\29\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29\2c\20void\20const*\2c\20unsigned\20int*\29 3490:bool\20OT::glyf_impl::Glyph::get_points\28hb_font_t*\2c\20OT::glyf_accelerator_t\20const&\2c\20contour_point_vector_t&\2c\20contour_point_vector_t*\2c\20head_maxp_info_t*\2c\20unsigned\20int*\2c\20bool\2c\20bool\2c\20bool\2c\20hb_array_t\2c\20hb_map_t*\2c\20unsigned\20int\2c\20unsigned\20int*\29\20const 3491:bool\20OT::glyf_accelerator_t::get_points\28hb_font_t*\2c\20unsigned\20int\2c\20OT::glyf_accelerator_t::points_aggregator_t\29\20const 3492:bool\20OT::OffsetTo\2c\20true>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 3493:bool\20OT::OffsetTo\2c\20OT::IntType\2c\20true>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 3494:bool\20OT::OffsetTo\2c\20OT::IntType\2c\20true>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 3495:bool\20OT::OffsetTo>\2c\20OT::IntType\2c\20false>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 3496:blitrect\28SkBlitter*\2c\20SkIRect\20const&\29 3497:blit_single_alpha\28AdditiveBlitter*\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\2c\20unsigned\20char*\2c\20bool\2c\20bool\2c\20bool\29 3498:blit_aaa_trapezoid_row\28AdditiveBlitter*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char*\2c\20bool\2c\20bool\2c\20bool\29 3499:atan 3500:append_index_uv_varyings\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20int\2c\20char\20const*\2c\20char\20const*\2c\20GrGLSLVarying*\2c\20GrGLSLVarying*\2c\20GrGLSLVarying*\29 3501:antifillrect\28SkRect\20const&\2c\20SkBlitter*\29 3502:af_property_get_face_globals 3503:af_latin_hints_link_segments 3504:af_latin_compute_stem_width 3505:af_latin_align_linked_edge 3506:af_iup_interp 3507:af_glyph_hints_save 3508:af_glyph_hints_done 3509:af_cjk_align_linked_edge 3510:add_quad\28SkPoint\20const*\2c\20skia_private::TArray*\29 3511:acosf 3512:acos 3513:aaa_fill_path\28SkPath\20const&\2c\20SkIRect\20const&\2c\20AdditiveBlitter*\2c\20int\2c\20int\2c\20bool\2c\20bool\2c\20bool\29 3514:a_swap 3515:a_store 3516:a_cas_p.9042 3517:_iup_worker_interpolate 3518:_hb_head_t\29&>\28fp\29\2c\20std::forward>\28fp0\29\2c\20\28hb_priority<16u>\29\28\29\29\29>::type\20$_14::operator\28\29\29&\2c\20hb_pair_t>\28find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_pair_t\29&\2c\20hb_pair_t&&\29\20const 3519:_hb_font_adopt_var_coords\28hb_font_t*\2c\20int*\2c\20float*\2c\20unsigned\20int\29 3520:_get_path\28OT::cff1::accelerator_t\20const*\2c\20hb_font_t*\2c\20unsigned\20int\2c\20hb_draw_session_t&\2c\20bool\2c\20CFF::point_t*\29 3521:_get_bounds\28OT::cff1::accelerator_t\20const*\2c\20unsigned\20int\2c\20bounds_t&\2c\20bool\29 3522:__trunctfdf2 3523:__towrite 3524:__toread 3525:__tl_unlock 3526:__tl_lock 3527:__timedwait_cp 3528:__subtf3 3529:__strchrnul 3530:__rem_pio2f 3531:__rem_pio2 3532:__pthread_mutex_trylock 3533:__overflow 3534:__math_uflowf 3535:__math_oflowf 3536:__fwritex 3537:__cxxabiv1::__class_type_info::process_static_type_below_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20int\29\20const 3538:__cxxabiv1::__class_type_info::process_static_type_above_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20void\20const*\2c\20int\29\20const 3539:__cxxabiv1::__class_type_info::process_found_base_class\28__cxxabiv1::__dynamic_cast_info*\2c\20void*\2c\20int\29\20const 3540:__cxxabiv1::__base_class_type_info::search_above_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 3541:\28anonymous\20namespace\29::split_conic\28SkPoint\20const*\2c\20SkConic*\2c\20float\29 3542:\28anonymous\20namespace\29::single_pass_shape\28GrStyledShape\20const&\29 3543:\28anonymous\20namespace\29::shift_left\28skvx::Vec<4\2c\20float>\20const&\2c\20int\29 3544:\28anonymous\20namespace\29::shape_contains_rect\28GrShape\20const&\2c\20SkMatrix\20const&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20SkMatrix\20const&\2c\20bool\29 3545:\28anonymous\20namespace\29::set_gl_stencil\28GrGLInterface\20const*\2c\20GrStencilSettings::Face\20const&\2c\20unsigned\20int\29 3546:\28anonymous\20namespace\29::make_blend\28sk_sp\2c\20sk_sp\2c\20sk_sp\2c\20SkImageFilters::CropRect\20const&\2c\20std::__2::optional\2c\20bool\29::$_0::operator\28\29\28sk_sp\29\20const 3547:\28anonymous\20namespace\29::get_tile_count\28SkIRect\20const&\2c\20int\29 3548:\28anonymous\20namespace\29::generateGlyphPathStatic\28FT_FaceRec_*\2c\20SkPath*\29 3549:\28anonymous\20namespace\29::generateFacePathCOLRv1\28FT_FaceRec_*\2c\20unsigned\20short\2c\20SkPath*\29 3550:\28anonymous\20namespace\29::gather_lines_and_quads\28SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20float\2c\20bool\2c\20skia_private::TArray*\2c\20skia_private::TArray*\2c\20skia_private::TArray*\2c\20skia_private::TArray*\2c\20skia_private::TArray*\29::$_0::operator\28\29\28SkPoint\20const*\2c\20bool\29\20const 3551:\28anonymous\20namespace\29::convert_noninflect_cubic_to_quads_with_constraint\28SkPoint\20const*\2c\20float\2c\20SkPathFirstDirection\2c\20skia_private::TArray*\2c\20int\29 3552:\28anonymous\20namespace\29::convert_noninflect_cubic_to_quads\28SkPoint\20const*\2c\20float\2c\20skia_private::TArray*\2c\20int\2c\20bool\2c\20bool\29 3553:\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const 3554:\28anonymous\20namespace\29::calculate_colors\28skgpu::ganesh::SurfaceDrawContext*\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\2c\20skgpu::MaskFormat\2c\20GrPaint*\29 3555:\28anonymous\20namespace\29::bloat_quad\28SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkMatrix\20const*\2c\20\28anonymous\20namespace\29::BezierVertex*\29 3556:\28anonymous\20namespace\29::TriangulatingPathOp::CreateMesh\28GrMeshDrawTarget*\2c\20sk_sp\2c\20int\2c\20int\29 3557:\28anonymous\20namespace\29::TransformedMaskSubRun::~TransformedMaskSubRun\28\29.1 3558:\28anonymous\20namespace\29::TransformedMaskSubRun::testingOnly_packedGlyphIDToGlyph\28sktext::gpu::StrikeCache*\29\20const 3559:\28anonymous\20namespace\29::TransformedMaskSubRun::glyphs\28\29\20const 3560:\28anonymous\20namespace\29::StaticVertexAllocator::~StaticVertexAllocator\28\29 3561:\28anonymous\20namespace\29::SkMorphologyImageFilter::radii\28skif::Mapping\20const&\29\20const 3562:\28anonymous\20namespace\29::SkFTGeometrySink::goingTo\28FT_Vector_\20const*\29 3563:\28anonymous\20namespace\29::SkCropImageFilter::cropRect\28skif::Mapping\20const&\29\20const 3564:\28anonymous\20namespace\29::ShapedRun::~ShapedRun\28\29 3565:\28anonymous\20namespace\29::SDFTSubRun::~SDFTSubRun\28\29 3566:\28anonymous\20namespace\29::PathSubRun::canReuse\28SkPaint\20const&\2c\20SkMatrix\20const&\29\20const 3567:\28anonymous\20namespace\29::MemoryPoolAccessor::pool\28\29\20const 3568:\28anonymous\20namespace\29::DrawAtlasOpImpl::visitProxies\28std::__2::function\20const&\29\20const 3569:\28anonymous\20namespace\29::DrawAtlasOpImpl::programInfo\28\29 3570:\28anonymous\20namespace\29::DrawAtlasOpImpl::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 3571:TT_Vary_Apply_Glyph_Deltas 3572:TT_Set_Var_Design 3573:TT_Get_VMetrics 3574:SkWriter32::writeRegion\28SkRegion\20const&\29 3575:SkVertices::Sizes::Sizes\28SkVertices::Desc\20const&\29 3576:SkVertices::MakeCopy\28SkVertices::VertexMode\2c\20int\2c\20SkPoint\20const*\2c\20SkPoint\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20short\20const*\29 3577:SkVertices::Builder::~Builder\28\29 3578:SkVertices::Builder::detach\28\29 3579:SkUnitScalarClampToByte\28float\29 3580:SkUTF::ToUTF16\28int\2c\20unsigned\20short*\29 3581:SkTypeface_FreeType::~SkTypeface_FreeType\28\29 3582:SkTreatAsSprite\28SkMatrix\20const&\2c\20SkISize\20const&\2c\20SkSamplingOptions\20const&\2c\20bool\29 3583:SkTextBlobBuilder::updateDeferredBounds\28\29 3584:SkTextBlobBuilder::allocInternal\28SkFont\20const&\2c\20SkTextBlob::GlyphPositioning\2c\20int\2c\20int\2c\20SkPoint\2c\20SkRect\20const*\29 3585:SkTextBlob::RunRecord::textSizePtr\28\29\20const 3586:SkTSpan::markCoincident\28\29 3587:SkTSect::markSpanGone\28SkTSpan*\29 3588:SkTSect::computePerpendiculars\28SkTSect*\2c\20SkTSpan*\2c\20SkTSpan*\29 3589:SkTMultiMap::insert\28skgpu::ScratchKey\20const&\2c\20GrGpuResource*\29 3590:SkTDStorage::moveTail\28int\2c\20int\2c\20int\29 3591:SkTDStorage::calculateSizeOrDie\28int\29 3592:SkTDArray::append\28int\29 3593:SkTDArray::append\28\29 3594:SkTConic::hullIntersects\28SkDConic\20const&\2c\20bool*\29\20const 3595:SkTBlockList::pop_back\28\29 3596:SkSurface_Base::~SkSurface_Base\28\29 3597:SkSurface_Base::aboutToDraw\28SkSurface::ContentChangeMode\29 3598:SkStrokeRec::init\28SkPaint\20const&\2c\20SkPaint::Style\2c\20float\29 3599:SkStrokeRec::getInflationRadius\28\29\20const 3600:SkString::printVAList\28char\20const*\2c\20void*\29 3601:SkStrikeSpec::SkStrikeSpec\28SkStrikeSpec&&\29 3602:SkStrikeSpec::MakeWithNoDevice\28SkFont\20const&\2c\20SkPaint\20const*\29 3603:SkStrikeSpec::MakePath\28SkFont\20const&\2c\20SkPaint\20const&\2c\20SkSurfaceProps\20const&\2c\20SkScalerContextFlags\29 3604:SkStrikeCache::findOrCreateStrike\28SkStrikeSpec\20const&\29 3605:SkStrike::prepareForPath\28SkGlyph*\29 3606:SkSpriteBlitter::SkSpriteBlitter\28SkPixmap\20const&\29 3607:SkSpecialImage::~SkSpecialImage\28\29 3608:SkShapers::HB::ScriptRunIterator\28char\20const*\2c\20unsigned\20long\29 3609:SkShaper::TrivialRunIterator::endOfCurrentRun\28\29\20const 3610:SkShaper::TrivialRunIterator::consume\28\29 3611:SkShaper::TrivialRunIterator::atEnd\28\29\20const 3612:SkShaper::TrivialFontRunIterator::~TrivialFontRunIterator\28\29 3613:SkShaders::MatrixRec::MatrixRec\28SkMatrix\20const&\29 3614:SkShaderUtils::GLSLPrettyPrint::tabString\28\29 3615:SkShaderUtils::GLSLPrettyPrint::appendChar\28char\29 3616:SkScanClipper::~SkScanClipper\28\29 3617:SkScanClipper::SkScanClipper\28SkBlitter*\2c\20SkRegion\20const*\2c\20SkIRect\20const&\2c\20bool\2c\20bool\29 3618:SkScan::HairLineRgn\28SkPoint\20const*\2c\20int\2c\20SkRegion\20const*\2c\20SkBlitter*\29 3619:SkScan::FillTriangle\28SkPoint\20const*\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 3620:SkScan::FillPath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 3621:SkScan::FillIRect\28SkIRect\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 3622:SkScan::AntiHairLine\28SkPoint\20const*\2c\20int\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 3623:SkScan::AntiHairLineRgn\28SkPoint\20const*\2c\20int\2c\20SkRegion\20const*\2c\20SkBlitter*\29 3624:SkScan::AntiFillXRect\28SkIRect\20const&\2c\20SkRegion\20const*\2c\20SkBlitter*\29 3625:SkScan::AntiFillPath\28SkPath\20const&\2c\20SkRegion\20const&\2c\20SkBlitter*\2c\20bool\29 3626:SkScalerContext_FreeType::updateGlyphBoundsIfSubpixel\28SkGlyph\20const&\2c\20SkRect*\2c\20bool\29 3627:SkScalerContextFTUtils::drawSVGGlyph\28FT_FaceRec_*\2c\20SkGlyph\20const&\2c\20unsigned\20int\2c\20SkSpan\2c\20SkCanvas*\29\20const 3628:SkScalerContext::~SkScalerContext\28\29 3629:SkSamplingOptions::operator!=\28SkSamplingOptions\20const&\29\20const 3630:SkSTArenaAlloc<2048ul>::SkSTArenaAlloc\28unsigned\20long\29 3631:SkSL::type_is_valid_for_coords\28SkSL::Type\20const&\29 3632:SkSL::simplify_negation\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\29 3633:SkSL::simplify_matrix_multiplication\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\2c\20int\2c\20int\2c\20int\2c\20int\29 3634:SkSL::simplify_componentwise\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\29 3635:SkSL::replace_empty_with_nop\28std::__2::unique_ptr>\2c\20bool\29 3636:SkSL::optimize_constructor_swizzle\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ConstructorCompound\20const&\2c\20skia_private::STArray<4\2c\20signed\20char\2c\20true>\29::ReorderedArgument::ReorderedArgument\28ReorderedArgument&&\29 3637:SkSL::find_generic_index\28SkSL::Type\20const&\2c\20SkSL::Type\20const&\2c\20bool\29 3638:SkSL::evaluate_intrinsic_numeric\28SkSL::Context\20const&\2c\20std::__2::array\20const&\2c\20SkSL::Type\20const&\2c\20double\20\28*\29\28double\2c\20double\2c\20double\29\29 3639:SkSL::eliminate_unreachable_code\28SkSpan>>\2c\20SkSL::ProgramUsage*\29::UnreachableCodeEliminator::~UnreachableCodeEliminator\28\29 3640:SkSL::coalesce_n_way_vector\28SkSL::Expression\20const*\2c\20SkSL::Expression\20const*\2c\20double\2c\20SkSL::Type\20const&\2c\20double\20\28*\29\28double\2c\20double\2c\20double\29\2c\20double\20\28*\29\28double\29\29 3641:SkSL::check_main_signature\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20skia_private::TArray>\2c\20true>&\29::$_0::operator\28\29\28int\29\20const 3642:SkSL::build_argument_type_list\28SkSpan>\20const>\29 3643:SkSL::\28anonymous\20namespace\29::SwitchCaseContainsExit::visitStatement\28SkSL::Statement\20const&\29 3644:SkSL::\28anonymous\20namespace\29::ReturnsInputAlphaVisitor::returnsInputAlpha\28SkSL::Expression\20const&\29 3645:SkSL::\28anonymous\20namespace\29::FinalizationVisitor::~FinalizationVisitor\28\29 3646:SkSL::\28anonymous\20namespace\29::ES2IndexingVisitor::~ES2IndexingVisitor\28\29 3647:SkSL::\28anonymous\20namespace\29::ConstantExpressionVisitor::visitExpression\28SkSL::Expression\20const&\29 3648:SkSL::Variable::~Variable\28\29 3649:SkSL::Variable::Make\28SkSL::Position\2c\20SkSL::Position\2c\20SkSL::Layout\20const&\2c\20SkSL::ModifierFlags\2c\20SkSL::Type\20const*\2c\20std::__2::basic_string_view>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20bool\2c\20SkSL::VariableStorage\29 3650:SkSL::Variable::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Position\2c\20SkSL::Layout\20const&\2c\20SkSL::ModifierFlags\2c\20SkSL::Type\20const*\2c\20SkSL::Position\2c\20std::__2::basic_string_view>\2c\20SkSL::VariableStorage\29 3651:SkSL::VarDeclaration::~VarDeclaration\28\29 3652:SkSL::VarDeclaration::Make\28SkSL::Context\20const&\2c\20SkSL::Variable*\2c\20SkSL::Type\20const*\2c\20int\2c\20std::__2::unique_ptr>\29 3653:SkSL::Type::isStorageTexture\28\29\20const 3654:SkSL::Type::convertArraySize\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Position\2c\20long\20long\29\20const 3655:SkSL::Type::MakeSamplerType\28char\20const*\2c\20SkSL::Type\20const&\29 3656:SkSL::Transform::HoistSwitchVarDeclarationsAtTopLevel\28SkSL::Context\20const&\2c\20std::__2::unique_ptr>\29::HoistSwitchVarDeclsVisitor::~HoistSwitchVarDeclsVisitor\28\29 3657:SkSL::Transform::EliminateDeadGlobalVariables\28SkSL::Program&\29::$_2::operator\28\29\28SkSL::ProgramElement\20const&\29\20const 3658:SkSL::TernaryExpression::~TernaryExpression\28\29 3659:SkSL::SymbolTable::SymbolKey::operator==\28SkSL::SymbolTable::SymbolKey\20const&\29\20const 3660:SkSL::StructType::slotCount\28\29\20const 3661:SkSL::SingleArgumentConstructor::~SingleArgumentConstructor\28\29 3662:SkSL::RP::UnownedLValueSlice::~UnownedLValueSlice\28\29 3663:SkSL::RP::SlotManager::createSlots\28std::__2::basic_string\2c\20std::__2::allocator>\2c\20SkSL::Type\20const&\2c\20SkSL::Position\2c\20bool\29 3664:SkSL::RP::SlotManager::addSlotDebugInfoForGroup\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20SkSL::Type\20const&\2c\20SkSL::Position\2c\20int*\2c\20bool\29 3665:SkSL::RP::Program::makeStages\28skia_private::TArray*\2c\20SkArenaAlloc*\2c\20SkSpan\2c\20SkSL::RP::Program::SlotData\20const&\29\20const::$_4::operator\28\29\28\29\20const 3666:SkSL::RP::Program::makeStages\28skia_private::TArray*\2c\20SkArenaAlloc*\2c\20SkSpan\2c\20SkSL::RP::Program::SlotData\20const&\29\20const::$_1::operator\28\29\28int\29\20const 3667:SkSL::RP::Program::appendCopySlotsMasked\28skia_private::TArray*\2c\20SkArenaAlloc*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20int\29\20const 3668:SkSL::RP::LValueSlice::~LValueSlice\28\29 3669:SkSL::RP::Generator::pushTernaryExpression\28SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\29 3670:SkSL::RP::Generator::pushStructuredComparison\28SkSL::RP::LValue*\2c\20SkSL::Operator\2c\20SkSL::RP::LValue*\2c\20SkSL::Type\20const&\29 3671:SkSL::RP::Generator::pushPrefixExpression\28SkSL::Operator\2c\20SkSL::Expression\20const&\29 3672:SkSL::RP::Generator::pushMatrixMultiply\28SkSL::RP::LValue*\2c\20SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\2c\20int\2c\20int\2c\20int\2c\20int\29 3673:SkSL::RP::Generator::pushAbsFloatIntrinsic\28int\29 3674:SkSL::RP::Generator::needsReturnMask\28SkSL::FunctionDefinition\20const*\29 3675:SkSL::RP::Generator::needsFunctionResultSlots\28SkSL::FunctionDefinition\20const*\29 3676:SkSL::RP::Generator::foldWithMultiOp\28SkSL::RP::BuilderOp\2c\20int\29 3677:SkSL::RP::Generator::GetTypedOp\28SkSL::Type\20const&\2c\20SkSL::RP::Generator::TypedOps\20const&\29 3678:SkSL::RP::DynamicIndexLValue::~DynamicIndexLValue\28\29 3679:SkSL::RP::Builder::select\28int\29 3680:SkSL::RP::Builder::push_uniform\28SkSL::RP::SlotRange\29 3681:SkSL::RP::Builder::pop_loop_mask\28\29 3682:SkSL::RP::Builder::merge_condition_mask\28\29 3683:SkSL::RP::Builder::branch_if_no_active_lanes_on_stack_top_equal\28int\2c\20int\29 3684:SkSL::RP::AutoStack&\20std::__2::optional::emplace\5babi:v160004\5d\28SkSL::RP::Generator*&\29 3685:SkSL::ProgramUsage::add\28SkSL::ProgramElement\20const&\29 3686:SkSL::PipelineStage::PipelineStageCodeGenerator::modifierString\28SkSL::ModifierFlags\29 3687:SkSL::PipelineStage::ConvertProgram\28SkSL::Program\20const&\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20SkSL::PipelineStage::Callbacks*\29 3688:SkSL::Parser::unsizedArrayType\28SkSL::Type\20const*\2c\20SkSL::Position\29 3689:SkSL::Parser::unaryExpression\28\29 3690:SkSL::Parser::swizzle\28SkSL::Position\2c\20std::__2::unique_ptr>\2c\20std::__2::basic_string_view>\2c\20SkSL::Position\29 3691:SkSL::Parser::poison\28SkSL::Position\29 3692:SkSL::Parser::checkIdentifier\28SkSL::Token*\29 3693:SkSL::Parser::block\28bool\2c\20std::__2::unique_ptr>*\29 3694:SkSL::Parser::Checkpoint::ForwardingErrorReporter::~ForwardingErrorReporter\28\29 3695:SkSL::Operator::getBinaryPrecedence\28\29\20const 3696:SkSL::MultiArgumentConstructor::~MultiArgumentConstructor\28\29 3697:SkSL::ModuleLoader::loadVertexModule\28SkSL::Compiler*\29 3698:SkSL::ModuleLoader::loadGPUModule\28SkSL::Compiler*\29 3699:SkSL::ModuleLoader::loadFragmentModule\28SkSL::Compiler*\29 3700:SkSL::ModifierFlags::checkPermittedFlags\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ModifierFlags\29\20const 3701:SkSL::Mangler::uniqueName\28std::__2::basic_string_view>\2c\20SkSL::SymbolTable*\29 3702:SkSL::LiteralType::slotType\28unsigned\20long\29\20const 3703:SkSL::Literal::MakeFloat\28SkSL::Position\2c\20float\2c\20SkSL::Type\20const*\29 3704:SkSL::Literal::MakeBool\28SkSL::Position\2c\20bool\2c\20SkSL::Type\20const*\29 3705:SkSL::Layout::checkPermittedLayout\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkEnumBitMask\29\20const 3706:SkSL::IfStatement::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 3707:SkSL::IRHelpers::Binary\28std::__2::unique_ptr>\2c\20SkSL::Operator\2c\20std::__2::unique_ptr>\29\20const 3708:SkSL::GlobalVarDeclaration::~GlobalVarDeclaration\28\29.1 3709:SkSL::GlobalVarDeclaration::~GlobalVarDeclaration\28\29 3710:SkSL::GLSLCodeGenerator::~GLSLCodeGenerator\28\29 3711:SkSL::GLSLCodeGenerator::writeLiteral\28SkSL::Literal\20const&\29 3712:SkSL::GLSLCodeGenerator::writeFunctionDeclaration\28SkSL::FunctionDeclaration\20const&\29 3713:SkSL::GLSLCodeGenerator::shouldRewriteVoidTypedFunctions\28SkSL::FunctionDeclaration\20const*\29\20const 3714:SkSL::FunctionDefinition::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::FunctionDeclaration\20const&\2c\20std::__2::unique_ptr>\2c\20bool\29::Finalizer::~Finalizer\28\29 3715:SkSL::ForStatement::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ForLoopPositions\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 3716:SkSL::Expression::isIncomplete\28SkSL::Context\20const&\29\20const 3717:SkSL::Expression::compareConstant\28SkSL::Expression\20const&\29\20const 3718:SkSL::DebugTracePriv::~DebugTracePriv\28\29 3719:SkSL::ConstructorArrayCast::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>\29 3720:SkSL::ConstructorArray::~ConstructorArray\28\29 3721:SkSL::ConstantFolder::GetConstantValueOrNull\28SkSL::Expression\20const&\29 3722:SkSL::Compiler::runInliner\28SkSL::Inliner*\2c\20std::__2::vector>\2c\20std::__2::allocator>>>\20const&\2c\20SkSL::SymbolTable*\2c\20SkSL::ProgramUsage*\29 3723:SkSL::Block::~Block\28\29 3724:SkSL::BinaryExpression::~BinaryExpression\28\29 3725:SkSL::BinaryExpression::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20SkSL::Operator\2c\20std::__2::unique_ptr>\2c\20SkSL::Type\20const*\29 3726:SkSL::Analysis::GetReturnComplexity\28SkSL::FunctionDefinition\20const&\29 3727:SkSL::Analysis::CheckProgramStructure\28SkSL::Program\20const&\2c\20bool\29::ProgramSizeVisitor::~ProgramSizeVisitor\28\29 3728:SkSL::Analysis::CallsColorTransformIntrinsics\28SkSL::Program\20const&\29 3729:SkSL::AliasType::bitWidth\28\29\20const 3730:SkRuntimeShaderBuilder::~SkRuntimeShaderBuilder\28\29 3731:SkRuntimeShaderBuilder::makeShader\28SkMatrix\20const*\29\20const 3732:SkRuntimeShaderBuilder::SkRuntimeShaderBuilder\28sk_sp\29 3733:SkRuntimeShader::uniformData\28SkColorSpace\20const*\29\20const 3734:SkRuntimeEffectPriv::VarAsUniform\28SkSL::Variable\20const&\2c\20SkSL::Context\20const&\2c\20unsigned\20long*\29 3735:SkRuntimeEffectBuilder::BuilderChild&\20SkRuntimeEffectBuilder::BuilderChild::operator=\28sk_sp\29 3736:SkRuntimeEffect::makeShader\28sk_sp\2c\20SkSpan\2c\20SkMatrix\20const*\29\20const 3737:SkRuntimeEffect::findChild\28std::__2::basic_string_view>\29\20const 3738:SkRuntimeEffect::MakeForShader\28SkString\29 3739:SkRgnBuilder::~SkRgnBuilder\28\29 3740:SkResourceCache::checkMessages\28\29 3741:SkResourceCache::Key::operator==\28SkResourceCache::Key\20const&\29\20const 3742:SkRegion::translate\28int\2c\20int\2c\20SkRegion*\29\20const 3743:SkRegion::op\28SkRegion\20const&\2c\20SkIRect\20const&\2c\20SkRegion::Op\29 3744:SkRegion::RunHead::findScanline\28int\29\20const 3745:SkRegion::RunHead::Alloc\28int\29 3746:SkReduceOrder::Cubic\28SkPoint\20const*\2c\20SkPoint*\29 3747:SkRect::offset\28float\2c\20float\29 3748:SkRect::inset\28float\2c\20float\29 3749:SkRect*\20SkRecorder::copy\28SkRect\20const*\29 3750:SkRecords::PreCachedPath::PreCachedPath\28SkPath\20const&\29 3751:SkRecords::FillBounds::pushSaveBlock\28SkPaint\20const*\29 3752:SkRecorder::~SkRecorder\28\29 3753:SkRecordDraw\28SkRecord\20const&\2c\20SkCanvas*\2c\20SkPicture\20const*\20const*\2c\20SkDrawable*\20const*\2c\20int\2c\20SkBBoxHierarchy\20const*\2c\20SkPicture::AbortCallback*\29 3754:SkRasterPipelineBlitter::~SkRasterPipelineBlitter\28\29 3755:SkRasterPipelineBlitter::blitRectWithTrace\28int\2c\20int\2c\20int\2c\20int\2c\20bool\29 3756:SkRasterPipelineBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29::$_0::operator\28\29\28int\2c\20SkRasterPipeline_MemoryCtx*\29\20const 3757:SkRasterPipelineBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 3758:SkRasterPipelineBlitter::Create\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkArenaAlloc*\2c\20SkRasterPipeline\20const&\2c\20bool\2c\20bool\2c\20SkShader\20const*\29 3759:SkRasterPipeline::appendStore\28SkColorType\2c\20SkRasterPipeline_MemoryCtx\20const*\29 3760:SkRasterClip::op\28SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkClipOp\2c\20bool\29 3761:SkRasterClip::convertToAA\28\29 3762:SkRRectPriv::ConservativeIntersect\28SkRRect\20const&\2c\20SkRRect\20const&\29::$_1::operator\28\29\28SkRect\20const&\2c\20SkRRect::Corner\29\20const 3763:SkRRectPriv::ConservativeIntersect\28SkRRect\20const&\2c\20SkRRect\20const&\29 3764:SkRRect::scaleRadii\28\29 3765:SkRRect::AreRectAndRadiiValid\28SkRect\20const&\2c\20SkPoint\20const*\29 3766:SkRGBA4f<\28SkAlphaType\292>*\20SkArenaAlloc::makeArray>\28unsigned\20long\29 3767:SkQuadraticEdge::updateQuadratic\28\29 3768:SkQuadConstruct::initWithStart\28SkQuadConstruct*\29 3769:SkQuadConstruct::initWithEnd\28SkQuadConstruct*\29 3770:SkPointPriv::DistanceToLineBetweenSqd\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPointPriv::Side*\29 3771:SkPointPriv::CanNormalize\28float\2c\20float\29 3772:SkPoint::setNormalize\28float\2c\20float\29 3773:SkPoint::setLength\28float\2c\20float\2c\20float\29 3774:SkPixmap::setColorSpace\28sk_sp\29 3775:SkPixmap::rowBytesAsPixels\28\29\20const 3776:SkPixelRef::getGenerationID\28\29\20const 3777:SkPictureRecorder::~SkPictureRecorder\28\29 3778:SkPictureRecorder::SkPictureRecorder\28\29 3779:SkPicture::~SkPicture\28\29 3780:SkPerlinNoiseShader::PaintingData::random\28\29 3781:SkPathWriter::~SkPathWriter\28\29 3782:SkPathWriter::update\28SkOpPtT\20const*\29 3783:SkPathWriter::lineTo\28\29 3784:SkPathWriter::SkPathWriter\28SkPath&\29 3785:SkPathStroker::strokeCloseEnough\28SkPoint\20const*\2c\20SkPoint\20const*\2c\20SkQuadConstruct*\29\20const 3786:SkPathStroker::setRayPts\28SkPoint\20const&\2c\20SkPoint*\2c\20SkPoint*\2c\20SkPoint*\29\20const 3787:SkPathStroker::quadPerpRay\28SkPoint\20const*\2c\20float\2c\20SkPoint*\2c\20SkPoint*\2c\20SkPoint*\29\20const 3788:SkPathStroker::finishContour\28bool\2c\20bool\29 3789:SkPathStroker::conicPerpRay\28SkConic\20const&\2c\20float\2c\20SkPoint*\2c\20SkPoint*\2c\20SkPoint*\29\20const 3790:SkPathPriv::IsRectContour\28SkPath\20const&\2c\20bool\2c\20int*\2c\20SkPoint\20const**\2c\20bool*\2c\20SkPathDirection*\2c\20SkRect*\29 3791:SkPathPriv::AddGenIDChangeListener\28SkPath\20const&\2c\20sk_sp\29 3792:SkPathEffect::filterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29\20const 3793:SkPathBuilder::quadTo\28SkPoint\2c\20SkPoint\29 3794:SkPathBuilder::moveTo\28float\2c\20float\29 3795:SkPathBuilder::cubicTo\28SkPoint\2c\20SkPoint\2c\20SkPoint\29 3796:SkPathBuilder::addRect\28SkRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\29 3797:SkPath::setLastPt\28float\2c\20float\29 3798:SkPath::reversePathTo\28SkPath\20const&\29 3799:SkPath::rQuadTo\28float\2c\20float\2c\20float\2c\20float\29 3800:SkPath::isLastContourClosed\28\29\20const 3801:SkPath::cubicTo\28float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 3802:SkPath::contains\28float\2c\20float\29\20const 3803:SkPath::conicTo\28float\2c\20float\2c\20float\2c\20float\2c\20float\29 3804:SkPath::arcTo\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\29::$_0::operator\28\29\28SkPoint\20const&\29\20const 3805:SkPath::addPath\28SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkPath::AddPathMode\29 3806:SkPath::addOval\28SkRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\29 3807:SkPath::Rect\28SkRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\29 3808:SkPath::Iter::autoClose\28SkPoint*\29 3809:SkPath*\20SkTLazy::init<>\28\29 3810:SkPaintToGrPaintReplaceShader\28GrRecordingContext*\2c\20GrColorInfo\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\2c\20std::__2::unique_ptr>\2c\20SkSurfaceProps\20const&\2c\20GrPaint*\29 3811:SkPaint::operator=\28SkPaint&&\29 3812:SkPaint::getBlendMode_or\28SkBlendMode\29\20const 3813:SkOpSpanBase::checkForCollapsedCoincidence\28\29 3814:SkOpSpan::setWindSum\28int\29 3815:SkOpSegment::updateWindingReverse\28SkOpAngle\20const*\29 3816:SkOpSegment::match\28SkOpPtT\20const*\2c\20SkOpSegment\20const*\2c\20double\2c\20SkPoint\20const&\29\20const 3817:SkOpSegment::markWinding\28SkOpSpan*\2c\20int\2c\20int\29 3818:SkOpSegment::markAngle\28int\2c\20int\2c\20int\2c\20int\2c\20SkOpAngle\20const*\2c\20SkOpSpanBase**\29 3819:SkOpSegment::markAngle\28int\2c\20int\2c\20SkOpAngle\20const*\2c\20SkOpSpanBase**\29 3820:SkOpSegment::markAndChaseWinding\28SkOpSpanBase*\2c\20SkOpSpanBase*\2c\20int\2c\20int\2c\20SkOpSpanBase**\29 3821:SkOpSegment::markAllDone\28\29 3822:SkOpSegment::dSlopeAtT\28double\29\20const 3823:SkOpSegment::addT\28double\2c\20SkPoint\20const&\29 3824:SkOpSegment::activeWinding\28SkOpSpanBase*\2c\20SkOpSpanBase*\29 3825:SkOpPtT::oppPrev\28SkOpPtT\20const*\29\20const 3826:SkOpPtT::contains\28SkOpSegment\20const*\29\20const 3827:SkOpPtT::Overlaps\28SkOpPtT\20const*\2c\20SkOpPtT\20const*\2c\20SkOpPtT\20const*\2c\20SkOpPtT\20const*\2c\20SkOpPtT\20const**\2c\20SkOpPtT\20const**\29 3828:SkOpEdgeBuilder::closeContour\28SkPoint\20const&\2c\20SkPoint\20const&\29 3829:SkOpCoincidence::expand\28\29 3830:SkOpCoincidence::Ordered\28SkOpSegment\20const*\2c\20SkOpSegment\20const*\29 3831:SkOpCoincidence::Ordered\28SkOpPtT\20const*\2c\20SkOpPtT\20const*\29 3832:SkOpAngle::orderable\28SkOpAngle*\29 3833:SkOpAngle::lineOnOneSide\28SkDPoint\20const&\2c\20SkDVector\20const&\2c\20SkOpAngle\20const*\2c\20bool\29\20const 3834:SkOpAngle::computeSector\28\29 3835:SkNoPixelsDevice::SkNoPixelsDevice\28SkIRect\20const&\2c\20SkSurfaceProps\20const&\2c\20sk_sp\29 3836:SkMipmapAccessor::SkMipmapAccessor\28SkImage_Base\20const*\2c\20SkMatrix\20const&\2c\20SkMipmapMode\29::$_0::operator\28\29\28\29\20const 3837:SkMessageBus::Get\28\29 3838:SkMessageBus::Get\28\29 3839:SkMessageBus::BufferFinishedMessage\2c\20GrDirectContext::DirectContextID\2c\20false>::Get\28\29 3840:SkMeshPriv::CpuBuffer::~CpuBuffer\28\29.1 3841:SkMatrixPriv::InverseMapRect\28SkMatrix\20const&\2c\20SkRect*\2c\20SkRect\20const&\29 3842:SkMatrix::setPolyToPoly\28SkPoint\20const*\2c\20SkPoint\20const*\2c\20int\29 3843:SkMatrix::preservesRightAngles\28float\29\20const 3844:SkMatrix::mapRectToQuad\28SkPoint*\2c\20SkRect\20const&\29\20const 3845:SkMatrix::mapRectScaleTranslate\28SkRect*\2c\20SkRect\20const&\29\20const 3846:SkMatrix::getMinMaxScales\28float*\29\20const 3847:SkMatrix::getMapXYProc\28\29\20const 3848:SkMaskBuilder::PrepareDestination\28int\2c\20int\2c\20SkMask\20const&\29 3849:SkLineParameters::cubicEndPoints\28SkDCubic\20const&\2c\20int\2c\20int\29 3850:SkLRUCache>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Entry::~Entry\28\29 3851:SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::reset\28\29 3852:SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::Entry::~Entry\28\29 3853:SkJSONWriter::separator\28bool\29 3854:SkJSONWriter::multiline\28\29\20const 3855:SkJSONWriter::flush\28\29 3856:SkJSONWriter::appendS32\28int\29 3857:SkIntersections::intersectRay\28SkDQuad\20const&\2c\20SkDLine\20const&\29 3858:SkIntersections::intersectRay\28SkDLine\20const&\2c\20SkDLine\20const&\29 3859:SkIntersections::intersectRay\28SkDCubic\20const&\2c\20SkDLine\20const&\29 3860:SkIntersections::intersectRay\28SkDConic\20const&\2c\20SkDLine\20const&\29 3861:SkIntersections::computePoints\28SkDLine\20const&\2c\20int\29 3862:SkIntersections::cleanUpParallelLines\28bool\29 3863:SkImage_Raster::SkImage_Raster\28SkImageInfo\20const&\2c\20sk_sp\2c\20unsigned\20long\2c\20unsigned\20int\29 3864:SkImage_Lazy::~SkImage_Lazy\28\29.1 3865:SkImage_Lazy::Validator::~Validator\28\29 3866:SkImage_Lazy::Validator::Validator\28sk_sp\2c\20SkColorType\20const*\2c\20sk_sp\29 3867:SkImage_Lazy::SkImage_Lazy\28SkImage_Lazy::Validator*\29 3868:SkImage_Ganesh::~SkImage_Ganesh\28\29 3869:SkImage_Ganesh::ProxyChooser::chooseProxy\28GrRecordingContext*\29 3870:SkImage_Base::isYUVA\28\29\20const 3871:SkImage_Base::isGraphiteBacked\28\29\20const 3872:SkImageShader::MakeSubset\28sk_sp\2c\20SkRect\20const&\2c\20SkTileMode\2c\20SkTileMode\2c\20SkSamplingOptions\20const&\2c\20SkMatrix\20const*\2c\20bool\29 3873:SkImageShader::CubicResamplerMatrix\28float\2c\20float\29 3874:SkImageInfo::minRowBytes64\28\29\20const 3875:SkImageInfo::makeAlphaType\28SkAlphaType\29\20const 3876:SkImageInfo::MakeN32Premul\28SkISize\29 3877:SkImageGenerator::getPixels\28SkPixmap\20const&\29 3878:SkImageFilters::Blend\28SkBlendMode\2c\20sk_sp\2c\20sk_sp\2c\20SkImageFilters::CropRect\20const&\29 3879:SkImageFilter_Base::affectsTransparentBlack\28\29\20const 3880:SkImageFilterCacheKey::operator==\28SkImageFilterCacheKey\20const&\29\20const 3881:SkImage::readPixels\28GrDirectContext*\2c\20SkPixmap\20const&\2c\20int\2c\20int\2c\20SkImage::CachingHint\29\20const 3882:SkImage::peekPixels\28SkPixmap*\29\20const 3883:SkImage::makeShader\28SkTileMode\2c\20SkTileMode\2c\20SkSamplingOptions\20const&\2c\20SkMatrix\20const*\29\20const 3884:SkIRect::outset\28int\2c\20int\29 3885:SkIRect::offset\28SkIPoint\20const&\29 3886:SkIRect::containsNoEmptyCheck\28SkIRect\20const&\29\20const 3887:SkIRect::MakeXYWH\28int\2c\20int\2c\20int\2c\20int\29 3888:SkIDChangeListener::List::~List\28\29 3889:SkIDChangeListener::List::add\28sk_sp\29 3890:SkGradientShader::MakeSweep\28float\2c\20float\2c\20SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20sk_sp\2c\20float\20const*\2c\20int\2c\20SkTileMode\2c\20float\2c\20float\2c\20SkGradientShader::Interpolation\20const&\2c\20SkMatrix\20const*\29 3891:SkGradientShader::MakeRadial\28SkPoint\20const&\2c\20float\2c\20SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20sk_sp\2c\20float\20const*\2c\20int\2c\20SkTileMode\2c\20SkGradientShader::Interpolation\20const&\2c\20SkMatrix\20const*\29 3892:SkGradientBaseShader::AppendInterpolatedToDstStages\28SkRasterPipeline*\2c\20SkArenaAlloc*\2c\20bool\2c\20SkGradientShader::Interpolation\20const&\2c\20SkColorSpace\20const*\2c\20SkColorSpace\20const*\29 3893:SkGlyph::mask\28\29\20const 3894:SkFontScanner_FreeType::~SkFontScanner_FreeType\28\29 3895:SkFontScanner_FreeType::openFace\28SkStreamAsset*\2c\20int\2c\20FT_StreamRec_*\29\20const 3896:SkFontScanner_FreeType::GetAxes\28FT_FaceRec_*\2c\20skia_private::STArray<4\2c\20SkFontScanner::AxisDefinition\2c\20true>*\29 3897:SkFontPriv::ApproximateTransformedTextSize\28SkFont\20const&\2c\20SkMatrix\20const&\2c\20SkPoint\20const&\29 3898:SkFontMgr::matchFamily\28char\20const*\29\20const 3899:SkFont::getWidthsBounds\28unsigned\20short\20const*\2c\20int\2c\20float*\2c\20SkRect*\2c\20SkPaint\20const*\29\20const 3900:SkFont::getBounds\28unsigned\20short\20const*\2c\20int\2c\20SkRect*\2c\20SkPaint\20const*\29\20const 3901:SkFindCubicMaxCurvature\28SkPoint\20const*\2c\20float*\29 3902:SkFILEStream::SkFILEStream\28std::__2::shared_ptr<_IO_FILE>\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29 3903:SkEmptyFontMgr::onMatchFamilyStyleCharacter\28char\20const*\2c\20SkFontStyle\20const&\2c\20char\20const**\2c\20int\2c\20int\29\20const 3904:SkEdgeClipper::appendQuad\28SkPoint\20const*\2c\20bool\29 3905:SkEdge::setLine\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkIRect\20const*\2c\20int\29 3906:SkDynamicMemoryWStream::write\28void\20const*\2c\20unsigned\20long\29 3907:SkDrawTreatAAStrokeAsHairline\28float\2c\20SkMatrix\20const&\2c\20float*\29 3908:SkDrawBase::drawRRect\28SkRRect\20const&\2c\20SkPaint\20const&\29\20const 3909:SkDrawBase::drawDevicePoints\28SkCanvas::PointMode\2c\20unsigned\20long\2c\20SkPoint\20const*\2c\20SkPaint\20const&\2c\20SkDevice*\29\20const 3910:SkDevice::setOrigin\28SkM44\20const&\2c\20int\2c\20int\29 3911:SkDevice::getRelativeTransform\28SkDevice\20const&\29\20const 3912:SkDevice::drawSpecial\28SkSpecialImage*\2c\20SkMatrix\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 3913:SkDevice::drawGlyphRunList\28SkCanvas*\2c\20sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\29 3914:SkDevice::drawFilteredImage\28skif::Mapping\20const&\2c\20SkSpecialImage*\2c\20SkColorType\2c\20SkImageFilter\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\29 3915:SkDevice::SkDevice\28SkImageInfo\20const&\2c\20SkSurfaceProps\20const&\29 3916:SkData::MakeZeroInitialized\28unsigned\20long\29 3917:SkData::MakeWithoutCopy\28void\20const*\2c\20unsigned\20long\29 3918:SkDQuad::FindExtrema\28double\20const*\2c\20double*\29 3919:SkDCubic::subDivide\28double\2c\20double\29\20const 3920:SkDCubic::searchRoots\28double*\2c\20int\2c\20double\2c\20SkDCubic::SearchAxis\2c\20double*\29\20const 3921:SkDCubic::monotonicInX\28\29\20const 3922:SkDCubic::findInflections\28double*\29\20const 3923:SkDConic::FindExtrema\28double\20const*\2c\20float\2c\20double*\29 3924:SkCubicEdge::updateCubic\28\29 3925:SkContourMeasureIter::next\28\29 3926:SkContourMeasureIter::Impl::compute_quad_segs\28SkPoint\20const*\2c\20float\2c\20int\2c\20int\2c\20unsigned\20int\2c\20int\29 3927:SkContourMeasureIter::Impl::compute_cubic_segs\28SkPoint\20const*\2c\20float\2c\20int\2c\20int\2c\20unsigned\20int\2c\20int\29 3928:SkContourMeasureIter::Impl::compute_conic_segs\28SkConic\20const&\2c\20float\2c\20int\2c\20SkPoint\20const&\2c\20int\2c\20SkPoint\20const&\2c\20unsigned\20int\2c\20int\29 3929:SkContourMeasure::distanceToSegment\28float\2c\20float*\29\20const 3930:SkConic::evalAt\28float\2c\20SkPoint*\2c\20SkPoint*\29\20const 3931:SkConic::evalAt\28float\29\20const 3932:SkConic::TransformW\28SkPoint\20const*\2c\20float\2c\20SkMatrix\20const&\29 3933:SkCompressedDataSize\28SkTextureCompressionType\2c\20SkISize\2c\20skia_private::TArray*\2c\20bool\29 3934:SkColorToPMColor4f\28unsigned\20int\2c\20GrColorInfo\20const&\29 3935:SkColorSpaceLuminance::Fetch\28float\29 3936:SkColorSpace::MakeRGB\28skcms_TransferFunction\20const&\2c\20skcms_Matrix3x3\20const&\29 3937:SkCoincidentSpans::extend\28SkOpPtT\20const*\2c\20SkOpPtT\20const*\2c\20SkOpPtT\20const*\2c\20SkOpPtT\20const*\29 3938:SkChopQuadAtYExtrema\28SkPoint\20const*\2c\20SkPoint*\29 3939:SkCapabilities::RasterBackend\28\29 3940:SkCanvas::saveLayer\28SkCanvas::SaveLayerRec\20const&\29 3941:SkCanvas::onResetClip\28\29 3942:SkCanvas::onClipShader\28sk_sp\2c\20SkClipOp\29 3943:SkCanvas::onClipRegion\28SkRegion\20const&\2c\20SkClipOp\29 3944:SkCanvas::onClipRect\28SkRect\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 3945:SkCanvas::onClipRRect\28SkRRect\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 3946:SkCanvas::onClipPath\28SkPath\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 3947:SkCanvas::internalSave\28\29 3948:SkCanvas::internalRestore\28\29 3949:SkCanvas::clipRect\28SkRect\20const&\2c\20bool\29 3950:SkCanvas::clipPath\28SkPath\20const&\2c\20bool\29 3951:SkCanvas::clear\28unsigned\20int\29 3952:SkCanvas::clear\28SkRGBA4f<\28SkAlphaType\293>\20const&\29 3953:SkCachedData::~SkCachedData\28\29 3954:SkBlitterClipper::~SkBlitterClipper\28\29 3955:SkBlitter::blitRegion\28SkRegion\20const&\29 3956:SkBlendShader::~SkBlendShader\28\29 3957:SkBitmapDevice::SkBitmapDevice\28SkBitmap\20const&\2c\20SkSurfaceProps\20const&\2c\20void*\29 3958:SkBitmapDevice::BDDraw::~BDDraw\28\29 3959:SkBitmapDevice::BDDraw::BDDraw\28SkBitmapDevice*\29 3960:SkBitmap::writePixels\28SkPixmap\20const&\2c\20int\2c\20int\29 3961:SkBitmap::setPixels\28void*\29 3962:SkBitmap::readPixels\28SkPixmap\20const&\2c\20int\2c\20int\29\20const 3963:SkBitmap::installPixels\28SkPixmap\20const&\29 3964:SkBitmap::allocPixels\28\29 3965:SkBinaryWriteBuffer::writeScalarArray\28float\20const*\2c\20unsigned\20int\29 3966:SkBinaryWriteBuffer::writeInt\28int\29 3967:SkBaseShadowTessellator::~SkBaseShadowTessellator\28\29.1 3968:SkBaseShadowTessellator::handleLine\28SkPoint\20const&\29 3969:SkAutoPixmapStorage::freeStorage\28\29 3970:SkAutoPathBoundsUpdate::~SkAutoPathBoundsUpdate\28\29 3971:SkAutoPathBoundsUpdate::SkAutoPathBoundsUpdate\28SkPath*\2c\20SkRect\20const&\29 3972:SkAutoMalloc::reset\28unsigned\20long\2c\20SkAutoMalloc::OnShrink\29 3973:SkAutoDescriptor::free\28\29 3974:SkArenaAllocWithReset::reset\28\29 3975:SkAnalyticQuadraticEdge::updateQuadratic\28\29 3976:SkAnalyticEdge::goY\28int\29 3977:SkAnalyticCubicEdge::updateCubic\28bool\29 3978:SkAAClipBlitter::ensureRunsAndAA\28\29 3979:SkAAClip::setRegion\28SkRegion\20const&\29 3980:SkAAClip::setRect\28SkIRect\20const&\29 3981:SkAAClip::quickContains\28int\2c\20int\2c\20int\2c\20int\29\20const 3982:SkAAClip::RunHead::Alloc\28int\2c\20unsigned\20long\29 3983:SkAAClip::Builder::AppendRun\28SkTDArray&\2c\20unsigned\20int\2c\20int\29 3984:Sk4f_toL32\28skvx::Vec<4\2c\20float>\20const&\29 3985:SSVertex*\20SkArenaAlloc::make\28GrTriangulator::Vertex*&\29 3986:RunBasedAdditiveBlitter::flush\28\29 3987:R.9000 3988:OpAsWinding::nextEdge\28Contour&\2c\20OpAsWinding::Edge\29 3989:OT::sbix::get_strike\28unsigned\20int\29\20const 3990:OT::hb_paint_context_t::get_color\28unsigned\20int\2c\20float\2c\20int*\29 3991:OT::hb_ot_apply_context_t::skipping_iterator_t::prev\28unsigned\20int*\29 3992:OT::hb_ot_apply_context_t::check_glyph_property\28hb_glyph_info_t\20const*\2c\20unsigned\20int\29\20const 3993:OT::glyf_impl::CompositeGlyphRecord::translate\28contour_point_t\20const&\2c\20hb_array_t\29 3994:OT::VariationStore::sanitize\28hb_sanitize_context_t*\29\20const 3995:OT::VarSizedBinSearchArrayOf>\2c\20OT::IntType\2c\20false>>>::get_length\28\29\20const 3996:OT::Script::get_lang_sys\28unsigned\20int\29\20const 3997:OT::PaintSkew::sanitize\28hb_sanitize_context_t*\29\20const 3998:OT::OpenTypeOffsetTable::sanitize\28hb_sanitize_context_t*\29\20const 3999:OT::OS2::has_data\28\29\20const 4000:OT::Layout::GSUB_impl::SubstLookup::serialize_ligature\28hb_serialize_context_t*\2c\20unsigned\20int\2c\20hb_sorted_array_t\2c\20hb_array_t\2c\20hb_array_t\2c\20hb_array_t\2c\20hb_array_t\29 4001:OT::Layout::GPOS_impl::MarkArray::apply\28OT::hb_ot_apply_context_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20OT::Layout::GPOS_impl::AnchorMatrix\20const&\2c\20unsigned\20int\2c\20unsigned\20int\29\20const 4002:OT::HVARVVAR::sanitize\28hb_sanitize_context_t*\29\20const 4003:OT::GSUBGPOS::get_lookup_count\28\29\20const 4004:OT::GSUBGPOS::get_feature_list\28\29\20const 4005:OT::GSUBGPOS::accelerator_t::get_accel\28unsigned\20int\29\20const 4006:OT::Device::get_y_delta\28hb_font_t*\2c\20OT::VariationStore\20const&\2c\20float*\29\20const 4007:OT::Device::get_x_delta\28hb_font_t*\2c\20OT::VariationStore\20const&\2c\20float*\29\20const 4008:OT::ClipList::get_extents\28unsigned\20int\2c\20hb_glyph_extents_t*\2c\20OT::VarStoreInstancer\20const&\29\20const 4009:OT::COLR::paint_glyph\28hb_font_t*\2c\20unsigned\20int\2c\20hb_paint_funcs_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20bool\29\20const 4010:OT::ArrayOf>::serialize\28hb_serialize_context_t*\2c\20unsigned\20int\2c\20bool\29 4011:MaskAdditiveBlitter::~MaskAdditiveBlitter\28\29 4012:LineQuadraticIntersections::uniqueAnswer\28double\2c\20SkDPoint\20const&\29 4013:LineQuadraticIntersections::pinTs\28double*\2c\20double*\2c\20SkDPoint*\2c\20LineQuadraticIntersections::PinTPoint\29 4014:LineQuadraticIntersections::checkCoincident\28\29 4015:LineQuadraticIntersections::addLineNearEndPoints\28\29 4016:LineCubicIntersections::uniqueAnswer\28double\2c\20SkDPoint\20const&\29 4017:LineCubicIntersections::pinTs\28double*\2c\20double*\2c\20SkDPoint*\2c\20LineCubicIntersections::PinTPoint\29 4018:LineCubicIntersections::checkCoincident\28\29 4019:LineCubicIntersections::addLineNearEndPoints\28\29 4020:LineConicIntersections::validT\28double*\2c\20double\2c\20double*\29 4021:LineConicIntersections::uniqueAnswer\28double\2c\20SkDPoint\20const&\29 4022:LineConicIntersections::pinTs\28double*\2c\20double*\2c\20SkDPoint*\2c\20LineConicIntersections::PinTPoint\29 4023:LineConicIntersections::checkCoincident\28\29 4024:LineConicIntersections::addLineNearEndPoints\28\29 4025:HandleInnerJoin\28SkPath*\2c\20SkPoint\20const&\2c\20SkPoint\20const&\29 4026:GrVertexChunkBuilder::~GrVertexChunkBuilder\28\29 4027:GrTriangulator::tessellate\28GrTriangulator::VertexList\20const&\2c\20GrTriangulator::Comparator\20const&\29 4028:GrTriangulator::splitEdge\28GrTriangulator::Edge*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Comparator\20const&\29 4029:GrTriangulator::pathToPolys\28float\2c\20SkRect\20const&\2c\20bool*\29 4030:GrTriangulator::makePoly\28GrTriangulator::Poly**\2c\20GrTriangulator::Vertex*\2c\20int\29\20const 4031:GrTriangulator::generateCubicPoints\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20GrTriangulator::VertexList*\2c\20int\29\20const 4032:GrTriangulator::checkForIntersection\28GrTriangulator::Edge*\2c\20GrTriangulator::Edge*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::VertexList*\2c\20GrTriangulator::Comparator\20const&\29 4033:GrTriangulator::applyFillType\28int\29\20const 4034:GrTriangulator::SortMesh\28GrTriangulator::VertexList*\2c\20GrTriangulator::Comparator\20const&\29 4035:GrTriangulator::MonotonePoly::addEdge\28GrTriangulator::Edge*\29 4036:GrTriangulator::GrTriangulator\28SkPath\20const&\2c\20SkArenaAlloc*\29 4037:GrTriangulator::Edge::insertBelow\28GrTriangulator::Vertex*\2c\20GrTriangulator::Comparator\20const&\29 4038:GrTriangulator::Edge::insertAbove\28GrTriangulator::Vertex*\2c\20GrTriangulator::Comparator\20const&\29 4039:GrTriangulator::BreadcrumbTriangleList::append\28SkArenaAlloc*\2c\20SkPoint\2c\20SkPoint\2c\20SkPoint\2c\20int\29 4040:GrThreadSafeCache::recycleEntry\28GrThreadSafeCache::Entry*\29 4041:GrThreadSafeCache::dropAllRefs\28\29 4042:GrTextureRenderTargetProxy::~GrTextureRenderTargetProxy\28\29.1 4043:GrTextureRenderTargetProxy::onUninstantiatedGpuMemorySize\28\29\20const 4044:GrTextureRenderTargetProxy::instantiate\28GrResourceProvider*\29 4045:GrTextureRenderTargetProxy::createSurface\28GrResourceProvider*\29\20const 4046:GrTextureRenderTargetProxy::callbackDesc\28\29\20const 4047:GrTextureProxy::~GrTextureProxy\28\29 4048:GrTextureEffect::Sampling::Sampling\28GrSurfaceProxy\20const&\2c\20GrSamplerState\2c\20SkRect\20const&\2c\20SkRect\20const*\2c\20float\20const*\2c\20bool\2c\20GrCaps\20const&\2c\20SkPoint\29::$_0::operator\28\29\28int\2c\20GrSamplerState::WrapMode\29\20const 4049:GrTextureEffect::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::$_3::operator\28\29\28bool\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\29\20const 4050:GrTexture::GrTexture\28GrGpu*\2c\20SkISize\20const&\2c\20skgpu::Protected\2c\20GrTextureType\2c\20GrMipmapStatus\2c\20std::__2::basic_string_view>\29 4051:GrTexture::ComputeScratchKey\28GrCaps\20const&\2c\20GrBackendFormat\20const&\2c\20SkISize\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20skgpu::ScratchKey*\29 4052:GrSurfaceProxyView::asTextureProxyRef\28\29\20const 4053:GrSurfaceProxy::instantiateImpl\28GrResourceProvider*\2c\20int\2c\20skgpu::Renderable\2c\20skgpu::Mipmapped\2c\20skgpu::UniqueKey\20const*\29 4054:GrSurfaceProxy::GrSurfaceProxy\28sk_sp\2c\20SkBackingFit\2c\20GrSurfaceProxy::UseAllocator\29 4055:GrSurface::setRelease\28sk_sp\29 4056:GrStyledShape::styledBounds\28\29\20const 4057:GrStyledShape::addGenIDChangeListener\28sk_sp\29\20const 4058:GrStyledShape::GrStyledShape\28SkRect\20const&\2c\20GrStyle\20const&\2c\20GrStyledShape::DoSimplify\29 4059:GrStyle::isSimpleHairline\28\29\20const 4060:GrStyle::initPathEffect\28sk_sp\29 4061:GrStencilSettings::Face::reset\28GrTStencilFaceSettings\20const&\2c\20bool\2c\20int\29 4062:GrSimpleMeshDrawOpHelper::fixedFunctionFlags\28\29\20const 4063:GrShape::setPath\28SkPath\20const&\29 4064:GrShape::operator=\28GrShape\20const&\29 4065:GrShape::convex\28bool\29\20const 4066:GrShaderVar::GrShaderVar\28SkString\2c\20SkSLType\2c\20int\29 4067:GrResourceProvider::findResourceByUniqueKey\28skgpu::UniqueKey\20const&\29 4068:GrResourceProvider::createPatternedIndexBuffer\28unsigned\20short\20const*\2c\20int\2c\20int\2c\20int\2c\20skgpu::UniqueKey\20const*\29 4069:GrResourceCache::removeUniqueKey\28GrGpuResource*\29 4070:GrResourceCache::getNextTimestamp\28\29 4071:GrResourceCache::findAndRefScratchResource\28skgpu::ScratchKey\20const&\29 4072:GrRenderTask::dependsOn\28GrRenderTask\20const*\29\20const 4073:GrRenderTargetProxy::~GrRenderTargetProxy\28\29 4074:GrRenderTargetProxy::canUseStencil\28GrCaps\20const&\29\20const 4075:GrRecordingContextPriv::addOnFlushCallbackObject\28GrOnFlushCallbackObject*\29 4076:GrRecordingContext::~GrRecordingContext\28\29 4077:GrQuadUtils::TessellationHelper::reset\28GrQuad\20const&\2c\20GrQuad\20const*\29 4078:GrQuadUtils::TessellationHelper::getEdgeEquations\28\29 4079:GrQuadUtils::TessellationHelper::Vertices::moveAlong\28GrQuadUtils::TessellationHelper::EdgeVectors\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\29 4080:GrQuadUtils::ResolveAAType\28GrAAType\2c\20GrQuadAAFlags\2c\20GrQuad\20const&\2c\20GrAAType*\2c\20GrQuadAAFlags*\29 4081:GrQuadUtils::CropToRect\28SkRect\20const&\2c\20GrAA\2c\20DrawQuad*\2c\20bool\29 4082:GrQuadBuffer<\28anonymous\20namespace\29::FillRectOpImpl::ColorAndAA>::append\28GrQuad\20const&\2c\20\28anonymous\20namespace\29::FillRectOpImpl::ColorAndAA&&\2c\20GrQuad\20const*\29 4083:GrQuad::setQuadType\28GrQuad::Type\29 4084:GrPorterDuffXPFactory::SimpleSrcOverXP\28\29 4085:GrPipeline*\20SkArenaAlloc::make\28GrPipeline::InitArgs&\2c\20GrProcessorSet&&\2c\20GrAppliedClip&&\29 4086:GrPersistentCacheUtils::UnpackCachedShaders\28SkReadBuffer*\2c\20std::__2::basic_string\2c\20std::__2::allocator>*\2c\20SkSL::ProgramInterface*\2c\20int\2c\20GrPersistentCacheUtils::ShaderMetadata*\29 4087:GrPathUtils::quadraticPointCount\28SkPoint\20const*\2c\20float\29 4088:GrPathUtils::convertCubicToQuads\28SkPoint\20const*\2c\20float\2c\20skia_private::TArray*\29 4089:GrPathTessellationShader::Make\28GrShaderCaps\20const&\2c\20SkArenaAlloc*\2c\20SkMatrix\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20skgpu::tess::PatchAttribs\29 4090:GrPathTessellationShader::MakeSimpleTriangleShader\28SkArenaAlloc*\2c\20SkMatrix\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\29 4091:GrOvalOpFactory::MakeOvalOp\28GrRecordingContext*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20GrStyle\20const&\2c\20GrShaderCaps\20const*\29 4092:GrOpsRenderPass::drawIndexed\28int\2c\20int\2c\20unsigned\20short\2c\20unsigned\20short\2c\20int\29 4093:GrOpFlushState::draw\28int\2c\20int\29 4094:GrOp::chainConcat\28std::__2::unique_ptr>\29 4095:GrNonAtomicRef::unref\28\29\20const 4096:GrModulateAtlasCoverageEffect::GrModulateAtlasCoverageEffect\28GrModulateAtlasCoverageEffect\20const&\29 4097:GrMipLevel::operator=\28GrMipLevel&&\29 4098:GrMeshDrawOp::PatternHelper::PatternHelper\28GrMeshDrawTarget*\2c\20GrPrimitiveType\2c\20unsigned\20long\2c\20sk_sp\2c\20int\2c\20int\2c\20int\2c\20int\29 4099:GrMakeUniqueKeyInvalidationListener\28skgpu::UniqueKey*\2c\20unsigned\20int\29 4100:GrImageInfo::makeDimensions\28SkISize\29\20const 4101:GrGpuResource::~GrGpuResource\28\29 4102:GrGpuResource::removeScratchKey\28\29 4103:GrGpuResource::registerWithCacheWrapped\28GrWrapCacheable\29 4104:GrGpuResource::getResourceName\28\29\20const 4105:GrGpuResource::dumpMemoryStatisticsPriv\28SkTraceMemoryDump*\2c\20SkString\20const&\2c\20char\20const*\2c\20unsigned\20long\29\20const 4106:GrGpuResource::CreateUniqueID\28\29 4107:GrGpuBuffer::onGpuMemorySize\28\29\20const 4108:GrGpu::resolveRenderTarget\28GrRenderTarget*\2c\20SkIRect\20const&\29 4109:GrGeometryProcessor::TextureSampler::TextureSampler\28GrSamplerState\2c\20GrBackendFormat\20const&\2c\20skgpu::Swizzle\20const&\29 4110:GrGeometryProcessor::TextureSampler::TextureSampler\28GrGeometryProcessor::TextureSampler&&\29 4111:GrGeometryProcessor::ProgramImpl::TransformInfo::TransformInfo\28GrGeometryProcessor::ProgramImpl::TransformInfo\20const&\29 4112:GrGeometryProcessor::ProgramImpl::AddMatrixKeys\28GrShaderCaps\20const&\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkMatrix\20const&\29 4113:GrGeometryProcessor::Attribute::size\28\29\20const 4114:GrGLUniformHandler::~GrGLUniformHandler\28\29 4115:GrGLUniformHandler::getUniformVariable\28GrResourceHandle\29\20const 4116:GrGLTextureRenderTarget::~GrGLTextureRenderTarget\28\29.1 4117:GrGLTextureRenderTarget::onRelease\28\29 4118:GrGLTextureRenderTarget::onGpuMemorySize\28\29\20const 4119:GrGLTextureRenderTarget::onAbandon\28\29 4120:GrGLTextureRenderTarget::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 4121:GrGLTexture::~GrGLTexture\28\29 4122:GrGLTexture::onRelease\28\29 4123:GrGLTexture::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 4124:GrGLTexture::TextureTypeFromTarget\28unsigned\20int\29 4125:GrGLSemaphore::Make\28GrGLGpu*\2c\20bool\29 4126:GrGLSLVaryingHandler::~GrGLSLVaryingHandler\28\29 4127:GrGLSLUniformHandler::addInputSampler\28skgpu::Swizzle\20const&\2c\20char\20const*\29 4128:GrGLSLUniformHandler::UniformInfo::~UniformInfo\28\29 4129:GrGLSLShaderBuilder::appendTextureLookup\28SkString*\2c\20GrResourceHandle\2c\20char\20const*\29\20const 4130:GrGLSLShaderBuilder::appendColorGamutXform\28char\20const*\2c\20GrGLSLColorSpaceXformHelper*\29 4131:GrGLSLShaderBuilder::appendColorGamutXform\28SkString*\2c\20char\20const*\2c\20GrGLSLColorSpaceXformHelper*\29 4132:GrGLSLProgramDataManager::setSkMatrix\28GrResourceHandle\2c\20SkMatrix\20const&\29\20const 4133:GrGLSLProgramBuilder::writeFPFunction\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29 4134:GrGLSLProgramBuilder::nameExpression\28SkString*\2c\20char\20const*\29 4135:GrGLSLProgramBuilder::fragmentProcessorHasCoordsParam\28GrFragmentProcessor\20const*\29\20const 4136:GrGLSLProgramBuilder::emitSampler\28GrBackendFormat\20const&\2c\20GrSamplerState\2c\20skgpu::Swizzle\20const&\2c\20char\20const*\29 4137:GrGLSLFragmentShaderBuilder::~GrGLSLFragmentShaderBuilder\28\29.1 4138:GrGLSLBlend::BlendKey\28SkBlendMode\29 4139:GrGLRenderTarget::~GrGLRenderTarget\28\29 4140:GrGLRenderTarget::onRelease\28\29 4141:GrGLRenderTarget::onAbandon\28\29 4142:GrGLRenderTarget::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 4143:GrGLProgramDataManager::~GrGLProgramDataManager\28\29 4144:GrGLProgramBuilder::~GrGLProgramBuilder\28\29 4145:GrGLProgramBuilder::computeCountsAndStrides\28unsigned\20int\2c\20GrGeometryProcessor\20const&\2c\20bool\29 4146:GrGLProgramBuilder::addInputVars\28SkSL::ProgramInterface\20const&\29 4147:GrGLOpsRenderPass::dmsaaLoadStoreBounds\28\29\20const 4148:GrGLOpsRenderPass::bindInstanceBuffer\28GrBuffer\20const*\2c\20int\29 4149:GrGLGpu::insertSemaphore\28GrSemaphore*\29 4150:GrGLGpu::flushViewport\28SkIRect\20const&\2c\20int\2c\20GrSurfaceOrigin\29 4151:GrGLGpu::flushScissor\28GrScissorState\20const&\2c\20int\2c\20GrSurfaceOrigin\29 4152:GrGLGpu::flushClearColor\28std::__2::array\29 4153:GrGLGpu::disableStencil\28\29 4154:GrGLGpu::createTexture\28SkISize\2c\20GrGLFormat\2c\20unsigned\20int\2c\20skgpu::Renderable\2c\20GrGLTextureParameters::SamplerOverriddenState*\2c\20int\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 4155:GrGLGpu::copySurfaceAsDraw\28GrSurface*\2c\20bool\2c\20GrSurface*\2c\20SkIRect\20const&\2c\20SkIRect\20const&\2c\20SkFilterMode\29 4156:GrGLGpu::HWVertexArrayState::bindInternalVertexArray\28GrGLGpu*\2c\20GrBuffer\20const*\29 4157:GrGLFunction::GrGLFunction\28void\20\28*\29\28unsigned\20int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20char\2c\20int\2c\20void\20const*\29\29::'lambda'\28void\20const*\2c\20unsigned\20int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20char\2c\20int\2c\20void\20const*\29::__invoke\28void\20const*\2c\20unsigned\20int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20char\2c\20int\2c\20void\20const*\29 4158:GrGLFunction::GrGLFunction\28void\20\28*\29\28unsigned\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\29\29::'lambda'\28void\20const*\2c\20unsigned\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\29::__invoke\28void\20const*\2c\20unsigned\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\29 4159:GrGLFunction::GrGLFunction\28void\20\28*\29\28int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void*\29\29::'lambda'\28void\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void*\29::__invoke\28void\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void*\29 4160:GrGLFunction::GrGLFunction\28unsigned\20char\20const*\20\28*\29\28unsigned\20int\2c\20unsigned\20int\29\29::'lambda'\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int\29::__invoke\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int\29 4161:GrGLContextInfo::~GrGLContextInfo\28\29 4162:GrGLCaps::getRenderTargetSampleCount\28int\2c\20GrGLFormat\29\20const 4163:GrGLCaps::canCopyAsDraw\28GrGLFormat\2c\20bool\2c\20bool\29\20const 4164:GrGLBuffer::~GrGLBuffer\28\29 4165:GrGLBuffer::Make\28GrGLGpu*\2c\20unsigned\20long\2c\20GrGpuBufferType\2c\20GrAccessPattern\29 4166:GrGLBackendTextureData::GrGLBackendTextureData\28GrGLTextureInfo\20const&\2c\20sk_sp\29 4167:GrGLAttribArrayState::invalidate\28\29 4168:GrGLAttribArrayState::enableVertexArrays\28GrGLGpu\20const*\2c\20int\2c\20GrPrimitiveRestart\29 4169:GrGLAttachment::GrGLAttachment\28GrGpu*\2c\20unsigned\20int\2c\20SkISize\2c\20GrAttachment::UsageFlags\2c\20int\2c\20GrGLFormat\2c\20std::__2::basic_string_view>\29 4170:GrFragmentProcessors::make_effect_fp\28sk_sp\2c\20char\20const*\2c\20sk_sp\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20SkSpan\2c\20GrFPArgs\20const&\29 4171:GrFragmentProcessors::IsSupported\28SkMaskFilter\20const*\29 4172:GrFragmentProcessor::makeProgramImpl\28\29\20const 4173:GrFragmentProcessor::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 4174:GrFragmentProcessor::ProgramImpl::~ProgramImpl\28\29 4175:GrFragmentProcessor::MulInputByChildAlpha\28std::__2::unique_ptr>\29 4176:GrFragmentProcessor::HighPrecision\28std::__2::unique_ptr>\29::HighPrecisionFragmentProcessor::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 4177:GrFragmentProcessor::DeviceSpace\28std::__2::unique_ptr>\29 4178:GrEagerDynamicVertexAllocator::lock\28unsigned\20long\2c\20int\29 4179:GrDynamicAtlas::makeNode\28GrDynamicAtlas::Node*\2c\20int\2c\20int\2c\20int\2c\20int\29 4180:GrDstProxyView::GrDstProxyView\28GrDstProxyView\20const&\29 4181:GrDrawingManager::setLastRenderTask\28GrSurfaceProxy\20const*\2c\20GrRenderTask*\29 4182:GrDrawingManager::removeRenderTasks\28\29 4183:GrDrawingManager::insertTaskBeforeLast\28sk_sp\29 4184:GrDrawingManager::flushSurfaces\28SkSpan\2c\20SkSurfaces::BackendSurfaceAccess\2c\20GrFlushInfo\20const&\2c\20skgpu::MutableTextureState\20const*\29 4185:GrDrawOpAtlas::makeMRU\28skgpu::Plot*\2c\20unsigned\20int\29 4186:GrDefaultGeoProcFactory::MakeForDeviceSpace\28SkArenaAlloc*\2c\20GrDefaultGeoProcFactory::Color\20const&\2c\20GrDefaultGeoProcFactory::Coverage\20const&\2c\20GrDefaultGeoProcFactory::LocalCoords\20const&\2c\20SkMatrix\20const&\29 4187:GrCpuVertexAllocator::~GrCpuVertexAllocator\28\29 4188:GrColorTypeClampType\28GrColorType\29 4189:GrColorSpaceXform::Equals\28GrColorSpaceXform\20const*\2c\20GrColorSpaceXform\20const*\29 4190:GrBufferAllocPool::unmap\28\29 4191:GrBufferAllocPool::reset\28\29 4192:GrBlurUtils::extract_draw_rect_from_data\28SkData*\2c\20SkIRect\20const&\29 4193:GrBlurUtils::create_integral_table\28float\2c\20SkBitmap*\29 4194:GrBlurUtils::can_filter_mask\28SkMaskFilterBase\20const*\2c\20GrStyledShape\20const&\2c\20SkIRect\20const&\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkIRect*\29 4195:GrBicubicEffect::MakeSubset\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkMatrix\20const&\2c\20GrSamplerState::WrapMode\2c\20GrSamplerState::WrapMode\2c\20SkRect\20const&\2c\20SkCubicResampler\2c\20GrBicubicEffect::Direction\2c\20GrCaps\20const&\29 4196:GrBicubicEffect::GrBicubicEffect\28std::__2::unique_ptr>\2c\20SkCubicResampler\2c\20GrBicubicEffect::Direction\2c\20GrBicubicEffect::Clamp\29 4197:GrBackendTextures::MakeGL\28int\2c\20int\2c\20skgpu::Mipmapped\2c\20GrGLTextureInfo\20const&\2c\20sk_sp\2c\20std::__2::basic_string_view>\29 4198:GrBackendFormatStencilBits\28GrBackendFormat\20const&\29 4199:GrBackendFormat::operator==\28GrBackendFormat\20const&\29\20const 4200:GrAtlasManager::resolveMaskFormat\28skgpu::MaskFormat\29\20const 4201:GrAATriangulator::~GrAATriangulator\28\29 4202:GrAATriangulator::makeEvent\28GrAATriangulator::SSEdge*\2c\20GrAATriangulator::EventList*\29\20const 4203:GrAATriangulator::connectSSEdge\28GrTriangulator::Vertex*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::Comparator\20const&\29 4204:GrAAConvexTessellator::terminate\28GrAAConvexTessellator::Ring\20const&\29 4205:GrAAConvexTessellator::computePtAlongBisector\28int\2c\20SkPoint\20const&\2c\20int\2c\20float\2c\20SkPoint*\29\20const 4206:GrAAConvexTessellator::computeNormals\28\29::$_0::operator\28\29\28SkPoint\29\20const 4207:GrAAConvexTessellator::CandidateVerts::originatingIdx\28int\29\20const 4208:GrAAConvexTessellator::CandidateVerts::fuseWithPrior\28int\29 4209:GrAAConvexTessellator::CandidateVerts::addNewPt\28SkPoint\20const&\2c\20int\2c\20int\2c\20bool\29 4210:FT_Stream_Free 4211:FT_Set_Transform 4212:FT_Set_Char_Size 4213:FT_Select_Metrics 4214:FT_Request_Metrics 4215:FT_List_Finalize 4216:FT_Hypot 4217:FT_GlyphLoader_CreateExtra 4218:FT_GlyphLoader_Adjust_Points 4219:FT_Get_Paint 4220:FT_Get_MM_Var 4221:FT_Get_Color_Glyph_Paint 4222:FT_Activate_Size 4223:EllipticalRRectOp::~EllipticalRRectOp\28\29 4224:EdgeLT::operator\28\29\28Edge\20const&\2c\20Edge\20const&\29\20const 4225:DAffineMatrix::mapPoint\28\28anonymous\20namespace\29::DPoint\20const&\29\20const 4226:DAffineMatrix::mapPoint\28SkPoint\20const&\29\20const 4227:Cr_z_inflate_table 4228:Compute_Point_Displacement 4229:CircularRRectOp::~CircularRRectOp\28\29 4230:CFF::cff_stack_t::push\28\29 4231:CFF::arg_stack_t::pop_int\28\29 4232:CFF::CFFIndex>::get_size\28\29\20const 4233:Bounder::Bounder\28SkRect\20const&\2c\20SkPaint\20const&\29 4234:BlockIndexIterator::Last\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::First\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::Decrement\28SkBlockAllocator::Block\20const*\2c\20int\29\2c\20&SkTBlockList::GetItem\28SkBlockAllocator::Block*\2c\20int\29>::Item::operator++\28\29 4235:ActiveEdgeList::DoubleRotation\28ActiveEdge*\2c\20int\29 4236:AAT::kerxTupleKern\28int\2c\20unsigned\20int\2c\20void\20const*\2c\20AAT::hb_aat_apply_context_t*\29 4237:AAT::feat::get_feature\28hb_aat_layout_feature_type_t\29\20const 4238:AAT::StateTable::sanitize\28hb_sanitize_context_t*\2c\20unsigned\20int*\29\20const 4239:AAT::StateTable::get_class\28unsigned\20int\2c\20unsigned\20int\29\20const 4240:AAT::StateTable::get_entry\28int\2c\20unsigned\20int\29\20const 4241:AAT::Lookup::sanitize\28hb_sanitize_context_t*\29\20const 4242:AAT::ClassTable>::get_class\28unsigned\20int\2c\20unsigned\20int\29\20const 4243:zeroinfnan 4244:zero_mark_widths_by_gdef\28hb_buffer_t*\2c\20bool\29 4245:xyzd50_to_lab\28SkRGBA4f<\28SkAlphaType\292>\2c\20bool*\29 4246:xyz_almost_equal\28skcms_Matrix3x3\20const&\2c\20skcms_Matrix3x3\20const&\29 4247:write_vertex_position\28GrGLSLVertexBuilder*\2c\20GrGLSLUniformHandler*\2c\20GrShaderCaps\20const&\2c\20GrShaderVar\20const&\2c\20SkMatrix\20const&\2c\20char\20const*\2c\20GrShaderVar*\2c\20GrResourceHandle*\29 4248:write_passthrough_vertex_position\28GrGLSLVertexBuilder*\2c\20GrShaderVar\20const&\2c\20GrShaderVar*\29 4249:winding_mono_quad\28SkPoint\20const*\2c\20float\2c\20float\2c\20int*\29 4250:winding_mono_conic\28SkConic\20const&\2c\20float\2c\20float\2c\20int*\29 4251:wctomb 4252:wchar_t*\20std::__2::copy\5babi:v160004\5d\2c\20wchar_t*>\28std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\2c\20wchar_t*\29 4253:walk_simple_edges\28SkEdge*\2c\20SkBlitter*\2c\20int\2c\20int\29 4254:vsscanf 4255:void\20std::__2::allocator_traits>::construct\5babi:v160004\5d\28std::__2::__sso_allocator&\2c\20std::__2::locale::facet**\29 4256:void\20std::__2::allocator::construct\5babi:v160004\5d&\2c\20SkSpan&\2c\20SkSpan&\2c\20SkSpan&\2c\20SkSpan&>\28sktext::GlyphRun*\2c\20SkFont\20const&\2c\20SkSpan&\2c\20SkSpan&\2c\20SkSpan&\2c\20SkSpan&\2c\20SkSpan&\29 4257:void\20std::__2::allocator::construct\5babi:v160004\5d\28skia::textlayout::FontFeature*\2c\20SkString\20const&\2c\20int&\29 4258:void\20std::__2::allocator::construct\5babi:v160004\5d\28Contour*\2c\20SkRect&\2c\20int&\2c\20int&\29 4259:void\20std::__2::__variant_detail::__impl\2c\20std::__2::unique_ptr>>::__assign\5babi:v160004\5d<0ul\2c\20sk_sp>\28sk_sp&&\29 4260:void\20std::__2::__variant_detail::__impl::__assign\5babi:v160004\5d<0ul\2c\20SkPaint>\28SkPaint&&\29 4261:void\20std::__2::__variant_detail::__assignment>::__assign_alt\5babi:v160004\5d<0ul\2c\20SkPaint\2c\20SkPaint>\28std::__2::__variant_detail::__alt<0ul\2c\20SkPaint>&\2c\20SkPaint&&\29 4262:void\20std::__2::__tree_right_rotate\5babi:v160004\5d*>\28std::__2::__tree_node_base*\29 4263:void\20std::__2::__tree_left_rotate\5babi:v160004\5d*>\28std::__2::__tree_node_base*\29 4264:void\20std::__2::__stable_sort_move\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::'lambda'\28\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\29&\2c\20std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>\28std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>\2c\20std::__2::__wrap_iter<\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::'lambda'\28\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\2c\20\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop\20const&\29&\2c\20std::__2::iterator_traits\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>::difference_type\2c\20std::__2::iterator_traits\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29::$_0::operator\28\29\28FT_ColorStopIterator_\20const&\2c\20std::__2::vector>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29\20const::ColorStop*>>::value_type*\29 4265:void\20std::__2::__sift_up\5babi:v160004\5d*>>\28std::__2::__wrap_iter*>\2c\20std::__2::__wrap_iter*>\2c\20GrGeometryProcessor::ProgramImpl::emitTransformCode\28GrGLSLVertexBuilder*\2c\20GrGLSLUniformHandler*\29::$_0&\2c\20std::__2::iterator_traits*>>::difference_type\29 4266:void\20std::__2::__sift_up\5babi:v160004\5d>\28std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\2c\20GrAATriangulator::EventComparator&\2c\20std::__2::iterator_traits>::difference_type\29 4267:void\20std::__2::__optional_storage_base::__construct\5babi:v160004\5d\28skia::textlayout::FontArguments\20const&\29 4268:void\20std::__2::__optional_storage_base::__assign_from\5babi:v160004\5d\20const&>\28std::__2::__optional_copy_assign_base\20const&\29 4269:void\20std::__2::__optional_storage_base::__construct\5babi:v160004\5d\28SkPath\20const&\29 4270:void\20std::__2::__memberwise_forward_assign\5babi:v160004\5d&\2c\20int&>\2c\20std::__2::tuple\2c\20unsigned\20long>\2c\20sk_sp\2c\20unsigned\20long\2c\200ul\2c\201ul>\28std::__2::tuple&\2c\20int&>&\2c\20std::__2::tuple\2c\20unsigned\20long>&&\2c\20std::__2::__tuple_types\2c\20unsigned\20long>\2c\20std::__2::__tuple_indices<0ul\2c\201ul>\29 4271:void\20std::__2::__memberwise_forward_assign\5babi:v160004\5d&>\2c\20std::__2::tuple>\2c\20GrSurfaceProxyView\2c\20sk_sp\2c\200ul\2c\201ul>\28std::__2::tuple&>&\2c\20std::__2::tuple>&&\2c\20std::__2::__tuple_types>\2c\20std::__2::__tuple_indices<0ul\2c\201ul>\29 4272:void\20std::__2::__double_or_nothing\5babi:v160004\5d\28std::__2::unique_ptr&\2c\20char*&\2c\20char*&\29 4273:void\20sorted_merge<&sweep_lt_vert\28SkPoint\20const&\2c\20SkPoint\20const&\29>\28GrTriangulator::VertexList*\2c\20GrTriangulator::VertexList*\2c\20GrTriangulator::VertexList*\29 4274:void\20sorted_merge<&sweep_lt_horiz\28SkPoint\20const&\2c\20SkPoint\20const&\29>\28GrTriangulator::VertexList*\2c\20GrTriangulator::VertexList*\2c\20GrTriangulator::VertexList*\29 4275:void\20sort_r_simple\28void*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20int\20\28*\29\28void\20const*\2c\20void\20const*\2c\20void*\29\2c\20void*\29 4276:void\20sktext::gpu::fillDirectClipped\28SkZip\2c\20unsigned\20int\2c\20SkPoint\2c\20SkIRect*\29 4277:void\20skgpu::ganesh::SurfaceFillContext::clearAtLeast<\28SkAlphaType\292>\28SkIRect\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\29 4278:void\20portable::memsetT\28unsigned\20short*\2c\20unsigned\20short\2c\20int\29 4279:void\20portable::memsetT\28unsigned\20int*\2c\20unsigned\20int\2c\20int\29 4280:void\20hb_sanitize_context_t::set_object>\28OT::KernSubTable\20const*\29 4281:void\20hb_sanitize_context_t::set_object>\28AAT::ChainSubtable\20const*\29 4282:void\20hair_path<\28SkPaint::Cap\292>\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\2c\20void\20\28*\29\28SkPoint\20const*\2c\20int\2c\20SkRegion\20const*\2c\20SkBlitter*\29\29 4283:void\20hair_path<\28SkPaint::Cap\291>\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\2c\20void\20\28*\29\28SkPoint\20const*\2c\20int\2c\20SkRegion\20const*\2c\20SkBlitter*\29\29 4284:void\20hair_path<\28SkPaint::Cap\290>\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\2c\20void\20\28*\29\28SkPoint\20const*\2c\20int\2c\20SkRegion\20const*\2c\20SkBlitter*\29\29 4285:void\20\28anonymous\20namespace\29::copyFT2LCD16\28FT_Bitmap_\20const&\2c\20SkMaskBuilder*\2c\20int\2c\20unsigned\20char\20const*\2c\20unsigned\20char\20const*\2c\20unsigned\20char\20const*\29 4286:void\20SkTQSort\28double*\2c\20double*\29 4287:void\20SkTIntroSort\28int\2c\20int*\2c\20int\2c\20DistanceLessThan\20const&\29 4288:void\20SkTIntroSort\28float*\2c\20float*\29::'lambda'\28float\20const&\2c\20float\20const&\29>\28int\2c\20float*\2c\20int\2c\20void\20SkTQSort\28float*\2c\20float*\29::'lambda'\28float\20const&\2c\20float\20const&\29\20const&\29 4289:void\20SkTIntroSort\28double*\2c\20double*\29::'lambda'\28double\20const&\2c\20double\20const&\29>\28int\2c\20double*\2c\20int\2c\20void\20SkTQSort\28double*\2c\20double*\29::'lambda'\28double\20const&\2c\20double\20const&\29\20const&\29 4290:void\20SkTIntroSort\28int\2c\20SkString*\2c\20int\2c\20bool\20\20const\28&\29\28SkString\20const&\2c\20SkString\20const&\29\29 4291:void\20SkTIntroSort\28int\2c\20SkOpRayHit**\2c\20int\2c\20bool\20\20const\28&\29\28SkOpRayHit\20const*\2c\20SkOpRayHit\20const*\29\29 4292:void\20SkTIntroSort\28SkOpContour**\2c\20SkOpContour**\29::'lambda'\28SkOpContour\20const*\2c\20SkOpContour\20const*\29>\28int\2c\20SkOpContour*\2c\20int\2c\20void\20SkTQSort\28SkOpContour**\2c\20SkOpContour**\29::'lambda'\28SkOpContour\20const*\2c\20SkOpContour\20const*\29\20const&\29 4293:void\20SkTIntroSort\28SkEdge**\2c\20SkEdge**\29::'lambda'\28SkEdge\20const*\2c\20SkEdge\20const*\29>\28int\2c\20SkEdge*\2c\20int\2c\20void\20SkTQSort\28SkEdge**\2c\20SkEdge**\29::'lambda'\28SkEdge\20const*\2c\20SkEdge\20const*\29\20const&\29 4294:void\20SkTIntroSort\28SkClosestRecord\20const**\2c\20SkClosestRecord\20const**\29::'lambda'\28SkClosestRecord\20const*\2c\20SkClosestRecord\20const*\29>\28int\2c\20SkClosestRecord\20const*\2c\20int\2c\20void\20SkTQSort\28SkClosestRecord\20const**\2c\20SkClosestRecord\20const**\29::'lambda'\28SkClosestRecord\20const*\2c\20SkClosestRecord\20const*\29\20const&\29 4295:void\20SkTIntroSort\28SkAnalyticEdge**\2c\20SkAnalyticEdge**\29::'lambda'\28SkAnalyticEdge\20const*\2c\20SkAnalyticEdge\20const*\29>\28int\2c\20SkAnalyticEdge*\2c\20int\2c\20void\20SkTQSort\28SkAnalyticEdge**\2c\20SkAnalyticEdge**\29::'lambda'\28SkAnalyticEdge\20const*\2c\20SkAnalyticEdge\20const*\29\20const&\29 4296:void\20SkTIntroSort\28int\2c\20GrGpuResource**\2c\20int\2c\20bool\20\20const\28&\29\28GrGpuResource*\20const&\2c\20GrGpuResource*\20const&\29\29 4297:void\20SkTIntroSort\28int\2c\20GrGpuResource**\2c\20int\2c\20bool\20\28*\20const&\29\28GrGpuResource*\20const&\2c\20GrGpuResource*\20const&\29\29 4298:void\20SkTIntroSort\28int\2c\20Edge*\2c\20int\2c\20EdgeLT\20const&\29 4299:void\20SkSafeUnref\28GrWindowRectangles::Rec\20const*\29 4300:void\20SkSafeUnref\28GrSurface::RefCntedReleaseProc*\29 4301:void\20SkSafeUnref\28GrBufferAllocPool::CpuBufferCache*\29 4302:void\20SkRecords::FillBounds::trackBounds\28SkRecords::NoOp\20const&\29 4303:void\20GrGeometryProcessor::ProgramImpl::collectTransforms\28GrGLSLVertexBuilder*\2c\20GrGLSLVaryingHandler*\2c\20GrGLSLUniformHandler*\2c\20GrShaderType\2c\20GrShaderVar\20const&\2c\20GrShaderVar\20const&\2c\20GrPipeline\20const&\29::$_0::operator\28\29<$_0>\28$_0&\2c\20GrFragmentProcessor\20const&\2c\20bool\2c\20GrFragmentProcessor\20const*\2c\20int\2c\20GrGeometryProcessor::ProgramImpl::collectTransforms\28GrGLSLVertexBuilder*\2c\20GrGLSLVaryingHandler*\2c\20GrGLSLUniformHandler*\2c\20GrShaderType\2c\20GrShaderVar\20const&\2c\20GrShaderVar\20const&\2c\20GrPipeline\20const&\29::BaseCoord\29 4304:void\20GrGLProgramDataManager::setMatrices<4>\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 4305:void\20GrGLProgramDataManager::setMatrices<3>\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 4306:void\20GrGLProgramDataManager::setMatrices<2>\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 4307:void\20A8_row_aa\28unsigned\20char*\2c\20unsigned\20char\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\20\28*\29\28unsigned\20char\2c\20unsigned\20char\29\2c\20bool\29 4308:virtual\20thunk\20to\20GrGLTexture::onSetLabel\28\29 4309:virtual\20thunk\20to\20GrGLTexture::backendFormat\28\29\20const 4310:vfiprintf 4311:validate_texel_levels\28SkISize\2c\20GrColorType\2c\20GrMipLevel\20const*\2c\20int\2c\20GrCaps\20const*\29 4312:valid_divs\28int\20const*\2c\20int\2c\20int\2c\20int\29 4313:utf8_byte_type\28unsigned\20char\29 4314:use_tiled_rendering\28GrGLCaps\20const&\2c\20GrOpsRenderPass::StencilLoadAndStoreInfo\20const&\29 4315:uprv_realloc_skia 4316:update_edge\28SkEdge*\2c\20int\29 4317:unsigned\20short\20std::__2::__num_get_unsigned_integral\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\2c\20int\29 4318:unsigned\20short\20sk_saturate_cast\28float\29 4319:unsigned\20long\20long\20std::__2::__num_get_unsigned_integral\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\2c\20int\29 4320:unsigned\20long&\20std::__2::vector>::emplace_back\28unsigned\20long&\29 4321:unsigned\20int\20std::__2::__num_get_unsigned_integral\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\2c\20int\29 4322:unsigned\20int\20const*\20std::__2::lower_bound\5babi:v160004\5d\28unsigned\20int\20const*\2c\20unsigned\20int\20const*\2c\20unsigned\20long\20const&\29 4323:unsigned\20int*\20hb_vector_t::push\28unsigned\20int&\29 4324:unsigned\20char\20pack_distance_field_val<4>\28float\29 4325:ubidi_getVisualRun_skia 4326:ubidi_countRuns_skia 4327:ubidi_close_skia 4328:u_terminateUChars_skia 4329:u_charType_skia 4330:u8_lerp\28unsigned\20char\2c\20unsigned\20char\2c\20unsigned\20char\29 4331:tt_size_select 4332:tt_size_run_prep 4333:tt_size_done_bytecode 4334:tt_sbit_decoder_load_image 4335:tt_prepare_zone 4336:tt_loader_set_pp 4337:tt_loader_init 4338:tt_loader_done 4339:tt_hvadvance_adjust 4340:tt_face_vary_cvt 4341:tt_face_palette_set 4342:tt_face_load_generic_header 4343:tt_face_load_cvt 4344:tt_face_goto_table 4345:tt_face_get_metrics 4346:tt_done_blend 4347:tt_cmap4_set_range 4348:tt_cmap4_next 4349:tt_cmap4_char_map_linear 4350:tt_cmap4_char_map_binary 4351:tt_cmap2_get_subheader 4352:tt_cmap14_get_nondef_chars 4353:tt_cmap14_get_def_chars 4354:tt_cmap14_def_char_count 4355:tt_cmap13_next 4356:tt_cmap13_init 4357:tt_cmap13_char_map_binary 4358:tt_cmap12_next 4359:tt_cmap12_char_map_binary 4360:tt_apply_mvar 4361:top_collinear\28GrTriangulator::Edge*\2c\20GrTriangulator::Edge*\29 4362:throw_on_failure\28unsigned\20long\2c\20void*\29 4363:thai_pua_shape\28unsigned\20int\2c\20thai_action_t\2c\20hb_font_t*\29 4364:t1_lookup_glyph_by_stdcharcode_ps 4365:t1_cmap_std_init 4366:t1_cmap_std_char_index 4367:t1_builder_init 4368:t1_builder_close_contour 4369:t1_builder_add_point1 4370:t1_builder_add_point 4371:t1_builder_add_contour 4372:sweep_lt_vert\28SkPoint\20const&\2c\20SkPoint\20const&\29 4373:sweep_lt_horiz\28SkPoint\20const&\2c\20SkPoint\20const&\29 4374:surface_setCallbackHandler 4375:surface_getThreadId 4376:strutStyle_setFontSize 4377:strtox.9261 4378:strtoull 4379:strtoll_l 4380:strspn 4381:strncpy 4382:strcspn 4383:store_int 4384:std::logic_error::~logic_error\28\29 4385:std::logic_error::logic_error\28char\20const*\29 4386:std::exception::exception\5babi:v160004\5d\28\29 4387:std::__2::vector>::operator=\5babi:v160004\5d\28std::__2::vector>\20const&\29 4388:std::__2::vector>::__vdeallocate\28\29 4389:std::__2::vector>::__move_assign\28std::__2::vector>&\2c\20std::__2::integral_constant\29 4390:std::__2::vector>\2c\20std::__2::allocator>>>::__base_destruct_at_end\5babi:v160004\5d\28std::__2::unique_ptr>*\29 4391:std::__2::vector\2c\20std::__2::allocator>>::__base_destruct_at_end\5babi:v160004\5d\28std::__2::tuple*\29 4392:std::__2::vector>::max_size\28\29\20const 4393:std::__2::vector>::capacity\5babi:v160004\5d\28\29\20const 4394:std::__2::vector>::__construct_at_end\28unsigned\20long\29 4395:std::__2::vector>::__clear\5babi:v160004\5d\28\29 4396:std::__2::vector>::__base_destruct_at_end\5babi:v160004\5d\28std::__2::locale::facet**\29 4397:std::__2::vector\2c\20std::__2::allocator>\2c\20std::__2::allocator\2c\20std::__2::allocator>>>::__clear\5babi:v160004\5d\28\29 4398:std::__2::vector>::__clear\5babi:v160004\5d\28\29 4399:std::__2::vector>::vector\28std::__2::vector>\20const&\29 4400:std::__2::vector>::__vallocate\5babi:v160004\5d\28unsigned\20long\29 4401:std::__2::vector>::~vector\5babi:v160004\5d\28\29 4402:std::__2::vector>::__swap_out_circular_buffer\28std::__2::__split_buffer&>&\29 4403:std::__2::vector>::operator=\5babi:v160004\5d\28std::__2::vector>\20const&\29 4404:std::__2::vector>::__clear\5babi:v160004\5d\28\29 4405:std::__2::vector>::__base_destruct_at_end\5babi:v160004\5d\28skia::textlayout::FontFeature*\29 4406:std::__2::vector\2c\20std::__2::allocator>>::vector\28std::__2::vector\2c\20std::__2::allocator>>\20const&\29 4407:std::__2::vector>::insert\28std::__2::__wrap_iter\2c\20float&&\29 4408:std::__2::vector>::__construct_at_end\28unsigned\20long\29 4409:std::__2::vector>::__vallocate\5babi:v160004\5d\28unsigned\20long\29 4410:std::__2::vector>::__swap_out_circular_buffer\28std::__2::__split_buffer&>&\29 4411:std::__2::vector>::vector\5babi:v160004\5d\28std::initializer_list\29 4412:std::__2::vector>::reserve\28unsigned\20long\29 4413:std::__2::vector>::operator=\5babi:v160004\5d\28std::__2::vector>\20const&\29 4414:std::__2::vector>::__vdeallocate\28\29 4415:std::__2::vector>::__destroy_vector::operator\28\29\5babi:v160004\5d\28\29 4416:std::__2::vector>::__clear\5babi:v160004\5d\28\29 4417:std::__2::vector>::__base_destruct_at_end\5babi:v160004\5d\28SkString*\29 4418:std::__2::vector>::push_back\5babi:v160004\5d\28SkSL::TraceInfo&&\29 4419:std::__2::vector>::push_back\5babi:v160004\5d\28SkSL::SymbolTable*\20const&\29 4420:std::__2::vector>::~vector\5babi:v160004\5d\28\29 4421:std::__2::vector>::__swap_out_circular_buffer\28std::__2::__split_buffer&>&\29 4422:std::__2::vector>::__swap_out_circular_buffer\28std::__2::__split_buffer&>&\2c\20SkSL::ProgramElement\20const**\29 4423:std::__2::vector>::__move_range\28SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\29 4424:std::__2::vector>::erase\28std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\29 4425:std::__2::vector>::push_back\5babi:v160004\5d\28SkRuntimeEffect::Uniform&&\29 4426:std::__2::vector>::push_back\5babi:v160004\5d\28SkRuntimeEffect::Child&&\29 4427:std::__2::vector>::__vallocate\5babi:v160004\5d\28unsigned\20long\29 4428:std::__2::vector>::__destroy_vector::operator\28\29\5babi:v160004\5d\28\29 4429:std::__2::vector>::reserve\28unsigned\20long\29 4430:std::__2::vector>::__swap_out_circular_buffer\28std::__2::__split_buffer&>&\29 4431:std::__2::vector\2c\20std::__2::allocator>>::__swap_out_circular_buffer\28std::__2::__split_buffer\2c\20std::__2::allocator>&>&\29 4432:std::__2::vector>::~vector\5babi:v160004\5d\28\29 4433:std::__2::vector>::push_back\5babi:v160004\5d\28SkMeshSpecification::Varying&&\29 4434:std::__2::vector>::~vector\5babi:v160004\5d\28\29 4435:std::__2::vector>::reserve\28unsigned\20long\29 4436:std::__2::vector>::__swap_out_circular_buffer\28std::__2::__split_buffer&>&\29 4437:std::__2::vector>::__vallocate\5babi:v160004\5d\28unsigned\20long\29 4438:std::__2::vector>::__clear\5babi:v160004\5d\28\29 4439:std::__2::unique_ptr::unique_ptr\5babi:v160004\5d\28unsigned\20char*\2c\20std::__2::__dependent_type\2c\20true>::__good_rval_ref_type\29 4440:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4441:std::__2::unique_ptr>::reset\5babi:v160004\5d\28sktext::gpu::TextBlobRedrawCoordinator*\29 4442:std::__2::unique_ptr::~unique_ptr\5babi:v160004\5d\28\29 4443:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4444:std::__2::unique_ptr>::reset\5babi:v160004\5d\28sktext::gpu::SubRunAllocator*\29 4445:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4446:std::__2::unique_ptr>::reset\5babi:v160004\5d\28sktext::gpu::StrikeCache*\29 4447:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4448:std::__2::unique_ptr>::reset\5babi:v160004\5d\28sktext::GlyphRunBuilder*\29 4449:std::__2::unique_ptr\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair\2c\20skia::textlayout::OneLineShaper::FontKey\2c\20skia_private::THashMap\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair\2c\20skia::textlayout::OneLineShaper::FontKey\2c\20skia_private::THashMap\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair>::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 4450:std::__2::unique_ptr\2c\20SkGoodHash>::Pair\2c\20int\2c\20skia_private::THashMap\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete\2c\20SkGoodHash>::Pair\2c\20int\2c\20skia_private::THashMap\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 4451:std::__2::unique_ptr\2c\20SkGoodHash>::Pair\2c\20SkString\2c\20skia_private::THashMap\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete\2c\20SkGoodHash>::Pair\2c\20SkString\2c\20skia_private::THashMap\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 4452:std::__2::unique_ptr>\2c\20SkGoodHash>::Pair\2c\20SkSL::Variable\20const*\2c\20skia_private::THashMap>\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete>\2c\20SkGoodHash>::Pair\2c\20SkSL::Variable\20const*\2c\20skia_private::THashMap>\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 4453:std::__2::unique_ptr::Pair\2c\20SkPath\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete::Pair\2c\20SkPath\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 4454:std::__2::unique_ptr>\2c\20SkGoodHash>::Pair\2c\20SkImageFilter\20const*\2c\20skia_private::THashMap>\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete>\2c\20SkGoodHash>::Pair\2c\20SkImageFilter\20const*\2c\20skia_private::THashMap>\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 4455:std::__2::unique_ptr\2c\20SkDescriptor\2c\20SkStrikeCache::StrikeTraits>::Slot\20\5b\5d\2c\20std::__2::default_delete\2c\20SkDescriptor\2c\20SkStrikeCache::StrikeTraits>::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 4456:std::__2::unique_ptr::AdaptedTraits>::Slot\20\5b\5d\2c\20std::__2::default_delete::AdaptedTraits>::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 4457:std::__2::unique_ptr::Slot\20\5b\5d\2c\20std::__2::default_delete::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 4458:std::__2::unique_ptr\2c\20std::__2::default_delete>>::reset\5babi:v160004\5d\28skia_private::TArray*\29 4459:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4460:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4461:std::__2::unique_ptr>::reset\5babi:v160004\5d\28skgpu::ganesh::SmallPathAtlasMgr*\29 4462:std::__2::unique_ptr\20\5b\5d\2c\20std::__2::default_delete\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 4463:std::__2::unique_ptr\20\5b\5d\2c\20std::__2::default_delete\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 4464:std::__2::unique_ptr>::reset\5babi:v160004\5d\28hb_font_t*\29 4465:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4466:std::__2::unique_ptr>::reset\5babi:v160004\5d\28hb_blob_t*\29 4467:std::__2::unique_ptr::operator=\5babi:v160004\5d\28std::__2::unique_ptr&&\29 4468:std::__2::unique_ptr<\28anonymous\20namespace\29::SoftwarePathData\2c\20std::__2::default_delete<\28anonymous\20namespace\29::SoftwarePathData>>::reset\5babi:v160004\5d\28\28anonymous\20namespace\29::SoftwarePathData*\29 4469:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4470:std::__2::unique_ptr>::reset\5babi:v160004\5d\28SkTaskGroup*\29 4471:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4472:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4473:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4474:std::__2::unique_ptr>::reset\5babi:v160004\5d\28SkSL::RP::Program*\29 4475:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4476:std::__2::unique_ptr>::reset\5babi:v160004\5d\28SkSL::Program*\29 4477:std::__2::unique_ptr>::reset\5babi:v160004\5d\28SkSL::ProgramUsage*\29 4478:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4479:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4480:std::__2::unique_ptr>::reset\5babi:v160004\5d\28SkSL::MemoryPool*\29 4481:std::__2::unique_ptr>\20SkSL::coalesce_vector\28std::__2::array\20const&\2c\20double\2c\20SkSL::Type\20const&\2c\20double\20\28*\29\28double\2c\20double\2c\20double\29\2c\20double\20\28*\29\28double\29\29 4482:std::__2::unique_ptr>\20SkSL::coalesce_pairwise_vectors\28std::__2::array\20const&\2c\20double\2c\20SkSL::Type\20const&\2c\20double\20\28*\29\28double\2c\20double\2c\20double\29\2c\20double\20\28*\29\28double\29\29 4483:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4484:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4485:std::__2::unique_ptr>::reset\5babi:v160004\5d\28SkRecorder*\29 4486:std::__2::unique_ptr>::reset\5babi:v160004\5d\28SkLatticeIter*\29 4487:std::__2::unique_ptr>::reset\5babi:v160004\5d\28SkCanvas::Layer*\29 4488:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4489:std::__2::unique_ptr>::reset\5babi:v160004\5d\28SkCanvas::BackImage*\29 4490:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4491:std::__2::unique_ptr>::reset\5babi:v160004\5d\28SkArenaAlloc*\29 4492:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4493:std::__2::unique_ptr>::reset\5babi:v160004\5d\28GrThreadSafeCache*\29 4494:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4495:std::__2::unique_ptr>::reset\5babi:v160004\5d\28GrResourceProvider*\29 4496:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4497:std::__2::unique_ptr>::reset\5babi:v160004\5d\28GrResourceCache*\29 4498:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4499:std::__2::unique_ptr>::reset\5babi:v160004\5d\28GrProxyProvider*\29 4500:std::__2::unique_ptr>\20GrOp::Make\28GrRecordingContext*\2c\20skgpu::ganesh::AtlasTextOp::MaskType&&\2c\20bool&&\2c\20int&&\2c\20SkRect&\2c\20skgpu::ganesh::AtlasTextOp::Geometry*&\2c\20GrColorInfo\20const&\2c\20GrPaint&&\29 4501:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4502:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4503:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4504:std::__2::unique_ptr>::~unique_ptr\5babi:v160004\5d\28\29 4505:std::__2::unique_ptr>::reset\5babi:v160004\5d\28GrAuditTrail::OpNode*\29 4506:std::__2::unique_ptr>::reset\5babi:v160004\5d\28FT_SizeRec_*\29 4507:std::__2::tuple::tuple\5babi:v160004\5d\28std::__2::\28anonymous\20namespace\29::__fake_bind&&\29 4508:std::__2::tuple\2c\20int\2c\20sktext::gpu::SubRunAllocator>\20sktext::gpu::SubRunAllocator::AllocateClassMemoryAndArena\28int\29::'lambda0'\28\29::operator\28\29\28\29\20const 4509:std::__2::tuple\2c\20int\2c\20sktext::gpu::SubRunAllocator>\20sktext::gpu::SubRunAllocator::AllocateClassMemoryAndArena\28int\29::'lambda'\28\29::operator\28\29\28\29\20const 4510:std::__2::tuple&\20std::__2::tuple::operator=\5babi:v160004\5d\28std::__2::pair&&\29 4511:std::__2::to_string\28unsigned\20long\29 4512:std::__2::to_chars_result\20std::__2::__to_chars_itoa\5babi:v160004\5d\28char*\2c\20char*\2c\20unsigned\20int\2c\20std::__2::integral_constant\29 4513:std::__2::time_put>>::~time_put\28\29.1 4514:std::__2::time_get>>::__get_year\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const 4515:std::__2::time_get>>::__get_weekdayname\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const 4516:std::__2::time_get>>::__get_monthname\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const 4517:std::__2::time_get>>::__get_year\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const 4518:std::__2::time_get>>::__get_weekdayname\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const 4519:std::__2::time_get>>::__get_monthname\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const 4520:std::__2::shared_ptr::operator=\5babi:v160004\5d\28std::__2::shared_ptr&&\29 4521:std::__2::reverse_iterator::operator++\5babi:v160004\5d\28\29 4522:std::__2::priority_queue>\2c\20GrAATriangulator::EventComparator>::push\28GrAATriangulator::Event*\20const&\29 4523:std::__2::pair::pair\28std::__2::pair&&\29 4524:std::__2::pair>::~pair\28\29 4525:std::__2::pair\2c\20std::__2::allocator>>>::~pair\28\29 4526:std::__2::pair\20std::__2::__copy\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20char*\29 4527:std::__2::pair::pair\5babi:v160004\5d\28char\20const*&&\2c\20char*&&\29 4528:std::__2::pair>::~pair\28\29 4529:std::__2::ostreambuf_iterator>::operator=\5babi:v160004\5d\28wchar_t\29 4530:std::__2::ostreambuf_iterator>::operator=\5babi:v160004\5d\28char\29 4531:std::__2::optional&\20std::__2::optional::operator=\5babi:v160004\5d\28SkPath\20const&\29 4532:std::__2::optional::value\5babi:v160004\5d\28\29\20& 4533:std::__2::optional::value\5babi:v160004\5d\28\29\20& 4534:std::__2::numpunct::~numpunct\28\29.1 4535:std::__2::numpunct::~numpunct\28\29.1 4536:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20int&\29\20const 4537:std::__2::num_get>>\20const&\20std::__2::use_facet\5babi:v160004\5d>>>\28std::__2::locale\20const&\29 4538:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20int&\29\20const 4539:std::__2::moneypunct\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 4540:std::__2::moneypunct\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 4541:std::__2::moneypunct::do_negative_sign\28\29\20const 4542:std::__2::moneypunct\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 4543:std::__2::moneypunct\20const&\20std::__2::use_facet\5babi:v160004\5d>\28std::__2::locale\20const&\29 4544:std::__2::moneypunct::do_negative_sign\28\29\20const 4545:std::__2::money_get>>::__do_get\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::locale\20const&\2c\20unsigned\20int\2c\20unsigned\20int&\2c\20bool&\2c\20std::__2::ctype\20const&\2c\20std::__2::unique_ptr&\2c\20wchar_t*&\2c\20wchar_t*\29 4546:std::__2::money_get>>::__do_get\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::locale\20const&\2c\20unsigned\20int\2c\20unsigned\20int&\2c\20bool&\2c\20std::__2::ctype\20const&\2c\20std::__2::unique_ptr&\2c\20char*&\2c\20char*\29 4547:std::__2::locale::operator=\28std::__2::locale\20const&\29 4548:std::__2::locale::__imp::~__imp\28\29.1 4549:std::__2::list>::pop_front\28\29 4550:std::__2::iterator_traits\2c\20std::__2::allocator>\20const*>::difference_type\20std::__2::distance\5babi:v160004\5d\2c\20std::__2::allocator>\20const*>\28std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\29 4551:std::__2::iterator_traits::difference_type\20std::__2::distance\5babi:v160004\5d\28char*\2c\20char*\29 4552:std::__2::iterator_traits::difference_type\20std::__2::__distance\5babi:v160004\5d\28char*\2c\20char*\2c\20std::__2::random_access_iterator_tag\29 4553:std::__2::istreambuf_iterator>::operator++\5babi:v160004\5d\28int\29 4554:std::__2::istreambuf_iterator>::__test_for_eof\5babi:v160004\5d\28\29\20const 4555:std::__2::istreambuf_iterator>::operator++\5babi:v160004\5d\28int\29 4556:std::__2::istreambuf_iterator>::__test_for_eof\5babi:v160004\5d\28\29\20const 4557:std::__2::ios_base::width\5babi:v160004\5d\28long\29 4558:std::__2::ios_base::setstate\5babi:v160004\5d\28unsigned\20int\29 4559:std::__2::ios_base::clear\28unsigned\20int\29 4560:std::__2::ios_base::__call_callbacks\28std::__2::ios_base::event\29 4561:std::__2::hash>::operator\28\29\5babi:v160004\5d\28std::__2::optional\20const&\29\20const 4562:std::__2::function::operator\28\29\28skia::textlayout::ParagraphImpl*\2c\20char\20const*\2c\20bool\29\20const 4563:std::__2::function::operator\28\29\28SkVertices\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\2c\20float\2c\20float\2c\20bool\29\20const 4564:std::__2::function::operator\28\29\28GrTextureProxy*\2c\20SkIRect\2c\20GrColorType\2c\20void\20const*\2c\20unsigned\20long\29\20const 4565:std::__2::forward_list>::push_front\28SkSL::SwitchCase\20const*\20const&\29 4566:std::__2::enable_if::type\20skgpu::tess::PatchWriter\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\294>\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\298>\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\2964>\2c\20skgpu::tess::Optional<\28skgpu::tess::PatchAttribs\2932>\2c\20skgpu::tess::ReplicateLineEndPoints\2c\20skgpu::tess::TrackJoinControlPoints>::writeDeferredStrokePatch\28\29 4567:std::__2::enable_if::value\2c\20SkRuntimeEffectBuilder::BuilderUniform&>::type\20SkRuntimeEffectBuilder::BuilderUniform::operator=\28float\20const&\29 4568:std::__2::enable_if::value\2c\20SkRuntimeEffectBuilder::BuilderUniform&>::type\20SkRuntimeEffectBuilder::BuilderUniform::operator=\28SkV2\20const&\29 4569:std::__2::enable_if>::value\20&&\20sizeof\20\28skia::textlayout::SkRange\29\20!=\204\2c\20unsigned\20int>::type\20SkGoodHash::operator\28\29>\28skia::textlayout::SkRange\20const&\29\20const 4570:std::__2::enable_if::value\20&&\20sizeof\20\28bool\29\20!=\204\2c\20unsigned\20int>::type\20SkGoodHash::operator\28\29\28bool\20const&\29\20const 4571:std::__2::enable_if::value\20&&\20is_move_assignable::value\2c\20void>::type\20std::__2::swap\5babi:v160004\5d\28char&\2c\20char&\29 4572:std::__2::enable_if<__can_be_converted_to_string_view\2c\20std::__2::basic_string_view>>::value\20&&\20!__is_same_uncvref>\2c\20std::__2::basic_string\2c\20std::__2::allocator>>::value\2c\20std::__2::basic_string\2c\20std::__2::allocator>&>::type\20std::__2::basic_string\2c\20std::__2::allocator>::operator+=>>\28std::__2::basic_string_view>\20const&\29 4573:std::__2::enable_if<_CheckArrayPointerConversion::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::Slot*>::value\2c\20void>::type\20std::__2::unique_ptr::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d>>::reset\5babi:v160004\5d::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::Slot*>\28skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::Slot*\29 4574:std::__2::enable_if<_CheckArrayPointerConversion\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair\2c\20skia::textlayout::FontCollection::FamilyKey\2c\20skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair>::Slot*>::value\2c\20void>::type\20std::__2::unique_ptr\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair\2c\20skia::textlayout::FontCollection::FamilyKey\2c\20skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair\2c\20skia::textlayout::FontCollection::FamilyKey\2c\20skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair>::Slot\20\5b\5d>>::reset\5babi:v160004\5d\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair\2c\20skia::textlayout::FontCollection::FamilyKey\2c\20skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair>::Slot*>\28skia_private::THashTable\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair\2c\20skia::textlayout::FontCollection::FamilyKey\2c\20skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair>::Slot*\29 4575:std::__2::enable_if<_CheckArrayPointerConversion>::Pair\2c\20skgpu::ganesh::AtlasPathRenderer::AtlasPathKey\2c\20skia_private::THashMap>::Pair>::Slot*>::value\2c\20void>::type\20std::__2::unique_ptr>::Pair\2c\20skgpu::ganesh::AtlasPathRenderer::AtlasPathKey\2c\20skia_private::THashMap>::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete>::Pair\2c\20skgpu::ganesh::AtlasPathRenderer::AtlasPathKey\2c\20skia_private::THashMap>::Pair>::Slot\20\5b\5d>>::reset\5babi:v160004\5d>::Pair\2c\20skgpu::ganesh::AtlasPathRenderer::AtlasPathKey\2c\20skia_private::THashMap>::Pair>::Slot*>\28skia_private::THashTable>::Pair\2c\20skgpu::ganesh::AtlasPathRenderer::AtlasPathKey\2c\20skia_private::THashMap>::Pair>::Slot*\29 4576:std::__2::enable_if<_CheckArrayPointerConversion::Pair\2c\20skgpu::UniqueKey\2c\20skia_private::THashMap::Pair>::Slot*>::value\2c\20void>::type\20std::__2::unique_ptr::Pair\2c\20skgpu::UniqueKey\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete::Pair\2c\20skgpu::UniqueKey\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d>>::reset\5babi:v160004\5d::Pair\2c\20skgpu::UniqueKey\2c\20skia_private::THashMap::Pair>::Slot*>\28skia_private::THashTable::Pair\2c\20skgpu::UniqueKey\2c\20skia_private::THashMap::Pair>::Slot*\29 4577:std::__2::enable_if<_CheckArrayPointerConversion\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot*>::value\2c\20void>::type\20std::__2::unique_ptr\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot\20\5b\5d\2c\20std::__2::default_delete\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot\20\5b\5d>>::reset\5babi:v160004\5d\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot*>\28skia_private::THashTable\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot*\29 4578:std::__2::deque>::back\28\29 4579:std::__2::deque>::__add_back_capacity\28\29 4580:std::__2::default_delete::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d>::_EnableIfConvertible::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::Slot>::type\20std::__2::default_delete::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d>::operator\28\29\5babi:v160004\5d::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::Slot>\28skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::Slot*\29\20const 4581:std::__2::default_delete>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d>::_EnableIfConvertible>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::Slot>::type\20std::__2::default_delete>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d>::operator\28\29\5babi:v160004\5d>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::Slot>\28skia_private::THashTable>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::Slot*\29\20const 4582:std::__2::default_delete\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair\2c\20skia::textlayout::OneLineShaper::FontKey\2c\20skia_private::THashMap\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair>::Slot\20\5b\5d>::_EnableIfConvertible\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair\2c\20skia::textlayout::OneLineShaper::FontKey\2c\20skia_private::THashMap\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair>::Slot>::type\20std::__2::default_delete\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair\2c\20skia::textlayout::OneLineShaper::FontKey\2c\20skia_private::THashMap\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair>::Slot\20\5b\5d>::operator\28\29\5babi:v160004\5d\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair\2c\20skia::textlayout::OneLineShaper::FontKey\2c\20skia_private::THashMap\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair>::Slot>\28skia_private::THashTable\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair\2c\20skia::textlayout::OneLineShaper::FontKey\2c\20skia_private::THashMap\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair>::Slot*\29\20const 4583:std::__2::default_delete\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair\2c\20skia::textlayout::FontCollection::FamilyKey\2c\20skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair>::Slot\20\5b\5d>::_EnableIfConvertible\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair\2c\20skia::textlayout::FontCollection::FamilyKey\2c\20skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair>::Slot>::type\20std::__2::default_delete\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair\2c\20skia::textlayout::FontCollection::FamilyKey\2c\20skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair>::Slot\20\5b\5d>::operator\28\29\5babi:v160004\5d\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair\2c\20skia::textlayout::FontCollection::FamilyKey\2c\20skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair>::Slot>\28skia_private::THashTable\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair\2c\20skia::textlayout::FontCollection::FamilyKey\2c\20skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair>::Slot*\29\20const 4584:std::__2::default_delete>::Pair\2c\20skgpu::ganesh::AtlasPathRenderer::AtlasPathKey\2c\20skia_private::THashMap>::Pair>::Slot\20\5b\5d>::_EnableIfConvertible>::Pair\2c\20skgpu::ganesh::AtlasPathRenderer::AtlasPathKey\2c\20skia_private::THashMap>::Pair>::Slot>::type\20std::__2::default_delete>::Pair\2c\20skgpu::ganesh::AtlasPathRenderer::AtlasPathKey\2c\20skia_private::THashMap>::Pair>::Slot\20\5b\5d>::operator\28\29\5babi:v160004\5d>::Pair\2c\20skgpu::ganesh::AtlasPathRenderer::AtlasPathKey\2c\20skia_private::THashMap>::Pair>::Slot>\28skia_private::THashTable>::Pair\2c\20skgpu::ganesh::AtlasPathRenderer::AtlasPathKey\2c\20skia_private::THashMap>::Pair>::Slot*\29\20const 4585:std::__2::default_delete::Pair\2c\20skgpu::UniqueKey\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d>::_EnableIfConvertible::Pair\2c\20skgpu::UniqueKey\2c\20skia_private::THashMap::Pair>::Slot>::type\20std::__2::default_delete::Pair\2c\20skgpu::UniqueKey\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d>::operator\28\29\5babi:v160004\5d::Pair\2c\20skgpu::UniqueKey\2c\20skia_private::THashMap::Pair>::Slot>\28skia_private::THashTable::Pair\2c\20skgpu::UniqueKey\2c\20skia_private::THashMap::Pair>::Slot*\29\20const 4586:std::__2::default_delete\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot\20\5b\5d>::_EnableIfConvertible\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot>::type\20std::__2::default_delete\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot\20\5b\5d>::operator\28\29\5babi:v160004\5d\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot>\28skia_private::THashTable\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot*\29\20const 4587:std::__2::default_delete\20\5b\5d>::_EnableIfConvertible>::type\20std::__2::default_delete\20\5b\5d>::operator\28\29\5babi:v160004\5d>\28sk_sp*\29\20const 4588:std::__2::default_delete::_EnableIfConvertible::type\20std::__2::default_delete::operator\28\29\5babi:v160004\5d\28GrGLCaps::ColorTypeInfo*\29\20const 4589:std::__2::ctype::~ctype\28\29.1 4590:std::__2::codecvt::~codecvt\28\29.1 4591:std::__2::codecvt::do_out\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*&\2c\20char*\2c\20char*\2c\20char*&\29\20const 4592:std::__2::codecvt::do_out\28__mbstate_t&\2c\20char32_t\20const*\2c\20char32_t\20const*\2c\20char32_t\20const*&\2c\20char8_t*\2c\20char8_t*\2c\20char8_t*&\29\20const 4593:std::__2::codecvt::do_length\28__mbstate_t&\2c\20char8_t\20const*\2c\20char8_t\20const*\2c\20unsigned\20long\29\20const 4594:std::__2::codecvt::do_in\28__mbstate_t&\2c\20char8_t\20const*\2c\20char8_t\20const*\2c\20char8_t\20const*&\2c\20char32_t*\2c\20char32_t*\2c\20char32_t*&\29\20const 4595:std::__2::codecvt::do_out\28__mbstate_t&\2c\20char16_t\20const*\2c\20char16_t\20const*\2c\20char16_t\20const*&\2c\20char8_t*\2c\20char8_t*\2c\20char8_t*&\29\20const 4596:std::__2::codecvt::do_length\28__mbstate_t&\2c\20char8_t\20const*\2c\20char8_t\20const*\2c\20unsigned\20long\29\20const 4597:std::__2::codecvt::do_in\28__mbstate_t&\2c\20char8_t\20const*\2c\20char8_t\20const*\2c\20char8_t\20const*&\2c\20char16_t*\2c\20char16_t*\2c\20char16_t*&\29\20const 4598:std::__2::char_traits::eq_int_type\28int\2c\20int\29 4599:std::__2::char_traits::not_eof\28int\29 4600:std::__2::char_traits::find\28char\20const*\2c\20unsigned\20long\2c\20char\20const&\29 4601:std::__2::basic_stringstream\2c\20std::__2::allocator>::basic_stringstream\5babi:v160004\5d\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int\29 4602:std::__2::basic_stringbuf\2c\20std::__2::allocator>::str\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 4603:std::__2::basic_stringbuf\2c\20std::__2::allocator>::str\28\29\20const 4604:std::__2::basic_string_view>::substr\5babi:v160004\5d\28unsigned\20long\2c\20unsigned\20long\29\20const 4605:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28unsigned\20long\2c\20wchar_t\29 4606:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28wchar_t\20const*\2c\20wchar_t\20const*\29 4607:std::__2::basic_string\2c\20std::__2::allocator>::__grow_by_and_replace\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20wchar_t\20const*\29 4608:std::__2::basic_string\2c\20std::__2::allocator>::__grow_by\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29 4609:std::__2::basic_string\2c\20std::__2::allocator>::pop_back\5babi:v160004\5d\28\29 4610:std::__2::basic_string\2c\20std::__2::allocator>::insert\28unsigned\20long\2c\20char\20const*\2c\20unsigned\20long\29 4611:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\5babi:v160004\5d\28unsigned\20long\2c\20char\29 4612:std::__2::basic_string\2c\20std::__2::allocator>::__null_terminate_at\5babi:v160004\5d\28char*\2c\20unsigned\20long\29 4613:std::__2::basic_string\2c\20std::__2::allocator>&\20skia_private::TArray\2c\20std::__2::allocator>\2c\20false>::emplace_back\28char\20const*&&\29 4614:std::__2::basic_streambuf>::sbumpc\5babi:v160004\5d\28\29 4615:std::__2::basic_streambuf>::sputc\5babi:v160004\5d\28char\29 4616:std::__2::basic_streambuf>::sgetc\5babi:v160004\5d\28\29 4617:std::__2::basic_streambuf>::basic_streambuf\28\29 4618:std::__2::basic_ostream>::sentry::~sentry\28\29 4619:std::__2::basic_ostream>::sentry::sentry\28std::__2::basic_ostream>&\29 4620:std::__2::basic_ostream>::operator<<\28float\29 4621:std::__2::basic_ostream>::flush\28\29 4622:std::__2::basic_istream>::~basic_istream\28\29.1 4623:std::__2::basic_iostream>::basic_iostream\5babi:v160004\5d\28std::__2::basic_streambuf>*\29 4624:std::__2::basic_ios>::imbue\5babi:v160004\5d\28std::__2::locale\20const&\29 4625:std::__2::allocator_traits>::deallocate\5babi:v160004\5d\28std::__2::__sso_allocator&\2c\20std::__2::locale::facet**\2c\20unsigned\20long\29 4626:std::__2::allocator::allocate\5babi:v160004\5d\28unsigned\20long\29 4627:std::__2::__wrap_iter\20std::__2::vector>::insert\2c\200>\28std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\29 4628:std::__2::__unwrap_iter_impl::__rewrap\5babi:v160004\5d\28char*\2c\20char*\29 4629:std::__2::__unique_if\2c\20std::__2::allocator>>::__unique_single\20std::__2::make_unique\5babi:v160004\5d\2c\20std::__2::allocator>\2c\20std::__2::basic_string\2c\20std::__2::allocator>>\28std::__2::basic_string\2c\20std::__2::allocator>&&\29 4630:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>>\28SkSL::Position&\2c\20std::__2::unique_ptr>&&\2c\20std::__2::unique_ptr>&&\2c\20std::__2::unique_ptr>&&\29 4631:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d\28\29 4632:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d\28\29 4633:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d\28SkSL::Position&\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray&&\29 4634:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d>>\28SkSL::Position&\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>&&\29 4635:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d>>\28SkSL::Position&\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>&&\29 4636:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d>>\28SkSL::Position&\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>&&\29 4637:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d>>\28SkSL::Position&\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>&&\29 4638:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d>>\28SkSL::Position&\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>&&\29 4639:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d\28SkSL::Position&\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray&&\29 4640:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d>>\28SkSL::Position&\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>&&\29 4641:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d\28SkSL::Position&\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray&&\29 4642:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d>\2c\20true>\2c\20SkSL::Block::Kind&\2c\20std::__2::unique_ptr>>\28SkSL::Position&\2c\20skia_private::STArray<2\2c\20std::__2::unique_ptr>\2c\20true>&&\2c\20SkSL::Block::Kind&\2c\20std::__2::unique_ptr>&&\29 4643:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d>\28sk_sp&&\29 4644:std::__2::__unique_if::__unique_single\20std::__2::make_unique\5babi:v160004\5d&>\28std::__2::shared_ptr&\29 4645:std::__2::__tuple_impl\2c\20std::__2::\28anonymous\20namespace\29::__fake_bind&&>::__tuple_impl\5babi:v160004\5d<0ul\2c\20std::__2::\28anonymous\20namespace\29::__fake_bind&&\2c\20std::__2::\28anonymous\20namespace\29::__fake_bind>\28std::__2::__tuple_indices<0ul>\2c\20std::__2::__tuple_types\2c\20std::__2::__tuple_indices<>\2c\20std::__2::__tuple_types<>\2c\20std::__2::\28anonymous\20namespace\29::__fake_bind&&\29 4646:std::__2::__time_put::__time_put\5babi:v160004\5d\28\29 4647:std::__2::__time_put::__do_put\28char*\2c\20char*&\2c\20tm\20const*\2c\20char\2c\20char\29\20const 4648:std::__2::__throw_out_of_range\5babi:v160004\5d\28char\20const*\29 4649:std::__2::__throw_length_error\5babi:v160004\5d\28char\20const*\29 4650:std::__2::__split_buffer&>::~__split_buffer\28\29 4651:std::__2::__split_buffer&>::__split_buffer\28unsigned\20long\2c\20unsigned\20long\2c\20std::__2::allocator&\29 4652:std::__2::__split_buffer>::pop_back\5babi:v160004\5d\28\29 4653:std::__2::__split_buffer>::__destruct_at_end\5babi:v160004\5d\28skia::textlayout::OneLineShaper::RunBlock**\2c\20std::__2::integral_constant\29 4654:std::__2::__split_buffer&>::push_back\28skia::textlayout::OneLineShaper::RunBlock*&&\29 4655:std::__2::__split_buffer&>::~__split_buffer\28\29 4656:std::__2::__split_buffer&>::~__split_buffer\28\29 4657:std::__2::__split_buffer&>::__split_buffer\28unsigned\20long\2c\20unsigned\20long\2c\20std::__2::allocator&\29 4658:std::__2::__split_buffer&>::~__split_buffer\28\29 4659:std::__2::__split_buffer&>::__split_buffer\28unsigned\20long\2c\20unsigned\20long\2c\20std::__2::allocator&\29 4660:std::__2::__split_buffer&>::~__split_buffer\28\29 4661:std::__2::__shared_weak_count::__release_shared\5babi:v160004\5d\28\29 4662:std::__2::__optional_destruct_base::reset\5babi:v160004\5d\28\29 4663:std::__2::__optional_destruct_base::reset\5babi:v160004\5d\28\29 4664:std::__2::__optional_destruct_base::reset\5babi:v160004\5d\28\29 4665:std::__2::__optional_destruct_base::~__optional_destruct_base\5babi:v160004\5d\28\29 4666:std::__2::__num_put::__widen_and_group_int\28char*\2c\20char*\2c\20char*\2c\20wchar_t*\2c\20wchar_t*&\2c\20wchar_t*&\2c\20std::__2::locale\20const&\29 4667:std::__2::__num_put::__widen_and_group_float\28char*\2c\20char*\2c\20char*\2c\20wchar_t*\2c\20wchar_t*&\2c\20wchar_t*&\2c\20std::__2::locale\20const&\29 4668:std::__2::__num_put::__widen_and_group_int\28char*\2c\20char*\2c\20char*\2c\20char*\2c\20char*&\2c\20char*&\2c\20std::__2::locale\20const&\29 4669:std::__2::__num_put::__widen_and_group_float\28char*\2c\20char*\2c\20char*\2c\20char*\2c\20char*&\2c\20char*&\2c\20std::__2::locale\20const&\29 4670:std::__2::__money_put::__gather_info\28bool\2c\20bool\2c\20std::__2::locale\20const&\2c\20std::__2::money_base::pattern&\2c\20wchar_t&\2c\20wchar_t&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20int&\29 4671:std::__2::__money_put::__format\28wchar_t*\2c\20wchar_t*&\2c\20wchar_t*&\2c\20unsigned\20int\2c\20wchar_t\20const*\2c\20wchar_t\20const*\2c\20std::__2::ctype\20const&\2c\20bool\2c\20std::__2::money_base::pattern\20const&\2c\20wchar_t\2c\20wchar_t\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20int\29 4672:std::__2::__money_put::__gather_info\28bool\2c\20bool\2c\20std::__2::locale\20const&\2c\20std::__2::money_base::pattern&\2c\20char&\2c\20char&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20int&\29 4673:std::__2::__money_put::__format\28char*\2c\20char*&\2c\20char*&\2c\20unsigned\20int\2c\20char\20const*\2c\20char\20const*\2c\20std::__2::ctype\20const&\2c\20bool\2c\20std::__2::money_base::pattern\20const&\2c\20char\2c\20char\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20int\29 4674:std::__2::__libcpp_sscanf_l\28char\20const*\2c\20__locale_struct*\2c\20char\20const*\2c\20...\29 4675:std::__2::__libcpp_mbrtowc_l\5babi:v160004\5d\28wchar_t*\2c\20char\20const*\2c\20unsigned\20long\2c\20__mbstate_t*\2c\20__locale_struct*\29 4676:std::__2::__libcpp_mb_cur_max_l\5babi:v160004\5d\28__locale_struct*\29 4677:std::__2::__libcpp_condvar_wait\5babi:v160004\5d\28pthread_cond_t*\2c\20pthread_mutex_t*\29 4678:std::__2::__hash_table\2c\20std::__2::__unordered_map_hasher\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal\2c\20std::__2::equal_to\2c\20std::__2::hash\2c\20true>\2c\20std::__2::allocator>>::__deallocate_node\28std::__2::__hash_node_base\2c\20void*>*>*\29 4679:std::__2::__hash_table\2c\20std::__2::__unordered_map_hasher\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal\2c\20std::__2::equal_to\2c\20std::__2::hash\2c\20true>\2c\20std::__2::allocator>>::__deallocate_node\28std::__2::__hash_node_base\2c\20void*>*>*\29 4680:std::__2::__hash_table\2c\20std::__2::equal_to\2c\20std::__2::allocator>::__deallocate_node\28std::__2::__hash_node_base*>*\29 4681:std::__2::__function::__value_func\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkPoint\2c\20SkPoint\2c\20skia::textlayout::InternalLineMetrics\2c\20bool\29>::operator\28\29\5babi:v160004\5d\28skia::textlayout::SkRange&&\2c\20skia::textlayout::SkRange&&\2c\20skia::textlayout::SkRange&&\2c\20skia::textlayout::SkRange&&\2c\20skia::textlayout::SkRange&&\2c\20float&&\2c\20unsigned\20long&&\2c\20unsigned\20long&&\2c\20SkPoint&&\2c\20SkPoint&&\2c\20skia::textlayout::InternalLineMetrics&&\2c\20bool&&\29\20const 4682:std::__2::__function::__value_func\29>::operator\28\29\5babi:v160004\5d\28skia::textlayout::Block&&\2c\20skia_private::TArray&&\29\20const 4683:std::__2::__function::__value_func::operator\28\29\5babi:v160004\5d\28\29\20const 4684:std::__2::__function::__value_func\29>::operator\28\29\5babi:v160004\5d\28sk_sp&&\29\20const 4685:std::__2::__function::__func\2c\20void\20\28void*\2c\20void\20const*\29>::~__func\28\29 4686:std::__2::__function::__func\28GrFragmentProcessor\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29\2c\20std::__2::allocator\28GrFragmentProcessor\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::operator\28\29\28GrSurfaceProxy*&&\2c\20skgpu::Mipmapped&&\29 4687:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0>\2c\20void\20\28\29>::operator\28\29\28\29 4688:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28\29>::~__func\28\29 4689:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::~__func\28\29 4690:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::~__func\28\29 4691:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::~__func\28\29 4692:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::~__func\28\29 4693:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::operator\28\29\28std::__2::function&\29 4694:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::destroy_deallocate\28\29 4695:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::destroy\28\29 4696:std::__2::__function::__func\2c\20void\20\28std::__2::function&\29>::~__func\28\29 4697:std::__2::__forward_list_base\2c\20std::__2::allocator>>::clear\28\29 4698:std::__2::__exception_guard_exceptions>::__destroy_vector>::~__exception_guard_exceptions\5babi:v160004\5d\28\29 4699:std::__2::__exception_guard_exceptions>::__destroy_vector>::~__exception_guard_exceptions\5babi:v160004\5d\28\29 4700:std::__2::__exception_guard_exceptions\2c\20SkString*>>::~__exception_guard_exceptions\5babi:v160004\5d\28\29 4701:std::__2::__constexpr_wcslen\5babi:v160004\5d\28wchar_t\20const*\29 4702:std::__2::__compressed_pair_elem\29::$_0\2c\200\2c\20false>::__compressed_pair_elem\5babi:v160004\5d\29::$_0\20const&\2c\200ul>\28std::__2::piecewise_construct_t\2c\20std::__2::tuple\29::$_0\20const&>\2c\20std::__2::__tuple_indices<0ul>\29 4703:std::__2::__compressed_pair_elem::__compressed_pair_elem\5babi:v160004\5d\28std::__2::piecewise_construct_t\2c\20std::__2::tuple\2c\20std::__2::__tuple_indices<0ul>\29 4704:std::__2::__compressed_pair::__compressed_pair\5babi:v160004\5d\28unsigned\20char*&\2c\20void\20\28*&&\29\28void*\29\29 4705:std::__2::__allocation_result>::pointer>\20std::__2::__allocate_at_least\5babi:v160004\5d>\28std::__2::__sso_allocator&\2c\20unsigned\20long\29 4706:srgb_to_hsl\28SkRGBA4f<\28SkAlphaType\292>\2c\20bool*\29 4707:sort_r_swap_blocks\28char*\2c\20unsigned\20long\2c\20unsigned\20long\29 4708:sort_increasing_Y\28SkPoint*\2c\20SkPoint\20const*\2c\20int\29 4709:sort_edges\28SkEdge**\2c\20int\2c\20SkEdge**\29 4710:sort_as_rect\28skvx::Vec<4\2c\20float>\20const&\29 4711:small_blur\28double\2c\20double\2c\20SkMask\20const&\2c\20SkMaskBuilder*\29::$_0::operator\28\29\28SkGaussFilter\20const&\2c\20unsigned\20short*\29\20const 4712:skvx::Vec<8\2c\20unsigned\20int>\20skvx::cast\28skvx::Vec<8\2c\20unsigned\20short>\20const&\29 4713:skvx::Vec<4\2c\20unsigned\20short>\20skvx::operator>><4\2c\20unsigned\20short>\28skvx::Vec<4\2c\20unsigned\20short>\20const&\2c\20int\29 4714:skvx::Vec<4\2c\20unsigned\20short>\20skvx::operator<<<4\2c\20unsigned\20short>\28skvx::Vec<4\2c\20unsigned\20short>\20const&\2c\20int\29 4715:skvx::Vec<4\2c\20unsigned\20int>\20skvx::operator>><4\2c\20unsigned\20int>\28skvx::Vec<4\2c\20unsigned\20int>\20const&\2c\20int\29 4716:skvx::Vec<4\2c\20unsigned\20int>\20skvx::operator*<4\2c\20unsigned\20int>\28skvx::Vec<4\2c\20unsigned\20int>\20const&\2c\20skvx::Vec<4\2c\20unsigned\20int>\20const&\29 4717:skvx::Vec<4\2c\20skvx::Mask::type>\20skvx::operator!=<4\2c\20float\2c\20float\2c\20void>\28skvx::Vec<4\2c\20float>\20const&\2c\20float\29 4718:skvx::Vec<4\2c\20skvx::Mask::type>\20skvx::operator!=<4\2c\20float>\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\29 4719:skvx::Vec<4\2c\20int>\20skvx::operator^<4\2c\20int>\28skvx::Vec<4\2c\20int>\20const&\2c\20skvx::Vec<4\2c\20int>\20const&\29 4720:skvx::Vec<4\2c\20int>\20skvx::operator>><4\2c\20int>\28skvx::Vec<4\2c\20int>\20const&\2c\20int\29 4721:skvx::Vec<4\2c\20int>\20skvx::operator<<<4\2c\20int>\28skvx::Vec<4\2c\20int>\20const&\2c\20int\29 4722:skvx::Vec<4\2c\20float>\20skvx::sqrt<4>\28skvx::Vec<4\2c\20float>\20const&\29 4723:skvx::Vec<4\2c\20float>\20skvx::operator/<4\2c\20float\2c\20float\2c\20void>\28skvx::Vec<4\2c\20float>\20const&\2c\20float\29 4724:skvx::Vec<4\2c\20float>\20skvx::operator/<4\2c\20float>\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\29 4725:skvx::Vec<4\2c\20float>\20skvx::operator-<4\2c\20float\2c\20float\2c\20void>\28skvx::Vec<4\2c\20float>\20const&\2c\20float\29 4726:skvx::Vec<4\2c\20float>\20skvx::operator-<4\2c\20float>\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\29 4727:skvx::Vec<4\2c\20float>\20skvx::operator*<4\2c\20float\2c\20int\2c\20void>\28skvx::Vec<4\2c\20float>\20const&\2c\20int\29 4728:skvx::Vec<4\2c\20float>\20skvx::min<4\2c\20float\2c\20float\2c\20void>\28float\2c\20skvx::Vec<4\2c\20float>\20const&\29 4729:skvx::Vec<4\2c\20float>\20skvx::min<4\2c\20float>\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\29\20\28.5782\29 4730:skvx::Vec<4\2c\20float>\20skvx::max<4\2c\20float\2c\20float\2c\20void>\28float\2c\20skvx::Vec<4\2c\20float>\20const&\29 4731:skvx::Vec<4\2c\20float>\20skvx::from_half<4>\28skvx::Vec<4\2c\20unsigned\20short>\20const&\29 4732:skvx::Vec<4\2c\20float>&\20skvx::operator*=<4\2c\20float>\28skvx::Vec<4\2c\20float>&\2c\20skvx::Vec<4\2c\20float>\20const&\29\20\28.6686\29 4733:skvx::Vec<2\2c\20unsigned\20char>\20skvx::cast\28skvx::Vec<2\2c\20float>\20const&\29 4734:skvx::ScaledDividerU32::divide\28skvx::Vec<4\2c\20unsigned\20int>\20const&\29\20const 4735:skvx::ScaledDividerU32::ScaledDividerU32\28unsigned\20int\29 4736:sktext::gpu::can_use_direct\28SkMatrix\20const&\2c\20SkMatrix\20const&\29 4737:sktext::gpu::build_distance_adjust_table\28float\2c\20float\29 4738:sktext::gpu::VertexFiller::fillVertexData\28int\2c\20int\2c\20SkSpan\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkIRect\2c\20void*\29\20const 4739:sktext::gpu::TextBlobRedrawCoordinator::internalRemove\28sktext::gpu::TextBlob*\29 4740:sktext::gpu::TextBlobRedrawCoordinator::BlobIDCacheEntry::findBlobIndex\28sktext::gpu::TextBlob::Key\20const&\29\20const 4741:sktext::gpu::TextBlobRedrawCoordinator::BlobIDCacheEntry::BlobIDCacheEntry\28sktext::gpu::TextBlobRedrawCoordinator::BlobIDCacheEntry&&\29 4742:sktext::gpu::TextBlob::~TextBlob\28\29 4743:sktext::gpu::SubRunContainer::draw\28SkCanvas*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20SkRefCnt\20const*\2c\20std::__2::function\2c\20sktext::gpu::RendererData\29>\20const&\29\20const 4744:sktext::gpu::SubRunContainer::MakeInAlloc\28sktext::GlyphRunList\20const&\2c\20SkMatrix\20const&\2c\20SkPaint\20const&\2c\20SkStrikeDeviceInfo\2c\20sktext::StrikeForGPUCacheInterface*\2c\20sktext::gpu::SubRunAllocator*\2c\20sktext::gpu::SubRunContainer::SubRunCreationBehavior\2c\20char\20const*\29::$_2::operator\28\29\28SkZip\2c\20skgpu::MaskFormat\29\20const 4745:sktext::gpu::SubRunContainer::MakeInAlloc\28sktext::GlyphRunList\20const&\2c\20SkMatrix\20const&\2c\20SkPaint\20const&\2c\20SkStrikeDeviceInfo\2c\20sktext::StrikeForGPUCacheInterface*\2c\20sktext::gpu::SubRunAllocator*\2c\20sktext::gpu::SubRunContainer::SubRunCreationBehavior\2c\20char\20const*\29::$_0::operator\28\29\28SkZip\2c\20skgpu::MaskFormat\29\20const 4746:sktext::gpu::SubRunContainer::MakeInAlloc\28sktext::GlyphRunList\20const&\2c\20SkMatrix\20const&\2c\20SkPaint\20const&\2c\20SkStrikeDeviceInfo\2c\20sktext::StrikeForGPUCacheInterface*\2c\20sktext::gpu::SubRunAllocator*\2c\20sktext::gpu::SubRunContainer::SubRunCreationBehavior\2c\20char\20const*\29 4747:sktext::gpu::SubRunContainer::EstimateAllocSize\28sktext::GlyphRunList\20const&\29 4748:sktext::gpu::SubRunAllocator::SubRunAllocator\28int\29 4749:sktext::gpu::SlugImpl::~SlugImpl\28\29 4750:sktext::gpu::SDFTControl::isSDFT\28float\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\29\20const 4751:sktext::SkStrikePromise::resetStrike\28\29 4752:sktext::GlyphRunList::maxGlyphRunSize\28\29\20const 4753:sktext::GlyphRunBuilder::~GlyphRunBuilder\28\29 4754:sktext::GlyphRunBuilder::makeGlyphRunList\28sktext::GlyphRun\20const&\2c\20SkPaint\20const&\2c\20SkPoint\29 4755:sktext::GlyphRunBuilder::blobToGlyphRunList\28SkTextBlob\20const&\2c\20SkPoint\29 4756:skstd::to_string\28float\29 4757:skip_string 4758:skip_procedure 4759:skip_comment 4760:skif::compatible_sampling\28SkSamplingOptions\20const&\2c\20bool\2c\20SkSamplingOptions*\2c\20bool\29 4761:skif::\28anonymous\20namespace\29::decompose_transform\28SkMatrix\20const&\2c\20SkPoint\2c\20SkMatrix*\2c\20SkMatrix*\29 4762:skif::\28anonymous\20namespace\29::are_axes_nearly_integer_aligned\28skif::LayerSpace\20const&\2c\20skif::LayerSpace*\29 4763:skif::\28anonymous\20namespace\29::GaneshBackend::maxSigma\28\29\20const 4764:skif::\28anonymous\20namespace\29::GaneshBackend::blur\28SkSize\2c\20sk_sp\2c\20SkIRect\20const&\2c\20SkTileMode\2c\20SkIRect\20const&\29\20const 4765:skif::LayerSpace\20skif::Mapping::paramToLayer\28skif::ParameterSpace\20const&\29\20const 4766:skif::LayerSpace::postConcat\28skif::LayerSpace\20const&\29 4767:skif::LayerSpace::inverseMapRect\28skif::LayerSpace\20const&\2c\20skif::LayerSpace*\29\20const 4768:skif::LayerSpace::inset\28skif::LayerSpace\20const&\29 4769:skif::FilterResult::subset\28skif::LayerSpace\20const&\2c\20skif::LayerSpace\20const&\2c\20bool\29\20const 4770:skif::FilterResult::imageAndOffset\28skif::Context\20const&\29\20const 4771:skif::FilterResult::applyTransform\28skif::Context\20const&\2c\20skif::LayerSpace\20const&\2c\20SkSamplingOptions\20const&\29\20const 4772:skif::FilterResult::applyCrop\28skif::Context\20const&\2c\20skif::LayerSpace\20const&\2c\20SkTileMode\29\20const 4773:skif::FilterResult::FilterResult\28sk_sp\29 4774:skif::FilterResult::Builder::drawShader\28sk_sp\2c\20skif::LayerSpace\20const&\2c\20bool\29\20const 4775:skif::FilterResult::Builder::createInputShaders\28skif::LayerSpace\20const&\2c\20bool\29 4776:skia_private::THashTable>\2c\20std::__2::basic_string_view>\2c\20skia_private::THashSet>\2c\20SkGoodHash>::Traits>::uncheckedSet\28std::__2::basic_string_view>&&\29 4777:skia_private::THashTable::uncheckedSet\28sktext::gpu::Glyph*&&\29 4778:skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::uncheckedSet\28skia_private::THashMap::Pair&&\29 4779:skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::resize\28int\29 4780:skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::removeIfExists\28unsigned\20int\20const&\29 4781:skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::Slot::emplace\28skia_private::THashMap::Pair&&\2c\20unsigned\20int\29 4782:skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::resize\28int\29 4783:skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::reset\28\29 4784:skia_private::THashTable::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap::Pair>::resize\28int\29 4785:skia_private::THashTable\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair\2c\20skia::textlayout::OneLineShaper::FontKey\2c\20skia_private::THashMap\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair>::uncheckedSet\28skia_private::THashMap\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair&&\29 4786:skia_private::THashTable\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair\2c\20skia::textlayout::OneLineShaper::FontKey\2c\20skia_private::THashMap\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair>::Slot::reset\28\29 4787:skia_private::THashTable\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair\2c\20skia::textlayout::OneLineShaper::FontKey\2c\20skia_private::THashMap\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair>::Slot::emplace\28skia_private::THashMap\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair&&\2c\20unsigned\20int\29 4788:skia_private::THashTable\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair\2c\20skia::textlayout::OneLineShaper::FontKey\2c\20skia_private::THashMap\2c\20skia::textlayout::OneLineShaper::FontKey::Hasher>::Pair>::Hash\28skia::textlayout::OneLineShaper::FontKey\20const&\29 4789:skia_private::THashTable\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair\2c\20skia::textlayout::FontCollection::FamilyKey\2c\20skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair>::uncheckedSet\28skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair&&\29 4790:skia_private::THashTable\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair\2c\20skia::textlayout::FontCollection::FamilyKey\2c\20skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair>::Slot::reset\28\29 4791:skia_private::THashTable\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair\2c\20skia::textlayout::FontCollection::FamilyKey\2c\20skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair>::Slot::emplace\28skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair&&\2c\20unsigned\20int\29 4792:skia_private::THashTable\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair\2c\20skia::textlayout::FontCollection::FamilyKey\2c\20skia_private::THashMap\2c\20std::__2::allocator>>\2c\20skia::textlayout::FontCollection::FamilyKey::Hasher>::Pair>::Hash\28skia::textlayout::FontCollection::FamilyKey\20const&\29 4793:skia_private::THashTable>::Pair\2c\20skgpu::ganesh::AtlasPathRenderer::AtlasPathKey\2c\20skia_private::THashMap>::Pair>::uncheckedSet\28skia_private::THashMap>::Pair&&\29 4794:skia_private::THashTable>::Pair\2c\20skgpu::ganesh::AtlasPathRenderer::AtlasPathKey\2c\20skia_private::THashMap>::Pair>::reset\28\29 4795:skia_private::THashTable>::Pair\2c\20skgpu::ganesh::AtlasPathRenderer::AtlasPathKey\2c\20skia_private::THashMap>::Pair>::Hash\28skgpu::ganesh::AtlasPathRenderer::AtlasPathKey\20const&\29 4796:skia_private::THashTable::Pair\2c\20skgpu::UniqueKey\2c\20skia_private::THashMap::Pair>::uncheckedSet\28skia_private::THashMap::Pair&&\29 4797:skia_private::THashTable::Pair\2c\20skgpu::UniqueKey\2c\20skia_private::THashMap::Pair>::Slot::reset\28\29 4798:skia_private::THashTable::Pair\2c\20skgpu::UniqueKey\2c\20skia_private::THashMap::Pair>::Slot::emplace\28skia_private::THashMap::Pair&&\2c\20unsigned\20int\29 4799:skia_private::THashTable\2c\20SkGoodHash>::Pair\2c\20int\2c\20skia_private::THashMap\2c\20SkGoodHash>::Pair>::uncheckedSet\28skia_private::THashMap\2c\20SkGoodHash>::Pair&&\29 4800:skia_private::THashTable\2c\20SkGoodHash>::Pair\2c\20int\2c\20skia_private::THashMap\2c\20SkGoodHash>::Pair>::Slot::reset\28\29 4801:skia_private::THashTable\2c\20SkGoodHash>::Pair\2c\20int\2c\20skia_private::THashMap\2c\20SkGoodHash>::Pair>::Slot::emplace\28skia_private::THashMap\2c\20SkGoodHash>::Pair&&\2c\20unsigned\20int\29 4802:skia_private::THashTable\2c\20SkGoodHash>::Pair\2c\20SkString\2c\20skia_private::THashMap\2c\20SkGoodHash>::Pair>::uncheckedSet\28skia_private::THashMap\2c\20SkGoodHash>::Pair&&\29 4803:skia_private::THashTable\2c\20SkGoodHash>::Pair\2c\20SkString\2c\20skia_private::THashMap\2c\20SkGoodHash>::Pair>::Slot::reset\28\29 4804:skia_private::THashTable\2c\20SkGoodHash>::Pair\2c\20SkString\2c\20skia_private::THashMap\2c\20SkGoodHash>::Pair>::Slot::emplace\28skia_private::THashMap\2c\20SkGoodHash>::Pair&&\2c\20unsigned\20int\29 4805:skia_private::THashTable\2c\20SkGoodHash>::Pair\2c\20SkString\2c\20skia_private::THashMap\2c\20SkGoodHash>::Pair>::Hash\28SkString\20const&\29 4806:skia_private::THashTable>\2c\20SkGoodHash>::Pair\2c\20SkSL::Variable\20const*\2c\20skia_private::THashMap>\2c\20SkGoodHash>::Pair>::uncheckedSet\28skia_private::THashMap>\2c\20SkGoodHash>::Pair&&\29 4807:skia_private::THashTable>\2c\20SkGoodHash>::Pair\2c\20SkSL::Variable\20const*\2c\20skia_private::THashMap>\2c\20SkGoodHash>::Pair>::Slot::reset\28\29 4808:skia_private::THashTable>\2c\20SkGoodHash>::Pair\2c\20SkSL::Variable\20const*\2c\20skia_private::THashMap>\2c\20SkGoodHash>::Pair>::Slot::emplace\28skia_private::THashMap>\2c\20SkGoodHash>::Pair&&\2c\20unsigned\20int\29 4809:skia_private::THashTable::Pair\2c\20SkSL::Variable\20const*\2c\20skia_private::THashMap::Pair>::uncheckedSet\28skia_private::THashMap::Pair&&\29 4810:skia_private::THashTable::Pair\2c\20SkSL::Variable\20const*\2c\20skia_private::THashMap::Pair>::firstPopulatedSlot\28\29\20const 4811:skia_private::THashTable::Pair\2c\20SkSL::Variable\20const*\2c\20skia_private::THashMap::Pair>::Iter>::operator++\28\29 4812:skia_private::THashTable\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair\2c\20SkSL::Type\20const*\2c\20skia_private::THashMap\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair>::uncheckedSet\28skia_private::THashMap\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair&&\29 4813:skia_private::THashTable\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair\2c\20SkSL::Type\20const*\2c\20skia_private::THashMap\2c\20std::__2::allocator>\2c\20SkGoodHash>::Pair>::Slot::reset\28\29 4814:skia_private::THashTable::Pair\2c\20SkSL::SymbolTable::SymbolKey\2c\20skia_private::THashMap::Pair>::uncheckedSet\28skia_private::THashMap::Pair&&\29 4815:skia_private::THashTable::Pair\2c\20SkSL::SymbolTable::SymbolKey\2c\20skia_private::THashMap::Pair>::resize\28int\29 4816:skia_private::THashTable::Pair\2c\20SkSL::IRNode\20const*\2c\20skia_private::THashMap::Pair>::uncheckedSet\28skia_private::THashMap::Pair&&\29 4817:skia_private::THashTable::Pair\2c\20SkSL::IRNode\20const*\2c\20skia_private::THashMap::Pair>::set\28skia_private::THashMap::Pair\29 4818:skia_private::THashTable::Pair\2c\20SkSL::IRNode\20const*\2c\20skia_private::THashMap::Pair>::resize\28int\29 4819:skia_private::THashTable::Pair\2c\20SkPath\2c\20skia_private::THashMap::Pair>::uncheckedSet\28skia_private::THashMap::Pair&&\29 4820:skia_private::THashTable::Pair\2c\20SkPath\2c\20skia_private::THashMap::Pair>::Slot::reset\28\29 4821:skia_private::THashTable::Pair\2c\20SkPath\2c\20skia_private::THashMap::Pair>::Slot::emplace\28skia_private::THashMap::Pair&&\2c\20unsigned\20int\29 4822:skia_private::THashTable>\2c\20SkGoodHash>::Pair\2c\20SkImageFilter\20const*\2c\20skia_private::THashMap>\2c\20SkGoodHash>::Pair>::uncheckedSet\28skia_private::THashMap>\2c\20SkGoodHash>::Pair&&\29 4823:skia_private::THashTable>\2c\20SkGoodHash>::Pair\2c\20SkImageFilter\20const*\2c\20skia_private::THashMap>\2c\20SkGoodHash>::Pair>::resize\28int\29 4824:skia_private::THashTable>\2c\20SkGoodHash>::Pair\2c\20SkImageFilter\20const*\2c\20skia_private::THashMap>\2c\20SkGoodHash>::Pair>::Slot::emplace\28skia_private::THashMap>\2c\20SkGoodHash>::Pair&&\2c\20unsigned\20int\29 4825:skia_private::THashTable::Pair\2c\20GrSurfaceProxy*\2c\20skia_private::THashMap::Pair>::resize\28int\29 4826:skia_private::THashTable::AdaptedTraits>::uncheckedSet\28skgpu::ganesh::SmallPathShapeData*&&\29 4827:skia_private::THashTable::AdaptedTraits>::resize\28int\29 4828:skia_private::THashTable::AdaptedTraits>::removeIfExists\28skgpu::ganesh::SmallPathShapeDataKey\20const&\29 4829:skia_private::THashTable\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::uncheckedSet\28sk_sp&&\29 4830:skia_private::THashTable\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::reset\28\29 4831:skia_private::THashTable\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot::reset\28\29 4832:skia_private::THashTable\2c\20SkDescriptor\20const&\2c\20sktext::gpu::StrikeCache::HashTraits>::Slot::emplace\28sk_sp&&\2c\20unsigned\20int\29 4833:skia_private::THashTable\2c\20SkDescriptor\2c\20SkStrikeCache::StrikeTraits>::uncheckedSet\28sk_sp&&\29 4834:skia_private::THashTable\2c\20SkDescriptor\2c\20SkStrikeCache::StrikeTraits>::resize\28int\29 4835:skia_private::THashTable\2c\20SkDescriptor\2c\20SkStrikeCache::StrikeTraits>::Slot::emplace\28sk_sp&&\2c\20unsigned\20int\29 4836:skia_private::THashTable::Traits>::set\28int\29 4837:skia_private::THashTable::Traits>::THashTable\28skia_private::THashTable::Traits>&&\29 4838:skia_private::THashTable<\28anonymous\20namespace\29::CacheImpl::Value*\2c\20SkImageFilterCacheKey\2c\20SkTDynamicHash<\28anonymous\20namespace\29::CacheImpl::Value\2c\20SkImageFilterCacheKey\2c\20\28anonymous\20namespace\29::CacheImpl::Value>::AdaptedTraits>::uncheckedSet\28\28anonymous\20namespace\29::CacheImpl::Value*&&\29 4839:skia_private::THashTable<\28anonymous\20namespace\29::CacheImpl::Value*\2c\20SkImageFilterCacheKey\2c\20SkTDynamicHash<\28anonymous\20namespace\29::CacheImpl::Value\2c\20SkImageFilterCacheKey\2c\20\28anonymous\20namespace\29::CacheImpl::Value>::AdaptedTraits>::resize\28int\29 4840:skia_private::THashTable::ValueList*\2c\20skgpu::ScratchKey\2c\20SkTDynamicHash::ValueList\2c\20skgpu::ScratchKey\2c\20SkTMultiMap::ValueList>::AdaptedTraits>::uncheckedSet\28SkTMultiMap::ValueList*&&\29 4841:skia_private::THashTable::ValueList*\2c\20skgpu::ScratchKey\2c\20SkTDynamicHash::ValueList\2c\20skgpu::ScratchKey\2c\20SkTMultiMap::ValueList>::AdaptedTraits>::resize\28int\29 4842:skia_private::THashTable::ValueList*\2c\20skgpu::ScratchKey\2c\20SkTDynamicHash::ValueList\2c\20skgpu::ScratchKey\2c\20SkTMultiMap::ValueList>::AdaptedTraits>::findOrNull\28skgpu::ScratchKey\20const&\29\20const 4843:skia_private::THashTable::ValueList*\2c\20skgpu::ScratchKey\2c\20SkTDynamicHash::ValueList\2c\20skgpu::ScratchKey\2c\20SkTMultiMap::ValueList>::AdaptedTraits>::uncheckedSet\28SkTMultiMap::ValueList*&&\29 4844:skia_private::THashTable::ValueList*\2c\20skgpu::ScratchKey\2c\20SkTDynamicHash::ValueList\2c\20skgpu::ScratchKey\2c\20SkTMultiMap::ValueList>::AdaptedTraits>::resize\28int\29 4845:skia_private::THashTable::Traits>::uncheckedSet\28SkSL::Variable\20const*&&\29 4846:skia_private::THashTable::Traits>::resize\28int\29 4847:skia_private::THashTable::uncheckedSet\28SkResourceCache::Rec*&&\29 4848:skia_private::THashTable::resize\28int\29 4849:skia_private::THashTable::find\28SkResourceCache::Key\20const&\29\20const 4850:skia_private::THashTable>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Entry*\2c\20skia::textlayout::ParagraphCacheKey\2c\20SkLRUCache>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Traits>::uncheckedSet\28SkLRUCache>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Entry*&&\29 4851:skia_private::THashTable>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Entry*\2c\20skia::textlayout::ParagraphCacheKey\2c\20SkLRUCache>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Traits>::resize\28int\29 4852:skia_private::THashTable>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Entry*\2c\20skia::textlayout::ParagraphCacheKey\2c\20SkLRUCache>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Traits>::find\28skia::textlayout::ParagraphCacheKey\20const&\29\20const 4853:skia_private::THashTable>\2c\20GrGLGpu::ProgramCache::DescHash>::Entry*\2c\20GrProgramDesc\2c\20SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::Traits>::uncheckedSet\28SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::Entry*&&\29 4854:skia_private::THashTable>\2c\20GrGLGpu::ProgramCache::DescHash>::Entry*\2c\20GrProgramDesc\2c\20SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::Traits>::resize\28int\29 4855:skia_private::THashTable>\2c\20GrGLGpu::ProgramCache::DescHash>::Entry*\2c\20GrProgramDesc\2c\20SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::Traits>::find\28GrProgramDesc\20const&\29\20const 4856:skia_private::THashTable::uncheckedSet\28SkGlyphDigest&&\29 4857:skia_private::THashTable::AdaptedTraits>::uncheckedSet\28GrThreadSafeCache::Entry*&&\29 4858:skia_private::THashTable::AdaptedTraits>::resize\28int\29 4859:skia_private::THashTable::AdaptedTraits>::removeIfExists\28skgpu::UniqueKey\20const&\29 4860:skia_private::THashTable::AdaptedTraits>::uncheckedSet\28GrTextureProxy*&&\29 4861:skia_private::THashTable::AdaptedTraits>::set\28GrTextureProxy*\29 4862:skia_private::THashTable::AdaptedTraits>::resize\28int\29 4863:skia_private::THashTable::AdaptedTraits>::findOrNull\28skgpu::UniqueKey\20const&\29\20const 4864:skia_private::THashTable::AdaptedTraits>::uncheckedSet\28GrGpuResource*&&\29 4865:skia_private::THashTable::AdaptedTraits>::resize\28int\29 4866:skia_private::THashTable::AdaptedTraits>::findOrNull\28skgpu::UniqueKey\20const&\29\20const 4867:skia_private::THashTable::Traits>::uncheckedSet\28FT_Opaque_Paint_&&\29 4868:skia_private::THashTable::Traits>::resize\28int\29 4869:skia_private::THashSet::contains\28int\20const&\29\20const 4870:skia_private::THashSet::contains\28FT_Opaque_Paint_\20const&\29\20const 4871:skia_private::THashSet::add\28FT_Opaque_Paint_\29 4872:skia_private::THashMap::find\28unsigned\20int\20const&\29\20const 4873:skia_private::THashMap\2c\20SkGoodHash>::find\28int\20const&\29\20const 4874:skia_private::THashMap\2c\20SkGoodHash>::find\28SkString\20const&\29\20const 4875:skia_private::THashMap\2c\20std::__2::allocator>\2c\20SkGoodHash>::set\28SkSL::Variable\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 4876:skia_private::THashMap::operator\5b\5d\28SkSL::Symbol\20const*\20const&\29 4877:skia_private::THashMap::set\28SkSL::FunctionDeclaration\20const*\2c\20int\29 4878:skia_private::THashMap::operator\5b\5d\28SkSL::FunctionDeclaration\20const*\20const&\29 4879:skia_private::THashMap>\2c\20SkGoodHash>::remove\28SkImageFilter\20const*\20const&\29 4880:skia_private::THashMap>\2c\20SkGoodHash>::Pair::Pair\28skia_private::THashMap>\2c\20SkGoodHash>::Pair&&\29 4881:skia_private::THashMap::find\28GrSurfaceProxy*\20const&\29\20const 4882:skia_private::TArray::push_back_raw\28int\29 4883:skia_private::TArray::checkRealloc\28int\2c\20double\29 4884:skia_private::TArray::operator=\28skia_private::TArray\20const&\29 4885:skia_private::TArray::preallocateNewData\28int\2c\20double\29 4886:skia_private::TArray::operator=\28skia_private::TArray\20const&\29 4887:skia_private::TArray::Allocate\28int\2c\20double\29 4888:skia_private::TArray>\2c\20true>::~TArray\28\29 4889:skia_private::TArray>\2c\20true>::operator=\28skia_private::TArray>\2c\20true>&&\29 4890:skia_private::TArray>\2c\20true>::~TArray\28\29 4891:skia_private::TArray\2c\20std::__2::allocator>\2c\20false>::installDataAndUpdateCapacity\28SkSpan\29 4892:skia_private::TArray\2c\20std::__2::allocator>\2c\20false>::checkRealloc\28int\2c\20double\29 4893:skia_private::TArray\2c\20true>::preallocateNewData\28int\2c\20double\29 4894:skia_private::TArray\2c\20true>::installDataAndUpdateCapacity\28SkSpan\29 4895:skia_private::TArray::destroyAll\28\29 4896:skia_private::TArray::destroyAll\28\29 4897:skia_private::TArray\2c\20false>::~TArray\28\29 4898:skia_private::TArray::~TArray\28\29 4899:skia_private::TArray::destroyAll\28\29 4900:skia_private::TArray::copy\28skia::textlayout::Run\20const*\29 4901:skia_private::TArray::Allocate\28int\2c\20double\29 4902:skia_private::TArray::destroyAll\28\29 4903:skia_private::TArray::initData\28int\29 4904:skia_private::TArray::destroyAll\28\29 4905:skia_private::TArray::TArray\28skia_private::TArray&&\29 4906:skia_private::TArray::Allocate\28int\2c\20double\29 4907:skia_private::TArray::copy\28skia::textlayout::Cluster\20const*\29 4908:skia_private::TArray::checkRealloc\28int\2c\20double\29 4909:skia_private::TArray::Allocate\28int\2c\20double\29 4910:skia_private::TArray::initData\28int\29 4911:skia_private::TArray::destroyAll\28\29 4912:skia_private::TArray::TArray\28skia_private::TArray&&\29 4913:skia_private::TArray::Allocate\28int\2c\20double\29 4914:skia_private::TArray::preallocateNewData\28int\2c\20double\29 4915:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 4916:skia_private::TArray::push_back\28\29 4917:skia_private::TArray::push_back\28\29 4918:skia_private::TArray::preallocateNewData\28int\2c\20double\29 4919:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 4920:skia_private::TArray::preallocateNewData\28int\2c\20double\29 4921:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 4922:skia_private::TArray::checkRealloc\28int\2c\20double\29 4923:skia_private::TArray::preallocateNewData\28int\2c\20double\29 4924:skia_private::TArray::destroyAll\28\29 4925:skia_private::TArray::clear\28\29 4926:skia_private::TArray::checkRealloc\28int\2c\20double\29 4927:skia_private::TArray::checkRealloc\28int\2c\20double\29 4928:skia_private::TArray::preallocateNewData\28int\2c\20double\29 4929:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 4930:skia_private::TArray::preallocateNewData\28int\2c\20double\29 4931:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 4932:skia_private::TArray::preallocateNewData\28int\2c\20double\29 4933:skia_private::TArray::operator=\28skia_private::TArray&&\29 4934:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 4935:skia_private::TArray::destroyAll\28\29 4936:skia_private::TArray::clear\28\29 4937:skia_private::TArray::Allocate\28int\2c\20double\29 4938:skia_private::TArray::BufferFinishedMessage\2c\20false>::operator=\28skia_private::TArray::BufferFinishedMessage\2c\20false>&&\29 4939:skia_private::TArray::BufferFinishedMessage\2c\20false>::installDataAndUpdateCapacity\28SkSpan\29 4940:skia_private::TArray::BufferFinishedMessage\2c\20false>::destroyAll\28\29 4941:skia_private::TArray::BufferFinishedMessage\2c\20false>::clear\28\29 4942:skia_private::TArray::Plane\2c\20false>::preallocateNewData\28int\2c\20double\29 4943:skia_private::TArray::Plane\2c\20false>::installDataAndUpdateCapacity\28SkSpan\29 4944:skia_private::TArray\2c\20true>::operator=\28skia_private::TArray\2c\20true>&&\29 4945:skia_private::TArray\2c\20true>::~TArray\28\29 4946:skia_private::TArray\2c\20true>::~TArray\28\29 4947:skia_private::TArray\2c\20true>::preallocateNewData\28int\2c\20double\29 4948:skia_private::TArray\2c\20true>::clear\28\29 4949:skia_private::TArray::preallocateNewData\28int\2c\20double\29 4950:skia_private::TArray::checkRealloc\28int\2c\20double\29 4951:skia_private::TArray::push_back_raw\28int\29 4952:skia_private::TArray::push_back\28hb_feature_t&&\29 4953:skia_private::TArray::resize_back\28int\29 4954:skia_private::TArray::reset\28int\29 4955:skia_private::TArray::operator=\28skia_private::TArray\20const&\29 4956:skia_private::TArray::preallocateNewData\28int\2c\20double\29 4957:skia_private::TArray<\28anonymous\20namespace\29::DrawAtlasOpImpl::Geometry\2c\20true>::checkRealloc\28int\2c\20double\29 4958:skia_private::TArray<\28anonymous\20namespace\29::DefaultPathOp::PathData\2c\20true>::preallocateNewData\28int\2c\20double\29 4959:skia_private::TArray<\28anonymous\20namespace\29::AAHairlineOp::PathData\2c\20true>::preallocateNewData\28int\2c\20double\29 4960:skia_private::TArray<\28anonymous\20namespace\29::AAHairlineOp::PathData\2c\20true>::installDataAndUpdateCapacity\28SkSpan\29 4961:skia_private::TArray::push_back_n\28int\2c\20SkUnicode::CodeUnitFlags\20const&\29 4962:skia_private::TArray::checkRealloc\28int\2c\20double\29 4963:skia_private::TArray::operator=\28skia_private::TArray&&\29 4964:skia_private::TArray::destroyAll\28\29 4965:skia_private::TArray::initData\28int\29 4966:skia_private::TArray::TArray\28skia_private::TArray\20const&\29 4967:skia_private::TArray\29::ReorderedArgument\2c\20false>::push_back\28SkSL::optimize_constructor_swizzle\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ConstructorCompound\20const&\2c\20skia_private::STArray<4\2c\20signed\20char\2c\20true>\29::ReorderedArgument&&\29 4968:skia_private::TArray::reserve_exact\28int\29 4969:skia_private::TArray::fromBack\28int\29 4970:skia_private::TArray::TArray\28skia_private::TArray&&\29 4971:skia_private::TArray::Allocate\28int\2c\20double\29 4972:skia_private::TArray::push_back\28SkSL::Field&&\29 4973:skia_private::TArray::initData\28int\29 4974:skia_private::TArray::Allocate\28int\2c\20double\29 4975:skia_private::TArray::preallocateNewData\28int\2c\20double\29 4976:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 4977:skia_private::TArray::checkRealloc\28int\2c\20double\29 4978:skia_private::TArray\2c\20true>::push_back\28SkRGBA4f<\28SkAlphaType\292>&&\29 4979:skia_private::TArray\2c\20true>::operator=\28skia_private::TArray\2c\20true>&&\29 4980:skia_private::TArray\2c\20true>::checkRealloc\28int\2c\20double\29 4981:skia_private::TArray::operator=\28skia_private::TArray\20const&\29 4982:skia_private::TArray::operator=\28skia_private::TArray&&\29 4983:skia_private::TArray::~TArray\28\29 4984:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 4985:skia_private::TArray::destroyAll\28\29 4986:skia_private::TArray::~TArray\28\29 4987:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 4988:skia_private::TArray::destroyAll\28\29 4989:skia_private::TArray::preallocateNewData\28int\2c\20double\29 4990:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 4991:skia_private::TArray::preallocateNewData\28int\2c\20double\29 4992:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 4993:skia_private::TArray::checkRealloc\28int\2c\20double\29 4994:skia_private::TArray::checkRealloc\28int\2c\20double\29 4995:skia_private::TArray::push_back\28\29 4996:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 4997:skia_private::TArray::push_back\28\29 4998:skia_private::TArray::push_back_raw\28int\29 4999:skia_private::TArray::checkRealloc\28int\2c\20double\29 5000:skia_private::TArray::~TArray\28\29 5001:skia_private::TArray::operator=\28skia_private::TArray&&\29 5002:skia_private::TArray::destroyAll\28\29 5003:skia_private::TArray::clear\28\29 5004:skia_private::TArray::Allocate\28int\2c\20double\29 5005:skia_private::TArray::checkRealloc\28int\2c\20double\29 5006:skia_private::TArray::push_back\28\29 5007:skia_private::TArray::checkRealloc\28int\2c\20double\29 5008:skia_private::TArray::pop_back\28\29 5009:skia_private::TArray::checkRealloc\28int\2c\20double\29 5010:skia_private::TArray::preallocateNewData\28int\2c\20double\29 5011:skia_private::TArray::preallocateNewData\28int\2c\20double\29 5012:skia_private::TArray::installDataAndUpdateCapacity\28SkSpan\29 5013:skia_private::TArray::preallocateNewData\28int\2c\20double\29 5014:skia_private::STArray<8\2c\20int\2c\20true>::STArray\28int\29 5015:skia_private::STArray<4\2c\20unsigned\20char\2c\20true>::STArray\28skia_private::STArray<4\2c\20unsigned\20char\2c\20true>&&\29 5016:skia_private::STArray<4\2c\20SkPoint\2c\20true>::STArray\28skia_private::STArray<4\2c\20SkPoint\2c\20true>&&\29 5017:skia_private::STArray<4\2c\20SkFontScanner::AxisDefinition\2c\20true>::STArray\28skia_private::STArray<4\2c\20SkFontScanner::AxisDefinition\2c\20true>\20const&\29 5018:skia_private::STArray<2\2c\20float\2c\20true>::STArray\28skia_private::STArray<2\2c\20float\2c\20true>&&\29 5019:skia_private::AutoTMalloc::realloc\28unsigned\20long\29 5020:skia_private::AutoTMalloc::reset\28unsigned\20long\29 5021:skia_private::AutoTArray::AutoTArray\28unsigned\20long\29 5022:skia_private::AutoTArray::AutoTArray\28unsigned\20long\29 5023:skia_private::AutoTArray::AutoTArray\28unsigned\20long\29 5024:skia_private::AutoSTMalloc<256ul\2c\20unsigned\20short\2c\20void>::AutoSTMalloc\28unsigned\20long\29 5025:skia_private::AutoSTArray<64\2c\20TriangulationVertex>::reset\28int\29 5026:skia_private::AutoSTArray<64\2c\20SkGlyph\20const*>::reset\28int\29 5027:skia_private::AutoSTArray<4\2c\20unsigned\20char>::reset\28int\29 5028:skia_private::AutoSTArray<4\2c\20GrResourceHandle>::reset\28int\29 5029:skia_private::AutoSTArray<3\2c\20std::__2::unique_ptr>>::reset\28int\29 5030:skia_private::AutoSTArray<32\2c\20unsigned\20short>::~AutoSTArray\28\29 5031:skia_private::AutoSTArray<32\2c\20unsigned\20short>::reset\28int\29 5032:skia_private::AutoSTArray<32\2c\20SkRect>::reset\28int\29 5033:skia_private::AutoSTArray<2\2c\20sk_sp>::reset\28int\29 5034:skia_private::AutoSTArray<16\2c\20SkRect>::~AutoSTArray\28\29 5035:skia_private::AutoSTArray<16\2c\20GrMipLevel>::reset\28int\29 5036:skia_private::AutoSTArray<15\2c\20GrMipLevel>::reset\28int\29 5037:skia_private::AutoSTArray<14\2c\20std::__2::unique_ptr>>::~AutoSTArray\28\29 5038:skia_private::AutoSTArray<14\2c\20std::__2::unique_ptr>>::reset\28int\29 5039:skia_private::AutoSTArray<14\2c\20GrMipLevel>::~AutoSTArray\28\29 5040:skia_private::AutoSTArray<14\2c\20GrMipLevel>::reset\28int\29 5041:skia_private::AutoSTArray<128\2c\20unsigned\20char>::~AutoSTArray\28\29 5042:skia_png_set_longjmp_fn 5043:skia_png_read_finish_IDAT 5044:skia_png_read_chunk_header 5045:skia_png_read_IDAT_data 5046:skia_png_gamma_16bit_correct 5047:skia_png_do_strip_channel 5048:skia_png_do_gray_to_rgb 5049:skia_png_do_expand 5050:skia_png_destroy_gamma_table 5051:skia_png_colorspace_set_sRGB 5052:skia_png_check_IHDR 5053:skia_png_calculate_crc 5054:skia::textlayout::operator==\28skia::textlayout::FontArguments\20const&\2c\20skia::textlayout::FontArguments\20const&\29 5055:skia::textlayout::\28anonymous\20namespace\29::littleRound\28float\29 5056:skia::textlayout::\28anonymous\20namespace\29::LineBreakerWithLittleRounding::breakLine\28float\29\20const 5057:skia::textlayout::TypefaceFontStyleSet::~TypefaceFontStyleSet\28\29 5058:skia::textlayout::TypefaceFontStyleSet::matchStyle\28SkFontStyle\20const&\29 5059:skia::textlayout::TypefaceFontProvider::~TypefaceFontProvider\28\29 5060:skia::textlayout::TypefaceFontProvider::registerTypeface\28sk_sp\2c\20SkString\20const&\29 5061:skia::textlayout::TextWrapper::TextStretch::TextStretch\28skia::textlayout::Cluster*\2c\20skia::textlayout::Cluster*\2c\20bool\29 5062:skia::textlayout::TextStyle::matchOneAttribute\28skia::textlayout::StyleType\2c\20skia::textlayout::TextStyle\20const&\29\20const 5063:skia::textlayout::TextStyle::equals\28skia::textlayout::TextStyle\20const&\29\20const 5064:skia::textlayout::TextShadow::operator!=\28skia::textlayout::TextShadow\20const&\29\20const 5065:skia::textlayout::TextLine::~TextLine\28\29 5066:skia::textlayout::TextLine::spacesWidth\28\29\20const 5067:skia::textlayout::TextLine::shiftCluster\28skia::textlayout::Cluster\20const*\2c\20float\2c\20float\29 5068:skia::textlayout::TextLine::iterateThroughClustersInGlyphsOrder\28bool\2c\20bool\2c\20std::__2::function\20const&\29\20const::$_0::operator\28\29\28unsigned\20long\20const&\29\20const::'lambda'\28skia::textlayout::Cluster&\29::operator\28\29\28skia::textlayout::Cluster&\29\20const 5069:skia::textlayout::TextLine::iterateThroughClustersInGlyphsOrder\28bool\2c\20bool\2c\20std::__2::function\20const&\29\20const 5070:skia::textlayout::TextLine::getRectsForRange\28skia::textlayout::SkRange\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29::operator\28\29\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\20const::'lambda'\28SkRect\29::operator\28\29\28SkRect\29\20const 5071:skia::textlayout::TextLine::getMetrics\28\29\20const 5072:skia::textlayout::TextLine::extendHeight\28skia::textlayout::TextLine::ClipContext\20const&\29\20const 5073:skia::textlayout::TextLine::ensureTextBlobCachePopulated\28\29 5074:skia::textlayout::TextLine::endsWithHardLineBreak\28\29\20const 5075:skia::textlayout::TextLine::buildTextBlob\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 5076:skia::textlayout::TextLine::TextLine\28skia::textlayout::ParagraphImpl*\2c\20SkPoint\2c\20SkPoint\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20float\2c\20skia::textlayout::InternalLineMetrics\29 5077:skia::textlayout::TextLine::TextBlobRecord::~TextBlobRecord\28\29 5078:skia::textlayout::TextLine::TextBlobRecord::TextBlobRecord\28\29 5079:skia::textlayout::TextLine&\20skia_private::TArray::emplace_back&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20float&\2c\20skia::textlayout::InternalLineMetrics&>\28skia::textlayout::ParagraphImpl*&&\2c\20SkPoint&\2c\20SkPoint&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20skia::textlayout::SkRange&\2c\20float&\2c\20skia::textlayout::InternalLineMetrics&\29 5080:skia::textlayout::StrutStyle::StrutStyle\28\29 5081:skia::textlayout::Run::shift\28skia::textlayout::Cluster\20const*\2c\20float\29 5082:skia::textlayout::Run::newRunBuffer\28\29 5083:skia::textlayout::Run::clusterIndex\28unsigned\20long\29\20const 5084:skia::textlayout::Run::calculateMetrics\28\29 5085:skia::textlayout::ParagraphStyle::ellipsized\28\29\20const 5086:skia::textlayout::ParagraphPainter::DecorationStyle::DecorationStyle\28unsigned\20int\2c\20float\2c\20std::__2::optional\29 5087:skia::textlayout::ParagraphImpl::~ParagraphImpl\28\29 5088:skia::textlayout::ParagraphImpl::resolveStrut\28\29 5089:skia::textlayout::ParagraphImpl::paint\28skia::textlayout::ParagraphPainter*\2c\20float\2c\20float\29 5090:skia::textlayout::ParagraphImpl::getGlyphInfoAtUTF16Offset\28unsigned\20long\2c\20skia::textlayout::Paragraph::GlyphInfo*\29 5091:skia::textlayout::ParagraphImpl::getGlyphClusterAt\28unsigned\20long\2c\20skia::textlayout::Paragraph::GlyphClusterInfo*\29 5092:skia::textlayout::ParagraphImpl::ensureUTF16Mapping\28\29::$_0::operator\28\29\28\29\20const::'lambda0'\28unsigned\20long\29::operator\28\29\28unsigned\20long\29\20const 5093:skia::textlayout::ParagraphImpl::computeEmptyMetrics\28\29 5094:skia::textlayout::ParagraphImpl::buildClusterTable\28\29::$_0::operator\28\29\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20float\2c\20float\29\20const 5095:skia::textlayout::ParagraphCacheKey::ParagraphCacheKey\28skia::textlayout::ParagraphImpl\20const*\29 5096:skia::textlayout::ParagraphBuilderImpl::~ParagraphBuilderImpl\28\29 5097:skia::textlayout::ParagraphBuilderImpl::finalize\28\29 5098:skia::textlayout::ParagraphBuilderImpl::ensureUTF16Mapping\28\29::$_0::operator\28\29\28\29\20const::'lambda0'\28unsigned\20long\29::operator\28\29\28unsigned\20long\29\20const 5099:skia::textlayout::ParagraphBuilderImpl::addPlaceholder\28skia::textlayout::PlaceholderStyle\20const&\2c\20bool\29 5100:skia::textlayout::Paragraph::~Paragraph\28\29 5101:skia::textlayout::Paragraph::FontInfo::~FontInfo\28\29 5102:skia::textlayout::OneLineShaper::clusteredText\28skia::textlayout::SkRange&\29::$_0::operator\28\29\28unsigned\20long\2c\20skia::textlayout::OneLineShaper::clusteredText\28skia::textlayout::SkRange&\29::Dir\29\20const 5103:skia::textlayout::OneLineShaper::clusteredText\28skia::textlayout::SkRange&\29 5104:skia::textlayout::OneLineShaper::FontKey::operator==\28skia::textlayout::OneLineShaper::FontKey\20const&\29\20const 5105:skia::textlayout::InternalLineMetrics::add\28skia::textlayout::InternalLineMetrics\29 5106:skia::textlayout::FontFeature::operator==\28skia::textlayout::FontFeature\20const&\29\20const 5107:skia::textlayout::FontFeature::FontFeature\28skia::textlayout::FontFeature\20const&\29 5108:skia::textlayout::FontCollection::~FontCollection\28\29 5109:skia::textlayout::FontCollection::matchTypeface\28SkString\20const&\2c\20SkFontStyle\29 5110:skia::textlayout::FontCollection::defaultFallback\28int\2c\20SkFontStyle\2c\20SkString\20const&\29 5111:skia::textlayout::FontCollection::FamilyKey::operator==\28skia::textlayout::FontCollection::FamilyKey\20const&\29\20const 5112:skia::textlayout::FontCollection::FamilyKey::FamilyKey\28skia::textlayout::FontCollection::FamilyKey&&\29 5113:skia::textlayout::FontArguments::~FontArguments\28\29 5114:skia::textlayout::Decoration::operator==\28skia::textlayout::Decoration\20const&\29\20const 5115:skia::textlayout::Cluster::trimmedWidth\28unsigned\20long\29\20const 5116:skgpu::to_stablekey\28int\2c\20unsigned\20int\29 5117:skgpu::tess::\28anonymous\20namespace\29::write_curve_index_buffer_base_index\28skgpu::VertexWriter\2c\20unsigned\20long\2c\20unsigned\20short\29 5118:skgpu::tess::StrokeParams::set\28SkStrokeRec\20const&\29 5119:skgpu::tess::StrokeIterator::finishOpenContour\28\29 5120:skgpu::tess::PreChopPathCurves\28float\2c\20SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\29 5121:skgpu::tess::LinearTolerances::setStroke\28skgpu::tess::StrokeParams\20const&\2c\20float\29 5122:skgpu::tess::LinearTolerances::requiredResolveLevel\28\29\20const 5123:skgpu::tess::GetJoinType\28SkStrokeRec\20const&\29 5124:skgpu::tess::FixedCountCurves::WriteVertexBuffer\28skgpu::VertexWriter\2c\20unsigned\20long\29 5125:skgpu::tess::CullTest::areVisible3\28SkPoint\20const*\29\20const 5126:skgpu::tess::ConicHasCusp\28SkPoint\20const*\29 5127:skgpu::tess::CalcNumRadialSegmentsPerRadian\28float\29 5128:skgpu::ganesh::\28anonymous\20namespace\29::add_line_to_segment\28SkPoint\20const&\2c\20skia_private::TArray*\29 5129:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::~SmallPathOp\28\29 5130:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::flush\28GrMeshDrawTarget*\2c\20skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::FlushInfo*\29\20const 5131:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::addToAtlasWithRetry\28GrMeshDrawTarget*\2c\20skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::FlushInfo*\2c\20skgpu::ganesh::SmallPathAtlasMgr*\2c\20int\2c\20int\2c\20void\20const*\2c\20SkRect\20const&\2c\20int\2c\20skgpu::ganesh::SmallPathShapeData*\29\20const 5132:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::SmallPathOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20GrStyledShape\20const&\2c\20SkMatrix\20const&\2c\20bool\2c\20GrUserStencilSettings\20const*\29 5133:skgpu::ganesh::\28anonymous\20namespace\29::HullShader::~HullShader\28\29 5134:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::~AAFlatteningConvexPathOp\28\29 5135:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::recordDraw\28GrMeshDrawTarget*\2c\20int\2c\20unsigned\20long\2c\20void*\2c\20int\2c\20unsigned\20short*\29 5136:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::PathData::PathData\28skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::PathData&&\29 5137:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::AAFlatteningConvexPathOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\2c\20float\2c\20SkStrokeRec::Style\2c\20SkPaint::Join\2c\20float\2c\20GrUserStencilSettings\20const*\29 5138:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::~AAConvexPathOp\28\29 5139:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::PathData::PathData\28skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::PathData&&\29 5140:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::AAConvexPathOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\2c\20GrUserStencilSettings\20const*\29 5141:skgpu::ganesh::TextureOp::Make\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20SkAlphaType\2c\20sk_sp\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20skgpu::ganesh::TextureOp::Saturate\2c\20SkBlendMode\2c\20GrAAType\2c\20DrawQuad*\2c\20SkRect\20const*\29 5142:skgpu::ganesh::SurfaceFillContext::fillRectToRectWithFP\28SkRect\20const&\2c\20SkIRect\20const&\2c\20std::__2::unique_ptr>\29 5143:skgpu::ganesh::SurfaceFillContext::blitTexture\28GrSurfaceProxyView\2c\20SkIRect\20const&\2c\20SkIPoint\20const&\29 5144:skgpu::ganesh::SurfaceFillContext::arenas\28\29 5145:skgpu::ganesh::SurfaceFillContext::addDrawOp\28std::__2::unique_ptr>\29 5146:skgpu::ganesh::SurfaceFillContext::SurfaceFillContext\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20GrSurfaceProxyView\2c\20GrColorInfo\20const&\29 5147:skgpu::ganesh::SurfaceDrawContext::~SurfaceDrawContext\28\29.1 5148:skgpu::ganesh::SurfaceDrawContext::setNeedsStencil\28\29 5149:skgpu::ganesh::SurfaceDrawContext::internalStencilClear\28SkIRect\20const*\2c\20bool\29 5150:skgpu::ganesh::SurfaceDrawContext::fillRectWithEdgeAA\28GrClip\20const*\2c\20GrPaint&&\2c\20GrQuadAAFlags\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20SkRect\20const*\29 5151:skgpu::ganesh::SurfaceDrawContext::drawVertices\28GrClip\20const*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20sk_sp\2c\20GrPrimitiveType*\2c\20bool\29 5152:skgpu::ganesh::SurfaceDrawContext::drawTexturedQuad\28GrClip\20const*\2c\20GrSurfaceProxyView\2c\20SkAlphaType\2c\20sk_sp\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkBlendMode\2c\20DrawQuad*\2c\20SkRect\20const*\29 5153:skgpu::ganesh::SurfaceDrawContext::drawTexture\28GrClip\20const*\2c\20GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20SkBlendMode\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20GrQuadAAFlags\2c\20SkCanvas::SrcRectConstraint\2c\20SkMatrix\20const&\2c\20sk_sp\29 5154:skgpu::ganesh::SurfaceDrawContext::drawStrokedLine\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkPoint\20const*\2c\20SkStrokeRec\20const&\29 5155:skgpu::ganesh::SurfaceDrawContext::drawRegion\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkRegion\20const&\2c\20GrStyle\20const&\2c\20GrUserStencilSettings\20const*\29 5156:skgpu::ganesh::SurfaceDrawContext::drawOval\28GrClip\20const*\2c\20GrPaint&&\2c\20GrAA\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20GrStyle\20const&\29 5157:skgpu::ganesh::SurfaceDrawContext::drawAtlas\28GrClip\20const*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20int\2c\20SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\29 5158:skgpu::ganesh::SurfaceDrawContext::attemptQuadOptimization\28GrClip\20const*\2c\20GrUserStencilSettings\20const*\2c\20DrawQuad*\2c\20GrPaint*\29::$_0::operator\28\29\28\29\20const 5159:skgpu::ganesh::SurfaceDrawContext::SurfaceDrawContext\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20GrSurfaceProxyView\2c\20GrColorType\2c\20sk_sp\2c\20SkSurfaceProps\20const&\29 5160:skgpu::ganesh::SurfaceContext::writePixels\28GrDirectContext*\2c\20GrCPixmap\2c\20SkIPoint\29 5161:skgpu::ganesh::SurfaceContext::rescaleInto\28skgpu::ganesh::SurfaceFillContext*\2c\20SkIRect\2c\20SkIRect\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\29 5162:skgpu::ganesh::SurfaceContext::copy\28sk_sp\2c\20SkIRect\2c\20SkIPoint\29 5163:skgpu::ganesh::SurfaceContext::copyScaled\28sk_sp\2c\20SkIRect\2c\20SkIRect\2c\20SkFilterMode\29 5164:skgpu::ganesh::SurfaceContext::asyncRescaleAndReadPixels\28GrDirectContext*\2c\20SkImageInfo\20const&\2c\20SkIRect\20const&\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29 5165:skgpu::ganesh::SurfaceContext::asyncRescaleAndReadPixelsYUV420\28GrDirectContext*\2c\20SkYUVColorSpace\2c\20bool\2c\20sk_sp\2c\20SkIRect\20const&\2c\20SkISize\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29::FinishContext::~FinishContext\28\29 5166:skgpu::ganesh::SurfaceContext::asyncRescaleAndReadPixelsYUV420\28GrDirectContext*\2c\20SkYUVColorSpace\2c\20bool\2c\20sk_sp\2c\20SkIRect\20const&\2c\20SkISize\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29 5167:skgpu::ganesh::StrokeTessellator::draw\28GrOpFlushState*\29\20const 5168:skgpu::ganesh::StrokeTessellateOp::~StrokeTessellateOp\28\29 5169:skgpu::ganesh::StrokeTessellateOp::prePrepareTessellator\28GrTessellationShader::ProgramArgs&&\2c\20GrAppliedClip&&\29 5170:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::allowed_stroke\28GrCaps\20const*\2c\20SkStrokeRec\20const&\2c\20GrAA\2c\20bool*\29 5171:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::~NonAAStrokeRectOp\28\29 5172:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::NonAAStrokeRectOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20GrSimpleMeshDrawOpHelper::InputFlags\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20SkStrokeRec\20const&\2c\20GrAAType\29 5173:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::~AAStrokeRectOp\28\29 5174:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::ClassID\28\29 5175:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::AAStrokeRectOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::RectInfo\20const&\2c\20bool\29 5176:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::AAStrokeRectOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkPoint\20const&\29 5177:skgpu::ganesh::SoftwarePathRenderer::DrawAroundInvPath\28skgpu::ganesh::SurfaceDrawContext*\2c\20GrPaint&&\2c\20GrUserStencilSettings\20const&\2c\20GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20SkIRect\20const&\29 5178:skgpu::ganesh::SmallPathAtlasMgr::~SmallPathAtlasMgr\28\29.1 5179:skgpu::ganesh::SmallPathAtlasMgr::reset\28\29 5180:skgpu::ganesh::SmallPathAtlasMgr::findOrCreate\28skgpu::ganesh::SmallPathShapeDataKey\20const&\29 5181:skgpu::ganesh::SmallPathAtlasMgr::evict\28skgpu::PlotLocator\29 5182:skgpu::ganesh::SmallPathAtlasMgr::addToAtlas\28GrResourceProvider*\2c\20GrDeferredUploadTarget*\2c\20int\2c\20int\2c\20void\20const*\2c\20skgpu::AtlasLocator*\29 5183:skgpu::ganesh::ShadowRRectOp::Make\28GrRecordingContext*\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkRRect\20const&\2c\20float\2c\20float\29 5184:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::~RegionOpImpl\28\29 5185:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::RegionOpImpl\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkRegion\20const&\2c\20GrAAType\2c\20GrUserStencilSettings\20const*\29 5186:skgpu::ganesh::QuadPerEdgeAA::VertexSpec::primitiveType\28\29\20const 5187:skgpu::ganesh::QuadPerEdgeAA::VertexSpec::VertexSpec\28GrQuad::Type\2c\20skgpu::ganesh::QuadPerEdgeAA::ColorType\2c\20GrQuad::Type\2c\20bool\2c\20skgpu::ganesh::QuadPerEdgeAA::Subset\2c\20GrAAType\2c\20bool\2c\20skgpu::ganesh::QuadPerEdgeAA::IndexBufferOption\29 5188:skgpu::ganesh::QuadPerEdgeAA::Tessellator::append\28GrQuad*\2c\20GrQuad*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20GrQuadAAFlags\29 5189:skgpu::ganesh::QuadPerEdgeAA::Tessellator::Tessellator\28skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20char*\29 5190:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::~QuadPerEdgeAAGeometryProcessor\28\29 5191:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::initializeAttrs\28skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\29 5192:skgpu::ganesh::QuadPerEdgeAA::IssueDraw\28GrCaps\20const&\2c\20GrOpsRenderPass*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20int\2c\20int\2c\20int\2c\20int\29 5193:skgpu::ganesh::QuadPerEdgeAA::GetIndexBuffer\28GrMeshDrawTarget*\2c\20skgpu::ganesh::QuadPerEdgeAA::IndexBufferOption\29 5194:skgpu::ganesh::PathWedgeTessellator::Make\28SkArenaAlloc*\2c\20bool\2c\20skgpu::tess::PatchAttribs\29 5195:skgpu::ganesh::PathTessellator::PathTessellator\28bool\2c\20skgpu::tess::PatchAttribs\29 5196:skgpu::ganesh::PathTessellator::PathDrawList*\20SkArenaAlloc::make\20const&>\28SkMatrix\20const&\2c\20SkPath\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\29 5197:skgpu::ganesh::PathTessellateOp::~PathTessellateOp\28\29 5198:skgpu::ganesh::PathTessellateOp::usesMSAA\28\29\20const 5199:skgpu::ganesh::PathTessellateOp::prepareTessellator\28GrTessellationShader::ProgramArgs\20const&\2c\20GrAppliedClip&&\29 5200:skgpu::ganesh::PathTessellateOp::PathTessellateOp\28SkArenaAlloc*\2c\20GrAAType\2c\20GrUserStencilSettings\20const*\2c\20SkMatrix\20const&\2c\20SkPath\20const&\2c\20GrPaint&&\2c\20SkRect\20const&\29 5201:skgpu::ganesh::PathStencilCoverOp::~PathStencilCoverOp\28\29 5202:skgpu::ganesh::PathStencilCoverOp::prePreparePrograms\28GrTessellationShader::ProgramArgs\20const&\2c\20GrAppliedClip&&\29 5203:skgpu::ganesh::PathStencilCoverOp::ClassID\28\29 5204:skgpu::ganesh::PathInnerTriangulateOp::~PathInnerTriangulateOp\28\29 5205:skgpu::ganesh::PathInnerTriangulateOp::pushFanStencilProgram\28GrTessellationShader::ProgramArgs\20const&\2c\20GrPipeline\20const*\2c\20GrUserStencilSettings\20const*\29 5206:skgpu::ganesh::PathInnerTriangulateOp::prePreparePrograms\28GrTessellationShader::ProgramArgs\20const&\2c\20GrAppliedClip&&\29 5207:skgpu::ganesh::PathCurveTessellator::~PathCurveTessellator\28\29 5208:skgpu::ganesh::PathCurveTessellator::prepareWithTriangles\28GrMeshDrawTarget*\2c\20SkMatrix\20const&\2c\20GrTriangulator::BreadcrumbTriangleList*\2c\20skgpu::ganesh::PathTessellator::PathDrawList\20const&\2c\20int\29 5209:skgpu::ganesh::PathCurveTessellator::Make\28SkArenaAlloc*\2c\20bool\2c\20skgpu::tess::PatchAttribs\29 5210:skgpu::ganesh::OpsTask::setColorLoadOp\28GrLoadOp\2c\20std::__2::array\29 5211:skgpu::ganesh::OpsTask::onMakeClosed\28GrRecordingContext*\2c\20SkIRect*\29 5212:skgpu::ganesh::OpsTask::onExecute\28GrOpFlushState*\29 5213:skgpu::ganesh::OpsTask::addSampledTexture\28GrSurfaceProxy*\29 5214:skgpu::ganesh::OpsTask::addDrawOp\28GrDrawingManager*\2c\20std::__2::unique_ptr>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0::operator\28\29\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29\20const 5215:skgpu::ganesh::OpsTask::addDrawOp\28GrDrawingManager*\2c\20std::__2::unique_ptr>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29 5216:skgpu::ganesh::OpsTask::OpsTask\28GrDrawingManager*\2c\20GrSurfaceProxyView\2c\20GrAuditTrail*\2c\20sk_sp\29 5217:skgpu::ganesh::OpsTask::OpChain::tryConcat\28skgpu::ganesh::OpsTask::OpChain::List*\2c\20GrProcessorSet::Analysis\2c\20GrDstProxyView\20const&\2c\20GrAppliedClip\20const*\2c\20SkRect\20const&\2c\20GrCaps\20const&\2c\20SkArenaAlloc*\2c\20GrAuditTrail*\29 5218:skgpu::ganesh::OpsTask::OpChain::OpChain\28std::__2::unique_ptr>\2c\20GrProcessorSet::Analysis\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const*\29 5219:skgpu::ganesh::MakeFragmentProcessorFromView\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkSamplingOptions\2c\20SkTileMode\20const*\2c\20SkMatrix\20const&\2c\20SkRect\20const*\2c\20SkRect\20const*\29 5220:skgpu::ganesh::LockTextureProxyView\28GrRecordingContext*\2c\20SkImage_Lazy\20const*\2c\20GrImageTexGenPolicy\2c\20skgpu::Mipmapped\29 5221:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::~NonAALatticeOp\28\29 5222:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::NonAALatticeOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20GrSurfaceProxyView\2c\20SkAlphaType\2c\20sk_sp\2c\20SkFilterMode\2c\20std::__2::unique_ptr>\2c\20SkRect\20const&\29 5223:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::~LatticeGP\28\29 5224:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::can_use_hw_derivatives_with_coverage\28skvx::Vec<2\2c\20float>\20const&\2c\20SkPoint\20const&\29 5225:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::~FillRRectOpImpl\28\29 5226:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Make\28GrRecordingContext*\2c\20SkArenaAlloc*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkRRect\20const&\2c\20skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::LocalCoords\20const&\2c\20GrAA\29 5227:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::FillRRectOpImpl\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkArenaAlloc*\2c\20SkMatrix\20const&\2c\20SkRRect\20const&\2c\20skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::LocalCoords\20const&\2c\20skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::ProcessorFlags\29 5228:skgpu::ganesh::DrawableOp::~DrawableOp\28\29 5229:skgpu::ganesh::DrawAtlasPathOp::~DrawAtlasPathOp\28\29 5230:skgpu::ganesh::DrawAtlasPathOp::prepareProgram\28GrCaps\20const&\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 5231:skgpu::ganesh::Device::~Device\28\29 5232:skgpu::ganesh::Device::replaceBackingProxy\28SkSurface::ContentChangeMode\2c\20sk_sp\2c\20GrColorType\2c\20sk_sp\2c\20GrSurfaceOrigin\2c\20SkSurfaceProps\20const&\29 5233:skgpu::ganesh::Device::makeSpecial\28SkBitmap\20const&\29 5234:skgpu::ganesh::Device::drawSlug\28SkCanvas*\2c\20sktext::gpu::Slug\20const*\2c\20SkPaint\20const&\29 5235:skgpu::ganesh::Device::drawPath\28SkPath\20const&\2c\20SkPaint\20const&\2c\20bool\29 5236:skgpu::ganesh::Device::drawEdgeAAImage\28SkImage\20const*\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkMatrix\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\2c\20SkMatrix\20const&\2c\20SkTileMode\29 5237:skgpu::ganesh::Device::convertGlyphRunListToSlug\28sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\29 5238:skgpu::ganesh::Device::android_utils_clipAsRgn\28SkRegion*\29\20const 5239:skgpu::ganesh::DefaultPathRenderer::internalDrawPath\28skgpu::ganesh::SurfaceDrawContext*\2c\20GrPaint&&\2c\20GrAAType\2c\20GrUserStencilSettings\20const&\2c\20GrClip\20const*\2c\20SkMatrix\20const&\2c\20GrStyledShape\20const&\2c\20bool\29 5240:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingLineEffect::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 5241:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::~DashOpImpl\28\29 5242:skgpu::ganesh::CopyView\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20skgpu::Mipmapped\2c\20GrImageTexGenPolicy\2c\20std::__2::basic_string_view>\29 5243:skgpu::ganesh::ClipStack::clipPath\28SkMatrix\20const&\2c\20SkPath\20const&\2c\20GrAA\2c\20SkClipOp\29 5244:skgpu::ganesh::ClipStack::begin\28\29\20const 5245:skgpu::ganesh::ClipStack::SaveRecord::removeElements\28SkTBlockList*\29 5246:skgpu::ganesh::ClipStack::RawElement::clipType\28\29\20const 5247:skgpu::ganesh::ClipStack::Mask::invalidate\28GrProxyProvider*\29 5248:skgpu::ganesh::ClipStack::ElementIter::operator++\28\29 5249:skgpu::ganesh::ClipStack::Element::Element\28skgpu::ganesh::ClipStack::Element\20const&\29 5250:skgpu::ganesh::ClipStack::Draw::Draw\28SkRect\20const&\2c\20GrAA\29 5251:skgpu::ganesh::ClearOp::ClearOp\28skgpu::ganesh::ClearOp::Buffer\2c\20GrScissorState\20const&\2c\20std::__2::array\2c\20bool\29 5252:skgpu::ganesh::AtlasTextOp::~AtlasTextOp\28\29 5253:skgpu::ganesh::AtlasTextOp::operator\20new\28unsigned\20long\29 5254:skgpu::ganesh::AtlasTextOp::onPrepareDraws\28GrMeshDrawTarget*\29::$_0::operator\28\29\28\29\20const 5255:skgpu::ganesh::AtlasTextOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 5256:skgpu::ganesh::AtlasTextOp::ClassID\28\29 5257:skgpu::ganesh::AtlasRenderTask::~AtlasRenderTask\28\29 5258:skgpu::ganesh::AtlasRenderTask::stencilAtlasRect\28GrRecordingContext*\2c\20SkRect\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20GrUserStencilSettings\20const*\29 5259:skgpu::ganesh::AtlasRenderTask::readView\28GrCaps\20const&\29\20const 5260:skgpu::ganesh::AtlasRenderTask::instantiate\28GrOnFlushResourceProvider*\2c\20sk_sp\29 5261:skgpu::ganesh::AtlasRenderTask::addPath\28SkMatrix\20const&\2c\20SkPath\20const&\2c\20SkIPoint\2c\20int\2c\20int\2c\20bool\2c\20SkIPoint16*\29 5262:skgpu::ganesh::AtlasRenderTask::addAtlasDrawOp\28std::__2::unique_ptr>\2c\20GrCaps\20const&\29 5263:skgpu::ganesh::AtlasPathRenderer::~AtlasPathRenderer\28\29.1 5264:skgpu::ganesh::AtlasPathRenderer::preFlush\28GrOnFlushResourceProvider*\29 5265:skgpu::ganesh::AtlasPathRenderer::pathFitsInAtlas\28SkRect\20const&\2c\20GrAAType\29\20const 5266:skgpu::ganesh::AtlasPathRenderer::addPathToAtlas\28GrRecordingContext*\2c\20SkMatrix\20const&\2c\20SkPath\20const&\2c\20SkRect\20const&\2c\20SkIRect*\2c\20SkIPoint16*\2c\20bool*\2c\20std::__2::function\20const&\29 5267:skgpu::ganesh::AtlasPathRenderer::AtlasPathKey::operator==\28skgpu::ganesh::AtlasPathRenderer::AtlasPathKey\20const&\29\20const 5268:skgpu::ganesh::AsFragmentProcessor\28GrRecordingContext*\2c\20SkImage\20const*\2c\20SkSamplingOptions\2c\20SkTileMode\20const*\2c\20SkMatrix\20const&\2c\20SkRect\20const*\2c\20SkRect\20const*\29 5269:skgpu::TiledTextureUtils::OptimizeSampleArea\28SkISize\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkPoint\20const*\2c\20SkRect*\2c\20SkRect*\2c\20SkMatrix*\29 5270:skgpu::TiledTextureUtils::CanDisableMipmap\28SkMatrix\20const&\2c\20SkMatrix\20const&\29 5271:skgpu::TClientMappedBufferManager::process\28\29 5272:skgpu::TAsyncReadResult::~TAsyncReadResult\28\29 5273:skgpu::TAsyncReadResult::count\28\29\20const 5274:skgpu::TAsyncReadResult::Plane::~Plane\28\29 5275:skgpu::Swizzle::RGB1\28\29 5276:skgpu::Swizzle::BGRA\28\29 5277:skgpu::ScratchKey::ScratchKey\28skgpu::ScratchKey\20const&\29 5278:skgpu::ResourceKey::operator=\28skgpu::ResourceKey\20const&\29 5279:skgpu::RefCntedCallback::Make\28void\20\28*\29\28void*\29\2c\20void*\29 5280:skgpu::RectanizerSkyline::addRect\28int\2c\20int\2c\20SkIPoint16*\29 5281:skgpu::RectanizerSkyline::RectanizerSkyline\28int\2c\20int\29 5282:skgpu::Plot::~Plot\28\29 5283:skgpu::Plot::resetRects\28\29 5284:skgpu::Plot::Plot\28int\2c\20int\2c\20skgpu::AtlasGenerationCounter*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20SkColorType\2c\20unsigned\20long\29 5285:skgpu::KeyBuilder::flush\28\29 5286:skgpu::KeyBuilder::addBits\28unsigned\20int\2c\20unsigned\20int\2c\20std::__2::basic_string_view>\29 5287:skgpu::GetReducedBlendModeInfo\28SkBlendMode\29 5288:skgpu::GetApproxSize\28SkISize\29::$_0::operator\28\29\28int\29\20const 5289:skgpu::Compute2DBlurKernel\28SkSize\2c\20SkISize\2c\20SkSpan\29 5290:skgpu::Compute1DBlurKernel\28float\2c\20int\2c\20SkSpan\29 5291:skgpu::AtlasLocator::updatePlotLocator\28skgpu::PlotLocator\29 5292:skgpu::AtlasLocator::insetSrc\28int\29 5293:skcms_Matrix3x3_invert 5294:sk_sp::~sk_sp\28\29 5295:sk_sp<\28anonymous\20namespace\29::UniqueKeyInvalidator>\20sk_make_sp<\28anonymous\20namespace\29::UniqueKeyInvalidator\2c\20skgpu::UniqueKey&\2c\20unsigned\20int>\28skgpu::UniqueKey&\2c\20unsigned\20int&&\29 5296:sk_sp<\28anonymous\20namespace\29::ShadowInvalidator>\20sk_make_sp<\28anonymous\20namespace\29::ShadowInvalidator\2c\20SkResourceCache::Key&>\28SkResourceCache::Key&\29 5297:sk_sp::operator=\28sk_sp\20const&\29 5298:sk_sp&\20std::__2::vector\2c\20std::__2::allocator>>::emplace_back>\28sk_sp&&\29 5299:sk_sp\20sk_make_sp>\28sk_sp&&\29 5300:sk_sp::~sk_sp\28\29 5301:sk_sp::sk_sp\28sk_sp\20const&\29 5302:sk_sp::operator=\28sk_sp&&\29 5303:sk_sp::reset\28SkData\20const*\29 5304:sk_sp::operator=\28sk_sp\20const&\29 5305:sk_sp::operator=\28sk_sp\20const&\29 5306:sk_sp\20sk_make_sp\2c\20float\2c\20sk_sp>\28sk_sp&&\2c\20float&&\2c\20sk_sp&&\29 5307:sk_sp::~sk_sp\28\29 5308:sk_sp&\20sk_sp::operator=\28sk_sp&&\29 5309:sk_sp::reset\28GrSurface::RefCntedReleaseProc*\29 5310:sk_sp::operator=\28sk_sp&&\29 5311:sk_sp::~sk_sp\28\29 5312:sk_sp::operator=\28sk_sp&&\29 5313:sk_sp::~sk_sp\28\29 5314:sk_sp\20sk_make_sp\28\29 5315:sk_sp::reset\28GrArenas*\29 5316:sk_ft_free\28FT_MemoryRec_*\2c\20void*\29 5317:sk_fopen\28char\20const*\2c\20SkFILE_Flags\29 5318:sk_fgetsize\28_IO_FILE*\29 5319:sk_determinant\28float\20const*\2c\20int\29 5320:sk_blit_below\28SkBlitter*\2c\20SkIRect\20const&\2c\20SkRegion\20const&\29 5321:sk_blit_above\28SkBlitter*\2c\20SkIRect\20const&\2c\20SkRegion\20const&\29 5322:sid_to_gid_t\20const*\20hb_sorted_array_t::bsearch\28unsigned\20int\20const&\2c\20sid_to_gid_t\20const*\29 5323:short\20sk_saturate_cast\28float\29 5324:sharp_angle\28SkPoint\20const*\29 5325:setup_masks_arabic_plan\28arabic_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_script_t\29 5326:set_points\28float*\2c\20int*\2c\20int\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20float\2c\20float\2c\20bool\29 5327:set_normal_unitnormal\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20float\2c\20SkPoint*\2c\20SkPoint*\29 5328:set_khr_debug_label\28GrGLGpu*\2c\20unsigned\20int\2c\20std::__2::basic_string_view>\29 5329:setThrew 5330:setEmptyCheck\28SkRegion*\29 5331:serialize_image\28SkImage\20const*\2c\20SkSerialProcs\29 5332:sem_trywait 5333:sem_init 5334:sect_clamp_with_vertical\28SkPoint\20const*\2c\20float\29 5335:scanexp 5336:scalbnl 5337:safe_picture_bounds\28SkRect\20const&\29 5338:rt_has_msaa_render_buffer\28GrGLRenderTarget\20const*\2c\20GrGLCaps\20const&\29 5339:rrect_type_to_vert_count\28RRectType\29 5340:row_is_all_zeros\28unsigned\20char\20const*\2c\20int\29 5341:round_up_to_int\28float\29 5342:round_down_to_int\28float\29 5343:rotate\28SkDCubic\20const&\2c\20int\2c\20int\2c\20SkDCubic&\29 5344:rewind_if_necessary\28GrTriangulator::Edge*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Comparator\20const&\29 5345:resolveImplicitLevels\28UBiDi*\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\29 5346:renderbuffer_storage_msaa\28GrGLGpu*\2c\20int\2c\20unsigned\20int\2c\20int\2c\20int\29 5347:remove_edge_below\28GrTriangulator::Edge*\29 5348:remove_edge_above\28GrTriangulator::Edge*\29 5349:reductionLineCount\28SkDQuad\20const&\29 5350:recursive_edge_intersect\28GrTriangulator::Line\20const&\2c\20SkPoint\2c\20SkPoint\2c\20GrTriangulator::Line\20const&\2c\20SkPoint\2c\20SkPoint\2c\20SkPoint*\2c\20double*\2c\20double*\29 5351:rect_exceeds\28SkRect\20const&\2c\20float\29 5352:reclassify_vertex\28TriangulationVertex*\2c\20SkPoint\20const*\2c\20int\2c\20ReflexHash*\2c\20SkTInternalLList*\29 5353:radii_are_nine_patch\28SkPoint\20const*\29 5354:quad_type_for_transformed_rect\28SkMatrix\20const&\29 5355:quad_intercept_v\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 5356:quad_intercept_h\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 5357:quad_in_line\28SkPoint\20const*\29 5358:puts 5359:pthread_mutex_destroy 5360:pthread_cond_broadcast 5361:psh_hint_table_record 5362:psh_hint_table_init 5363:psh_hint_table_find_strong_points 5364:psh_hint_table_done 5365:psh_hint_table_activate_mask 5366:psh_hint_align 5367:psh_glyph_load_points 5368:psh_globals_scale_widths 5369:psh_compute_dir 5370:psh_blues_set_zones_0 5371:psh_blues_set_zones 5372:ps_table_realloc 5373:ps_parser_to_token_array 5374:ps_parser_load_field 5375:ps_mask_table_last 5376:ps_mask_table_done 5377:ps_hints_stem 5378:ps_dimension_end 5379:ps_dimension_done 5380:ps_dimension_add_t1stem 5381:ps_builder_start_point 5382:ps_builder_close_contour 5383:ps_builder_add_point1 5384:printf_core 5385:prepare_to_draw_into_mask\28SkRect\20const&\2c\20SkMaskBuilder*\29 5386:position_cluster\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20bool\29 5387:portable::uniform_color_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 5388:portable::set_rgb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 5389:portable::scale_1_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 5390:portable::lerp_1_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 5391:portable::copy_from_indirect_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 5392:portable::copy_2_slots_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 5393:portable::check_decal_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 5394:pop_arg 5395:pointInTriangle\28SkDPoint\20const*\2c\20SkDPoint\20const&\29 5396:pntz 5397:png_rtran_ok 5398:png_malloc_array_checked 5399:png_inflate 5400:png_format_buffer 5401:png_decompress_chunk 5402:png_colorspace_check_gamma 5403:png_cache_unknown_chunk 5404:pin_offset_s32\28int\2c\20int\2c\20int\29 5405:path_key_from_data_size\28SkPath\20const&\29 5406:parse_private_use_subtag\28char\20const*\2c\20unsigned\20int*\2c\20unsigned\20int*\2c\20char\20const*\2c\20unsigned\20char\20\28*\29\28unsigned\20char\29\29 5407:paint_color_to_dst\28SkPaint\20const&\2c\20SkPixmap\20const&\29 5408:optimize_layer_filter\28SkImageFilter\20const*\2c\20SkPaint*\29 5409:operator==\28SkRect\20const&\2c\20SkRect\20const&\29 5410:operator==\28SkRRect\20const&\2c\20SkRRect\20const&\29 5411:operator==\28SkPaint\20const&\2c\20SkPaint\20const&\29 5412:operator!=\28SkRRect\20const&\2c\20SkRRect\20const&\29 5413:open_face 5414:on_same_side\28SkPoint\20const*\2c\20int\2c\20int\29 5415:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::TransformedMaskSubRun::~TransformedMaskSubRun\28\29.1 5416:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::TransformedMaskSubRun::~TransformedMaskSubRun\28\29 5417:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::TransformedMaskSubRun::testingOnly_packedGlyphIDToGlyph\28sktext::gpu::StrikeCache*\29\20const 5418:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::TransformedMaskSubRun::glyphs\28\29\20const 5419:non-virtual\20thunk\20to\20SkMeshPriv::CpuBuffer::~CpuBuffer\28\29.1 5420:non-virtual\20thunk\20to\20SkMeshPriv::CpuBuffer::~CpuBuffer\28\29 5421:non-virtual\20thunk\20to\20SkMeshPriv::CpuBuffer::size\28\29\20const 5422:non-virtual\20thunk\20to\20SkMeshPriv::CpuBuffer::onUpdate\28GrDirectContext*\2c\20void\20const*\2c\20unsigned\20long\2c\20unsigned\20long\29 5423:move_multiples\28SkOpContourHead*\29 5424:mono_cubic_closestT\28float\20const*\2c\20float\29 5425:mbsrtowcs 5426:matchesEnd\28SkDPoint\20const*\2c\20SkDPoint\20const&\29 5427:map_rect_perspective\28SkRect\20const&\2c\20float\20const*\29::$_0::operator\28\29\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\29\20const::'lambda'\28skvx::Vec<4\2c\20float>\20const&\29::operator\28\29\28skvx::Vec<4\2c\20float>\20const&\29\20const 5428:map_quad_to_rect\28SkRSXform\20const&\2c\20SkRect\20const&\29 5429:map_quad_general\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20SkMatrix\20const&\2c\20skvx::Vec<4\2c\20float>*\2c\20skvx::Vec<4\2c\20float>*\2c\20skvx::Vec<4\2c\20float>*\29 5430:make_xrect\28SkRect\20const&\29 5431:make_tiled_gradient\28GrFPArgs\20const&\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20bool\2c\20bool\29 5432:make_premul_effect\28std::__2::unique_ptr>\29 5433:make_paint_with_image\28SkPaint\20const&\2c\20SkBitmap\20const&\2c\20SkSamplingOptions\20const&\2c\20SkMatrix*\29 5434:make_dual_interval_colorizer\28SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20float\29 5435:make_clamped_gradient\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20SkRGBA4f<\28SkAlphaType\292>\2c\20SkRGBA4f<\28SkAlphaType\292>\2c\20bool\29 5436:make_bmp_proxy\28GrProxyProvider*\2c\20SkBitmap\20const&\2c\20GrColorType\2c\20skgpu::Mipmapped\2c\20SkBackingFit\2c\20skgpu::Budgeted\29 5437:long\20std::__2::__num_get_signed_integral\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\2c\20int\29 5438:long\20long\20std::__2::__num_get_signed_integral\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\2c\20int\29 5439:long\20double\20std::__2::__num_get_float\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\29 5440:log2f_\28float\29 5441:load_post_names 5442:line_intercept_v\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 5443:line_intercept_h\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 5444:lineMetrics_getLineNumber 5445:lineMetrics_getHardBreak 5446:lineBreakBuffer_free 5447:lin_srgb_to_oklab\28SkRGBA4f<\28SkAlphaType\292>\2c\20bool*\29 5448:lang_find_or_insert\28char\20const*\29 5449:is_zero_width_char\28hb_font_t*\2c\20unsigned\20int\29 5450:is_simple_rect\28GrQuad\20const&\29 5451:is_plane_config_compatible_with_subsampling\28SkYUVAInfo::PlaneConfig\2c\20SkYUVAInfo::Subsampling\29 5452:is_overlap_edge\28GrTriangulator::Edge*\29 5453:is_int\28float\29 5454:is_halant_use\28hb_glyph_info_t\20const&\29 5455:is_float_fp32\28GrGLContextInfo\20const&\2c\20GrGLInterface\20const*\2c\20unsigned\20int\29 5456:iprintf 5457:invalidate_buffer\28GrGLGpu*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20long\29 5458:interp_cubic_coords\28double\20const*\2c\20double*\2c\20double\29 5459:int\20SkRecords::Pattern>::matchFirst>\28SkRecords::Is*\2c\20SkRecord*\2c\20int\29 5460:int\20OT::IntType::cmp\28unsigned\20int\29\20const 5461:inside_triangle\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\29 5462:init_mparams 5463:init_em_queued_call_args 5464:inflateEnd 5465:image_ref 5466:image_getWidth 5467:hb_vector_t::resize\28int\2c\20bool\2c\20bool\29 5468:hb_vector_t\2c\20false>::shrink_vector\28unsigned\20int\29 5469:hb_vector_t\2c\20false>::resize\28int\2c\20bool\2c\20bool\29 5470:hb_vector_t::alloc\28unsigned\20int\2c\20bool\29 5471:hb_vector_t::alloc\28unsigned\20int\2c\20bool\29 5472:hb_vector_t::alloc\28unsigned\20int\2c\20bool\29 5473:hb_vector_t::pop\28\29 5474:hb_vector_t\2c\20false>::shrink_vector\28unsigned\20int\29 5475:hb_vector_t\2c\20false>::fini\28\29 5476:hb_vector_t::shrink_vector\28unsigned\20int\29 5477:hb_vector_t::fini\28\29 5478:hb_unicode_mirroring_nil\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20void*\29 5479:hb_unicode_funcs_t::is_default_ignorable\28unsigned\20int\29 5480:hb_unicode_funcs_get_default 5481:hb_tag_from_string 5482:hb_shape_plan_key_t::init\28bool\2c\20hb_face_t*\2c\20hb_segment_properties_t\20const*\2c\20hb_feature_t\20const*\2c\20unsigned\20int\2c\20int\20const*\2c\20unsigned\20int\2c\20char\20const*\20const*\29 5483:hb_shape_plan_key_t::fini\28\29 5484:hb_set_digest_combiner_t\2c\20hb_set_digest_combiner_t\2c\20hb_set_digest_bits_pattern_t>>::may_have\28hb_set_digest_combiner_t\2c\20hb_set_digest_combiner_t\2c\20hb_set_digest_bits_pattern_t>>\20const&\29\20const 5485:hb_set_digest_combiner_t\2c\20hb_set_digest_combiner_t\2c\20hb_set_digest_bits_pattern_t>>::add\28hb_set_digest_combiner_t\2c\20hb_set_digest_combiner_t\2c\20hb_set_digest_bits_pattern_t>>\20const&\29 5486:hb_serialize_context_t::fini\28\29 5487:hb_sanitize_context_t::return_t\20OT::Context::dispatch\28hb_sanitize_context_t*\29\20const 5488:hb_sanitize_context_t::return_t\20OT::ChainContext::dispatch\28hb_sanitize_context_t*\29\20const 5489:hb_paint_funcs_t::sweep_gradient\28void*\2c\20hb_color_line_t*\2c\20float\2c\20float\2c\20float\2c\20float\29 5490:hb_paint_funcs_t::radial_gradient\28void*\2c\20hb_color_line_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 5491:hb_paint_funcs_t::push_skew\28void*\2c\20float\2c\20float\29 5492:hb_paint_funcs_t::push_rotate\28void*\2c\20float\29 5493:hb_paint_funcs_t::push_root_transform\28void*\2c\20hb_font_t\20const*\29 5494:hb_paint_funcs_t::push_inverse_root_transform\28void*\2c\20hb_font_t*\29 5495:hb_paint_funcs_t::push_group\28void*\29 5496:hb_paint_funcs_t::pop_group\28void*\2c\20hb_paint_composite_mode_t\29 5497:hb_paint_funcs_t::linear_gradient\28void*\2c\20hb_color_line_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 5498:hb_paint_extents_paint_linear_gradient\28hb_paint_funcs_t*\2c\20void*\2c\20hb_color_line_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 5499:hb_paint_extents_get_funcs\28\29 5500:hb_paint_extents_context_t::~hb_paint_extents_context_t\28\29 5501:hb_paint_extents_context_t::pop_clip\28\29 5502:hb_paint_extents_context_t::hb_paint_extents_context_t\28\29 5503:hb_ot_map_t::fini\28\29 5504:hb_ot_map_builder_t::add_pause\28unsigned\20int\2c\20bool\20\28*\29\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29\29 5505:hb_ot_map_builder_t::add_lookups\28hb_ot_map_t&\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20bool\2c\20bool\2c\20bool\2c\20bool\2c\20unsigned\20int\29 5506:hb_ot_layout_has_substitution 5507:hb_ot_font_set_funcs 5508:hb_lazy_loader_t\2c\20hb_face_t\2c\2038u\2c\20OT::sbix_accelerator_t>::get_stored\28\29\20const 5509:hb_lazy_loader_t\2c\20hb_face_t\2c\207u\2c\20OT::post_accelerator_t>::get_stored\28\29\20const 5510:hb_lazy_loader_t\2c\20hb_face_t\2c\207u\2c\20OT::post_accelerator_t>::do_destroy\28OT::post_accelerator_t*\29 5511:hb_lazy_loader_t\2c\20hb_face_t\2c\2023u\2c\20hb_blob_t>::get_stored\28\29\20const 5512:hb_lazy_loader_t\2c\20hb_face_t\2c\205u\2c\20OT::hmtx_accelerator_t>::get_stored\28\29\20const 5513:hb_lazy_loader_t\2c\20hb_face_t\2c\2021u\2c\20OT::gvar_accelerator_t>::do_destroy\28OT::gvar_accelerator_t*\29 5514:hb_lazy_loader_t\2c\20hb_face_t\2c\2015u\2c\20OT::glyf_accelerator_t>::do_destroy\28OT::glyf_accelerator_t*\29 5515:hb_lazy_loader_t\2c\20hb_face_t\2c\203u\2c\20OT::cmap_accelerator_t>::do_destroy\28OT::cmap_accelerator_t*\29 5516:hb_lazy_loader_t\2c\20hb_face_t\2c\2017u\2c\20OT::cff2_accelerator_t>::get_stored\28\29\20const 5517:hb_lazy_loader_t\2c\20hb_face_t\2c\2017u\2c\20OT::cff2_accelerator_t>::do_destroy\28OT::cff2_accelerator_t*\29 5518:hb_lazy_loader_t\2c\20hb_face_t\2c\2016u\2c\20OT::cff1_accelerator_t>::do_destroy\28OT::cff1_accelerator_t*\29 5519:hb_lazy_loader_t\2c\20hb_face_t\2c\2019u\2c\20hb_blob_t>::get\28\29\20const 5520:hb_lazy_loader_t\2c\20hb_face_t\2c\2024u\2c\20OT::GDEF_accelerator_t>::do_destroy\28OT::GDEF_accelerator_t*\29 5521:hb_lazy_loader_t\2c\20hb_face_t\2c\2035u\2c\20hb_blob_t>::get\28\29\20const 5522:hb_lazy_loader_t\2c\20hb_face_t\2c\2037u\2c\20OT::CBDT_accelerator_t>::get_stored\28\29\20const 5523:hb_lazy_loader_t\2c\20hb_face_t\2c\2037u\2c\20OT::CBDT_accelerator_t>::do_destroy\28OT::CBDT_accelerator_t*\29 5524:hb_lazy_loader_t\2c\20hb_face_t\2c\2032u\2c\20hb_blob_t>::get\28\29\20const 5525:hb_lazy_loader_t\2c\20hb_face_t\2c\2028u\2c\20hb_blob_t>::get_stored\28\29\20const 5526:hb_lazy_loader_t\2c\20hb_face_t\2c\2028u\2c\20hb_blob_t>::get\28\29\20const 5527:hb_lazy_loader_t\2c\20hb_face_t\2c\2029u\2c\20hb_blob_t>::get_stored\28\29\20const 5528:hb_lazy_loader_t\2c\20hb_face_t\2c\2029u\2c\20hb_blob_t>::get\28\29\20const 5529:hb_lazy_loader_t\2c\20hb_face_t\2c\2033u\2c\20hb_blob_t>::get\28\29\20const 5530:hb_lazy_loader_t\2c\20hb_face_t\2c\2030u\2c\20hb_blob_t>::get_stored\28\29\20const 5531:hb_language_matches 5532:hb_iter_t\2c\20hb_filter_iter_t\2c\20hb_array_t>\2c\20find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_glyph_info_t\20const&\29\2c\20$_6\20const&\2c\20\28void*\290>\2c\20find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_pair_t\29\2c\20$_5\20const&\2c\20\28void*\290>>\2c\20hb_pair_t>>::operator-=\28unsigned\20int\29\20& 5533:hb_iter_t\2c\20hb_filter_iter_t\2c\20hb_array_t>\2c\20find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_glyph_info_t\20const&\29\2c\20$_6\20const&\2c\20\28void*\290>\2c\20find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_pair_t\29\2c\20$_5\20const&\2c\20\28void*\290>>\2c\20hb_pair_t>>::operator+=\28unsigned\20int\29\20& 5534:hb_iter_t\2c\20hb_array_t>\2c\20find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_glyph_info_t\20const&\29\2c\20$_6\20const&\2c\20\28void*\290>\2c\20hb_pair_t>::operator++\28\29\20& 5535:hb_iter_t\2c\20hb_array_t>\2c\20find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_glyph_info_t\20const&\29\2c\20$_6\20const&\2c\20\28void*\290>\2c\20find_syllables_use\28hb_buffer_t*\29::'lambda'\28hb_pair_t\29\2c\20$_5\20const&\2c\20\28void*\290>\2c\20hb_pair_t>::operator--\28\29\20& 5536:hb_indic_get_categories\28unsigned\20int\29 5537:hb_hashmap_t::fetch_item\28unsigned\20int\20const&\2c\20unsigned\20int\29\20const 5538:hb_hashmap_t::fetch_item\28hb_serialize_context_t::object_t\20const*\20const&\2c\20unsigned\20int\29\20const 5539:hb_font_t::subtract_glyph_origin_for_direction\28unsigned\20int\2c\20hb_direction_t\2c\20int*\2c\20int*\29 5540:hb_font_t::subtract_glyph_h_origin\28unsigned\20int\2c\20int*\2c\20int*\29 5541:hb_font_t::guess_v_origin_minus_h_origin\28unsigned\20int\2c\20int*\2c\20int*\29 5542:hb_font_t::get_variation_glyph\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int\29 5543:hb_font_t::get_glyph_v_origin_with_fallback\28unsigned\20int\2c\20int*\2c\20int*\29 5544:hb_font_t::get_glyph_v_kerning\28unsigned\20int\2c\20unsigned\20int\29 5545:hb_font_t::get_glyph_h_kerning\28unsigned\20int\2c\20unsigned\20int\29 5546:hb_font_t::get_glyph_contour_point\28unsigned\20int\2c\20unsigned\20int\2c\20int*\2c\20int*\29 5547:hb_font_t::get_font_h_extents\28hb_font_extents_t*\29 5548:hb_font_t::draw_glyph\28unsigned\20int\2c\20hb_draw_funcs_t*\2c\20void*\29 5549:hb_font_set_variations 5550:hb_font_set_funcs 5551:hb_font_get_variation_glyph_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 5552:hb_font_get_font_h_extents_nil\28hb_font_t*\2c\20void*\2c\20hb_font_extents_t*\2c\20void*\29 5553:hb_font_funcs_set_variation_glyph_func 5554:hb_font_funcs_set_nominal_glyphs_func 5555:hb_font_funcs_set_nominal_glyph_func 5556:hb_font_funcs_set_glyph_h_advances_func 5557:hb_font_funcs_set_glyph_extents_func 5558:hb_font_funcs_create 5559:hb_font_destroy 5560:hb_face_destroy 5561:hb_face_create_for_tables 5562:hb_draw_move_to_nil\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20void*\29 5563:hb_draw_funcs_t::emit_move_to\28void*\2c\20hb_draw_state_t&\2c\20float\2c\20float\29 5564:hb_draw_funcs_set_quadratic_to_func 5565:hb_draw_funcs_set_move_to_func 5566:hb_draw_funcs_set_line_to_func 5567:hb_draw_funcs_set_cubic_to_func 5568:hb_draw_funcs_destroy 5569:hb_draw_funcs_create 5570:hb_draw_extents_move_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20void*\29 5571:hb_cache_t<24u\2c\2016u\2c\208u\2c\20true>::clear\28\29 5572:hb_buffer_t::sort\28unsigned\20int\2c\20unsigned\20int\2c\20int\20\28*\29\28hb_glyph_info_t\20const*\2c\20hb_glyph_info_t\20const*\29\29 5573:hb_buffer_t::safe_to_insert_tatweel\28unsigned\20int\2c\20unsigned\20int\29 5574:hb_buffer_t::next_glyphs\28unsigned\20int\29 5575:hb_buffer_t::message_impl\28hb_font_t*\2c\20char\20const*\2c\20void*\29 5576:hb_buffer_t::delete_glyphs_inplace\28bool\20\28*\29\28hb_glyph_info_t\20const*\29\29 5577:hb_buffer_t::clear\28\29 5578:hb_buffer_t::add\28unsigned\20int\2c\20unsigned\20int\29 5579:hb_buffer_get_glyph_positions 5580:hb_buffer_diff 5581:hb_buffer_clear_contents 5582:hb_buffer_add_utf8 5583:hb_bounds_t::union_\28hb_bounds_t\20const&\29 5584:hb_blob_t::destroy_user_data\28\29 5585:hb_blob_t*\20hb_sanitize_context_t::sanitize_blob\28hb_blob_t*\29 5586:hb_array_t::hash\28\29\20const 5587:hb_array_t::cmp\28hb_array_t\20const&\29\20const 5588:hb_array_t>::qsort\28int\20\28*\29\28void\20const*\2c\20void\20const*\29\29 5589:hb_array_t::__next__\28\29 5590:hb_aat_map_builder_t::feature_info_t\20const*\20hb_vector_t::bsearch\28hb_aat_map_builder_t::feature_info_t\20const&\2c\20hb_aat_map_builder_t::feature_info_t\20const*\29\20const 5591:hb_aat_map_builder_t::feature_info_t::cmp\28void\20const*\2c\20void\20const*\29 5592:hb_aat_map_builder_t::feature_info_t::cmp\28hb_aat_map_builder_t::feature_info_t\20const&\29\20const 5593:hb_aat_layout_remove_deleted_glyphs\28hb_buffer_t*\29 5594:has_msaa_render_buffer\28GrSurfaceProxy\20const*\2c\20GrGLCaps\20const&\29 5595:hair_cubic\28SkPoint\20const*\2c\20SkRegion\20const*\2c\20SkBlitter*\2c\20void\20\28*\29\28SkPoint\20const*\2c\20int\2c\20SkRegion\20const*\2c\20SkBlitter*\29\29 5596:getint 5597:get_win_string 5598:get_tasks_for_thread 5599:get_paint\28GrAA\2c\20unsigned\20char\29 5600:get_layer_mapping_and_bounds\28SkSpan>\2c\20SkMatrix\20const&\2c\20skif::DeviceSpace\20const&\2c\20std::__2::optional>\2c\20bool\2c\20float\29::$_0::operator\28\29\28int\29\20const 5601:get_layer_mapping_and_bounds\28SkSpan>\2c\20SkMatrix\20const&\2c\20skif::DeviceSpace\20const&\2c\20std::__2::optional>\2c\20bool\2c\20float\29 5602:get_dst_swizzle_and_store\28GrColorType\2c\20SkRasterPipelineOp*\2c\20LumMode*\2c\20bool*\2c\20bool*\29 5603:get_driver_and_version\28GrGLStandard\2c\20GrGLVendor\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\29 5604:get_apple_string 5605:getSingleRun\28UBiDi*\2c\20unsigned\20char\29 5606:getRunFromLogicalIndex\28UBiDi*\2c\20int\29 5607:getMirror\28int\2c\20unsigned\20short\29\20\28.8823\29 5608:geometric_overlap\28SkRect\20const&\2c\20SkRect\20const&\29 5609:geometric_contains\28SkRect\20const&\2c\20SkRect\20const&\29 5610:gen_key\28skgpu::KeyBuilder*\2c\20GrProgramInfo\20const&\2c\20GrCaps\20const&\29 5611:gen_fp_key\28GrFragmentProcessor\20const&\2c\20GrCaps\20const&\2c\20skgpu::KeyBuilder*\29 5612:gather_uniforms_and_check_for_main\28SkSL::Program\20const&\2c\20std::__2::vector>*\2c\20std::__2::vector>*\2c\20SkRuntimeEffect::Uniform::Flags\2c\20unsigned\20long*\29 5613:fwrite 5614:ft_var_to_normalized 5615:ft_var_load_item_variation_store 5616:ft_var_load_hvvar 5617:ft_var_load_avar 5618:ft_var_get_value_pointer 5619:ft_var_get_item_delta 5620:ft_var_apply_tuple 5621:ft_set_current_renderer 5622:ft_recompute_scaled_metrics 5623:ft_mem_strcpyn 5624:ft_mem_dup 5625:ft_hash_num_lookup 5626:ft_gzip_alloc 5627:ft_glyphslot_preset_bitmap 5628:ft_glyphslot_done 5629:ft_corner_orientation 5630:ft_corner_is_flat 5631:ft_cmap_done_internal 5632:frexp 5633:fread 5634:fquad_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 5635:fp_force_eval 5636:fp_barrier 5637:formulate_F1DotF2\28float\20const*\2c\20float*\29 5638:formulate_F1DotF2\28double\20const*\2c\20double*\29 5639:format_alignment\28SkMask::Format\29 5640:format1_names\28unsigned\20int\29 5641:fopen 5642:fold_opacity_layer_color_to_paint\28SkPaint\20const*\2c\20bool\2c\20SkPaint*\29 5643:fmodl 5644:float\20std::__2::__num_get_float\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\29 5645:float\20const*\20std::__2::min_element\5babi:v160004\5d>\28float\20const*\2c\20float\20const*\2c\20std::__2::__less\29 5646:float\20const*\20std::__2::max_element\5babi:v160004\5d>\28float\20const*\2c\20float\20const*\2c\20std::__2::__less\29 5647:fline_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 5648:first_axis_intersection\28double\20const*\2c\20bool\2c\20double\2c\20double*\29 5649:fiprintf 5650:find_unicode_charmap 5651:find_diff_pt\28SkPoint\20const*\2c\20int\2c\20int\2c\20int\29 5652:find_a8_rowproc_pair\28SkBlendMode\29 5653:fillable\28SkRect\20const&\29 5654:fileno 5655:fcubic_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 5656:fconic_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 5657:exp2f_\28float\29 5658:exp2f 5659:eval_cubic_pts\28float\2c\20float\2c\20float\2c\20float\2c\20float\29 5660:eval_cubic_derivative\28SkPoint\20const*\2c\20float\29 5661:em_task_queue_free 5662:em_task_queue_enqueue 5663:em_task_queue_dequeue 5664:em_task_queue_create 5665:em_task_queue_cancel 5666:elliptical_effect_uses_scale\28GrShaderCaps\20const&\2c\20SkRRect\20const&\29 5667:edge_line_needs_recursion\28SkPoint\20const&\2c\20SkPoint\20const&\29 5668:eat_space_sep_strings\28skia_private::TArray*\2c\20char\20const*\29 5669:draw_rect_as_path\28SkDrawBase\20const&\2c\20SkRect\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\29 5670:draw_nine\28SkMask\20const&\2c\20SkIRect\20const&\2c\20SkIPoint\20const&\2c\20bool\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 5671:dquad_intersect_ray\28SkDCurve\20const&\2c\20SkDLine\20const&\2c\20SkIntersections*\29 5672:double\20std::__2::__num_get_float\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\29 5673:do_fixed 5674:do_dispatch_to_thread 5675:doWriteReverse\28char16_t\20const*\2c\20int\2c\20char16_t*\2c\20int\2c\20unsigned\20short\2c\20UErrorCode*\29 5676:doWriteForward\28char16_t\20const*\2c\20int\2c\20char16_t*\2c\20int\2c\20unsigned\20short\2c\20UErrorCode*\29 5677:dline_intersect_ray\28SkDCurve\20const&\2c\20SkDLine\20const&\2c\20SkIntersections*\29 5678:distance_to_sentinel\28int\20const*\29 5679:dispose_chunk 5680:diff_to_shift\28int\2c\20int\2c\20int\29 5681:destroy_size 5682:destroy_charmaps 5683:demangling_terminate_handler\28\29 5684:deferred_blit\28SkAnalyticEdge*\2c\20SkAnalyticEdge*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20bool\2c\20bool\2c\20bool\2c\20AdditiveBlitter*\2c\20unsigned\20char*\2c\20bool\2c\20bool\2c\20int\2c\20int\2c\20int\29 5685:decompose_current_character\28hb_ot_shape_normalize_context_t\20const*\2c\20bool\29 5686:decompose\28hb_ot_shape_normalize_context_t\20const*\2c\20bool\2c\20unsigned\20int\29 5687:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::Make\28SkArenaAlloc*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 5688:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28bool&\2c\20skgpu::tess::PatchAttribs&\29::'lambda'\28void*\29>\28skgpu::ganesh::PathCurveTessellator&&\29::'lambda'\28char*\29::__invoke\28char*\29 5689:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\2c\20SkFilterMode\2c\20bool\29::'lambda'\28void*\29>\28skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::Make\28SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20sk_sp\2c\20SkFilterMode\2c\20bool\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 5690:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::MeshGP::Make\28SkArenaAlloc*\2c\20sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::MeshGP::Make\28SkArenaAlloc*\2c\20sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 5691:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::GaussPass::MakeMaker\28double\2c\20SkArenaAlloc*\29::Maker*\20SkArenaAlloc::make<\28anonymous\20namespace\29::GaussPass::MakeMaker\28double\2c\20SkArenaAlloc*\29::Maker\2c\20int&>\28int&\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::GaussPass::MakeMaker\28double\2c\20SkArenaAlloc*\29::Maker&&\29::'lambda'\28char*\29::__invoke\28char*\29 5692:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkShaderBase&\2c\20bool\20const&\29::'lambda'\28void*\29>\28SkTransformShader&&\29::'lambda'\28char*\29::__invoke\28char*\29 5693:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkPixmap\20const&\2c\20SkPaint\20const&\29::'lambda'\28void*\29>\28SkA8_Blitter&&\29::'lambda'\28char*\29::__invoke\28char*\29 5694:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28skgpu::UniqueKey\20const&\2c\20GrSurfaceProxyView\20const&\29::'lambda'\28void*\29>\28GrThreadSafeCache::Entry&&\29::'lambda'\28char*\29::__invoke\28char*\29 5695:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\20const&\2c\20SkMatrix\20const&\2c\20GrCaps\20const&\2c\20SkMatrix\20const&\2c\20bool\2c\20unsigned\20char\29::'lambda'\28void*\29>\28GrQuadEffect::Make\28SkArenaAlloc*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20GrCaps\20const&\2c\20SkMatrix\20const&\2c\20bool\2c\20unsigned\20char\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 5696:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28GrPipeline::InitArgs&\2c\20GrProcessorSet&&\2c\20GrAppliedClip&&\29::'lambda'\28void*\29>\28GrPipeline&&\29::'lambda'\28char*\29::__invoke\28char*\29 5697:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28GrDistanceFieldA8TextGeoProc::Make\28SkArenaAlloc*\2c\20GrShaderCaps\20const&\2c\20GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\2c\20float\2c\20unsigned\20int\2c\20SkMatrix\20const&\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 5698:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\20const&\2c\20SkMatrix\20const&\2c\20SkMatrix\20const&\2c\20bool\2c\20unsigned\20char\29::'lambda'\28void*\29>\28DefaultGeoProc::Make\28SkArenaAlloc*\2c\20unsigned\20int\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkMatrix\20const&\2c\20bool\2c\20unsigned\20char\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 5699:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28CircleGeometryProcessor::Make\28SkArenaAlloc*\2c\20bool\2c\20bool\2c\20bool\2c\20bool\2c\20bool\2c\20bool\2c\20SkMatrix\20const&\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 5700:decltype\28fp0\28\28SkRecords::NoOp\29\28\29\29\29\20SkRecord::visit\28int\2c\20SkRecords::Draw&\29\20const 5701:decltype\28fp0\28\28SkRecords::NoOp*\29\28nullptr\29\29\29\20SkRecord::mutate\28int\2c\20SkRecord::Destroyer&\29 5702:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul\2c\201ul>::__dispatch\5babi:v160004\5d>::__generic_assign\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&>\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\29::'lambda'\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 5703:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul\2c\200ul>::__dispatch\5babi:v160004\5d\2c\20std::__2::unique_ptr>>>::__generic_construct\5babi:v160004\5d\2c\20std::__2::unique_ptr>>\2c\20\28std::__2::__variant_detail::_Trait\291>>\28std::__2::__variant_detail::__ctor\2c\20std::__2::unique_ptr>>>&\2c\20std::__2::__variant_detail::__move_constructor\2c\20std::__2::unique_ptr>>\2c\20\28std::__2::__variant_detail::_Trait\291>&&\29::'lambda'\28std::__2::__variant_detail::__move_constructor\2c\20std::__2::unique_ptr>>\2c\20\28std::__2::__variant_detail::_Trait\291>&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&&>\28std::__2::__variant_detail::__move_constructor\2c\20std::__2::unique_ptr>>\2c\20\28std::__2::__variant_detail::_Trait\291>\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&&\29 5704:dcubic_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 5705:dcubic_intersect_ray\28SkDCurve\20const&\2c\20SkDLine\20const&\2c\20SkIntersections*\29 5706:dconic_intersect_ray\28SkDCurve\20const&\2c\20SkDLine\20const&\2c\20SkIntersections*\29 5707:data_destroy_arabic\28void*\29 5708:data_create_arabic\28hb_ot_shape_plan_t\20const*\29 5709:cycle 5710:cubic_intercept_v\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 5711:cubic_intercept_h\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 5712:cubic_delta_from_line\28int\2c\20int\2c\20int\2c\20int\29 5713:crop_simple_rect\28SkRect\20const&\2c\20float*\2c\20float*\2c\20float*\2c\20float*\29 5714:crop_rect\28SkRect\20const&\2c\20float*\2c\20float*\2c\20float*\2c\20float*\2c\20float*\29 5715:count_scalable_pixels\28int\20const*\2c\20int\2c\20bool\2c\20int\2c\20int\29 5716:copysignl 5717:copy_mask_to_cacheddata\28SkMaskBuilder*\29 5718:copy_bitmap_subset\28SkBitmap\20const&\2c\20SkIRect\20const&\29 5719:contour_point_vector_t::extend\28hb_array_t\20const&\29 5720:contourMeasure_length 5721:conservative_round_to_int\28SkRect\20const&\29 5722:conic_intercept_v\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 5723:conic_intercept_h\28SkPoint\20const*\2c\20float\2c\20float\2c\20double*\29 5724:conic_eval_tan\28double\20const*\2c\20float\2c\20double\29 5725:conic_deriv_coeff\28double\20const*\2c\20float\2c\20double*\29 5726:compute_stroke_size\28SkPaint\20const&\2c\20SkMatrix\20const&\29 5727:compute_pos_tan\28SkPoint\20const*\2c\20unsigned\20int\2c\20float\2c\20SkPoint*\2c\20SkPoint*\29 5728:compute_normal\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20SkPoint*\29 5729:compute_intersection\28OffsetSegment\20const&\2c\20OffsetSegment\20const&\2c\20SkPoint*\2c\20float*\2c\20float*\29 5730:compute_anti_width\28short\20const*\29 5731:compose_khmer\28hb_ot_shape_normalize_context_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\29 5732:clip_to_limit\28SkRegion\20const&\2c\20SkRegion*\29 5733:clip_line\28SkPoint*\2c\20SkRect\20const&\2c\20float\2c\20float\29 5734:clipHandlesSprite\28SkRasterClip\20const&\2c\20int\2c\20int\2c\20SkPixmap\20const&\29 5735:clean_sampling_for_constraint\28SkSamplingOptions\20const&\2c\20SkCanvas::SrcRectConstraint\29 5736:clamp_to_zero\28SkPoint*\29 5737:clamp\28SkPoint\2c\20SkPoint\2c\20SkPoint\2c\20GrTriangulator::Comparator\20const&\29 5738:chop_mono_cubic_at_x\28SkPoint*\2c\20float\2c\20SkPoint*\29 5739:chopMonoQuadAt\28float\2c\20float\2c\20float\2c\20float\2c\20float*\29 5740:chopMonoQuadAtY\28SkPoint*\2c\20float\2c\20float*\29 5741:chopMonoQuadAtX\28SkPoint*\2c\20float\2c\20float*\29 5742:checkint 5743:check_write_and_transfer_input\28GrGLTexture*\29 5744:check_name\28SkString\20const&\29 5745:check_backend_texture\28GrBackendTexture\20const&\2c\20GrGLCaps\20const&\2c\20GrGLTexture::Desc*\2c\20bool\29 5746:char*\20std::__2::copy\5babi:v160004\5d\2c\20char*>\28std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\2c\20char*\29 5747:char*\20std::__2::copy\5babi:v160004\5d\28char\20const*\2c\20char\20const*\2c\20char*\29 5748:char*\20SkArenaAlloc::allocUninitializedArray\28unsigned\20long\29 5749:cff_vstore_done 5750:cff_subfont_load 5751:cff_subfont_done 5752:cff_size_select 5753:cff_parser_run 5754:cff_parser_init 5755:cff_make_private_dict 5756:cff_load_private_dict 5757:cff_index_get_name 5758:cff_glyph_load 5759:cff_get_kerning 5760:cff_get_glyph_data 5761:cff_fd_select_get 5762:cff_charset_compute_cids 5763:cff_builder_init 5764:cff_builder_add_point1 5765:cff_builder_add_point 5766:cff_builder_add_contour 5767:cff_blend_check_vector 5768:cff_blend_build_vector 5769:cff1_path_param_t::end_path\28\29 5770:cf2_stack_pop 5771:cf2_hintmask_setCounts 5772:cf2_hintmask_read 5773:cf2_glyphpath_pushMove 5774:cf2_getSeacComponent 5775:cf2_freeSeacComponent 5776:cf2_computeDarkening 5777:cf2_arrstack_setNumElements 5778:cf2_arrstack_push 5779:cbrt 5780:can_use_hw_blend_equation\28skgpu::BlendEquation\2c\20GrProcessorAnalysisCoverage\2c\20GrCaps\20const&\29 5781:can_proxy_use_scratch\28GrCaps\20const&\2c\20GrSurfaceProxy*\29 5782:calculate_path_gap\28float\2c\20float\2c\20SkPath\20const&\29::$_3::operator\28\29\28float\29\20const 5783:calculate_path_gap\28float\2c\20float\2c\20SkPath\20const&\29::$_2::operator\28\29\28float\29\20const 5784:calculate_path_gap\28float\2c\20float\2c\20SkPath\20const&\29::$_0::operator\28\29\28float\29\20const 5785:byn$mgfn-shared$void\20extend_pts<\28SkPaint::Cap\292>\28SkPath::Verb\2c\20SkPath::Verb\2c\20SkPoint*\2c\20int\29 5786:byn$mgfn-shared$t1_hints_open 5787:byn$mgfn-shared$std::__2::vector>::__base_destruct_at_end\5babi:v160004\5d\28SkString*\29 5788:byn$mgfn-shared$std::__2::vector>::~vector\5babi:v160004\5d\28\29 5789:byn$mgfn-shared$std::__2::vector>::__vallocate\5babi:v160004\5d\28unsigned\20long\29 5790:byn$mgfn-shared$std::__2::unique_ptr\20\28*\29\28SkReadBuffer&\29\2c\20SkGoodHash>::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap\20\28*\29\28SkReadBuffer&\29\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d\2c\20std::__2::default_delete\20\28*\29\28SkReadBuffer&\29\2c\20SkGoodHash>::Pair\2c\20unsigned\20int\2c\20skia_private::THashMap\20\28*\29\28SkReadBuffer&\29\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d>>::~unique_ptr\5babi:v160004\5d\28\29 5791:byn$mgfn-shared$std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\29\20const 5792:byn$mgfn-shared$std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\20long\29\20const 5793:byn$mgfn-shared$std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20long\29\20const 5794:byn$mgfn-shared$std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20long\20long\29\20const 5795:byn$mgfn-shared$std::__2::default_delete>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d>::_EnableIfConvertible>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::Slot>::type\20std::__2::default_delete>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::Slot\20\5b\5d>::operator\28\29\5babi:v160004\5d>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::Slot>\28skia_private::THashTable>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair\2c\20std::__2::basic_string_view>\2c\20skia_private::THashMap>\2c\20SkSL::IntrinsicKind\2c\20SkGoodHash>::Pair>::Slot*\29\20const 5796:byn$mgfn-shared$std::__2::default_delete::Pair\2c\20char\20const*\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d>::_EnableIfConvertible::Pair\2c\20char\20const*\2c\20skia_private::THashMap::Pair>::Slot>::type\20std::__2::default_delete::Pair\2c\20char\20const*\2c\20skia_private::THashMap::Pair>::Slot\20\5b\5d>::operator\28\29\5babi:v160004\5d::Pair\2c\20char\20const*\2c\20skia_private::THashMap::Pair>::Slot>\28skia_private::THashTable::Pair\2c\20char\20const*\2c\20skia_private::THashMap::Pair>::Slot*\29\20const 5797:byn$mgfn-shared$std::__2::ctype::do_toupper\28wchar_t*\2c\20wchar_t\20const*\29\20const 5798:byn$mgfn-shared$std::__2::ctype::do_toupper\28char*\2c\20char\20const*\29\20const 5799:byn$mgfn-shared$std::__2::__split_buffer&>::__split_buffer\28unsigned\20long\2c\20unsigned\20long\2c\20std::__2::allocator&\29 5800:byn$mgfn-shared$std::__2::__hash_table\2c\20std::__2::__unordered_map_hasher\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal\2c\20std::__2::equal_to\2c\20std::__2::hash\2c\20true>\2c\20std::__2::allocator>>::__deallocate_node\28std::__2::__hash_node_base\2c\20void*>*>*\29 5801:byn$mgfn-shared$std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::__clone\28std::__2::__function::__base*\29\20const 5802:byn$mgfn-shared$std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::__clone\28\29\20const 5803:byn$mgfn-shared$skia_private::THashTable::Pair\2c\20SkSL::Variable\20const*\2c\20skia_private::THashMap::Pair>::Iter>::operator++\28\29 5804:byn$mgfn-shared$skia_private::THashTable::Pair\2c\20SkSL::Symbol\20const*\2c\20skia_private::THashMap::Pair>::firstPopulatedSlot\28\29\20const 5805:byn$mgfn-shared$skia_private::THashMap::find\28SkSL::FunctionDeclaration\20const*\20const&\29\20const 5806:byn$mgfn-shared$skia_private::THashMap>\2c\20SkGoodHash>::find\28SkImageFilter\20const*\20const&\29\20const 5807:byn$mgfn-shared$skia_private::TArray::destroyAll\28\29 5808:byn$mgfn-shared$skia_private::TArray::checkRealloc\28int\2c\20double\29 5809:byn$mgfn-shared$skia_private::AutoSTArray<16\2c\20SkRect>::reset\28int\29 5810:byn$mgfn-shared$skia_private::AutoSTArray<16\2c\20GrMipLevel>::reset\28int\29 5811:byn$mgfn-shared$skia_png_gamma_8bit_correct 5812:byn$mgfn-shared$skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::makeProgramImpl\28GrShaderCaps\20const&\29\20const 5813:byn$mgfn-shared$setup_masks_khmer\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 5814:byn$mgfn-shared$precisely_between\28double\2c\20double\2c\20double\29 5815:byn$mgfn-shared$portable::store_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 5816:byn$mgfn-shared$portable::load_8888_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 5817:byn$mgfn-shared$portable::load_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 5818:byn$mgfn-shared$portable::gather_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 5819:byn$mgfn-shared$make_unpremul_effect\28std::__2::unique_ptr>\29 5820:byn$mgfn-shared$imageFilter_createDilate 5821:byn$mgfn-shared$hb_vector_t::alloc\28unsigned\20int\2c\20bool\29 5822:byn$mgfn-shared$hb_vector_t::alloc\28unsigned\20int\2c\20bool\29 5823:byn$mgfn-shared$hb_vector_t\2c\20false>::shrink_vector\28unsigned\20int\29 5824:byn$mgfn-shared$hb_lazy_loader_t\2c\20hb_face_t\2c\204u\2c\20hb_blob_t>::get\28\29\20const 5825:byn$mgfn-shared$gl_target_to_binding_index\28unsigned\20int\29 5826:byn$mgfn-shared$cf2_stack_pushInt 5827:byn$mgfn-shared$bool\20OT::OffsetTo\2c\20OT::IntType\2c\20true>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 5828:byn$mgfn-shared$\28anonymous\20namespace\29::shift_left\28skvx::Vec<4\2c\20float>\20const&\2c\20int\29 5829:byn$mgfn-shared$\28anonymous\20namespace\29::TransformedMaskSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 5830:byn$mgfn-shared$\28anonymous\20namespace\29::DrawAtlasPathShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 5831:byn$mgfn-shared$\28anonymous\20namespace\29::BitmapKey::BitmapKey\28SkBitmapCacheDesc\20const&\29 5832:byn$mgfn-shared$SkSL::optimize_intrinsic_call\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::IntrinsicKind\2c\20SkSL::ExpressionArray\20const&\2c\20SkSL::Type\20const&\29::$_0::operator\28\29\28int\29\20const 5833:byn$mgfn-shared$SkSL::ProgramUsage::remove\28SkSL::Expression\20const*\29 5834:byn$mgfn-shared$SkSL::ProgramUsage::add\28SkSL::Statement\20const*\29 5835:byn$mgfn-shared$SkSL::FunctionReference::clone\28SkSL::Position\29\20const 5836:byn$mgfn-shared$SkSL::EmptyExpression::clone\28SkSL::Position\29\20const 5837:byn$mgfn-shared$SkSL::ChildCall::description\28SkSL::OperatorPrecedence\29\20const 5838:byn$mgfn-shared$SkRuntimeEffect::findChild\28std::__2::basic_string_view>\29\20const 5839:byn$mgfn-shared$SkRuntimeEffect::ChildPtr::shader\28\29\20const 5840:byn$mgfn-shared$SkRecorder::onDrawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 5841:byn$mgfn-shared$SkRecorder::onDrawPaint\28SkPaint\20const&\29 5842:byn$mgfn-shared$SkRecorder::didTranslate\28float\2c\20float\29 5843:byn$mgfn-shared$SkRecorder::didConcat44\28SkM44\20const&\29 5844:byn$mgfn-shared$SkRasterPipelineBlitter::blitAntiH2\28int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 5845:byn$mgfn-shared$SkPictureRecord::onDrawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 5846:byn$mgfn-shared$SkPictureRecord::onDrawPaint\28SkPaint\20const&\29 5847:byn$mgfn-shared$SkPictureRecord::didConcat44\28SkM44\20const&\29 5848:byn$mgfn-shared$SkKnownRuntimeEffects::\28anonymous\20namespace\29::make_blur_1D_effect\28int\2c\20SkRuntimeEffect::Options\20const&\29 5849:byn$mgfn-shared$SkJSONWriter::endArray\28\29 5850:byn$mgfn-shared$OT::cff1::sanitize\28hb_sanitize_context_t*\29\20const 5851:byn$mgfn-shared$OT::IntType*\20hb_serialize_context_t::extend_min>\28OT::IntType*\29 5852:byn$mgfn-shared$OT::ArrayOf\2c\20OT::IntType>::sanitize_shallow\28hb_sanitize_context_t*\29\20const 5853:byn$mgfn-shared$OT::ArrayOf\2c\20OT::IntType>::sanitize_shallow\28hb_sanitize_context_t*\29\20const 5854:byn$mgfn-shared$GrRRectShadowGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 5855:byn$mgfn-shared$BlockIndexIterator::First\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::Last\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::Increment\28SkBlockAllocator::Block\20const*\2c\20int\29\2c\20&SkTBlockList::GetItem\28SkBlockAllocator::Block\20const*\2c\20int\29>::Item::operator++\28\29 5856:byn$mgfn-shared$AAT::StateTable::get_entry\28int\2c\20unsigned\20int\29\20const 5857:byn$mgfn-shared$AAT::StateTable::get_entry\28int\2c\20unsigned\20int\29\20const 5858:byn$mgfn-shared$AAT::Lookup::get_value\28unsigned\20int\2c\20unsigned\20int\29\20const 5859:build_key\28skgpu::ResourceKey::Builder*\2c\20GrCaps\20const&\2c\20GrBackendFormat\20const&\2c\20SkISize\2c\20GrAttachment::UsageFlags\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrMemoryless\29 5860:build_intervals\28int\2c\20SkRGBA4f<\28SkAlphaType\292>\20const*\2c\20float\20const*\2c\20int\2c\20SkRGBA4f<\28SkAlphaType\292>*\2c\20SkRGBA4f<\28SkAlphaType\292>*\2c\20float*\29 5861:bracketProcessChar\28BracketData*\2c\20int\29 5862:bracketInit\28UBiDi*\2c\20BracketData*\29 5863:bounds_t::merge\28bounds_t\20const&\29 5864:bottom_collinear\28GrTriangulator::Edge*\2c\20GrTriangulator::Edge*\29 5865:bool\20std::__2::operator==\5babi:v160004\5d>\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 5866:bool\20std::__2::operator==\5babi:v160004\5d\28std::__2::variant\20const&\2c\20std::__2::variant\20const&\29 5867:bool\20std::__2::operator!=\5babi:v160004\5d\28std::__2::variant\20const&\2c\20std::__2::variant\20const&\29 5868:bool\20std::__2::__insertion_sort_incomplete\28skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::RunBlock*\2c\20skia::textlayout::OneLineShaper::finish\28skia::textlayout::Block\20const&\2c\20float\2c\20float&\29::$_0&\29 5869:bool\20std::__2::__insertion_sort_incomplete\28SkSL::ProgramElement\20const**\2c\20SkSL::ProgramElement\20const**\2c\20SkSL::Transform::\28anonymous\20namespace\29::BuiltinVariableScanner::sortNewElements\28\29::'lambda'\28SkSL::ProgramElement\20const*\2c\20SkSL::ProgramElement\20const*\29&\29 5870:bool\20std::__2::__insertion_sort_incomplete\28SkSL::FunctionDefinition\20const**\2c\20SkSL::FunctionDefinition\20const**\2c\20SkSL::Transform::FindAndDeclareBuiltinFunctions\28SkSL::Program&\29::$_0&\29 5871:bool\20set_point_length\28SkPoint*\2c\20float\2c\20float\2c\20float\2c\20float*\29 5872:bool\20is_parallel\28SkDLine\20const&\2c\20SkTCurve\20const&\29 5873:bool\20hb_sanitize_context_t::check_array>\28OT::IntType\20const*\2c\20unsigned\20int\2c\20unsigned\20int\29\20const 5874:bool\20hb_sanitize_context_t::check_array\28OT::Index\20const*\2c\20unsigned\20int\29\20const 5875:bool\20hb_sanitize_context_t::check_array\28AAT::Feature\20const*\2c\20unsigned\20int\29\20const 5876:bool\20hb_sanitize_context_t::check_array>\28AAT::Entry\20const*\2c\20unsigned\20int\29\20const 5877:bool\20apply_string\28OT::hb_ot_apply_context_t*\2c\20GSUBProxy::Lookup\20const&\2c\20OT::hb_ot_layout_lookup_accelerator_t\20const&\29 5878:bool\20OT::hb_accelerate_subtables_context_t::cache_func_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\2c\20bool\29 5879:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 5880:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 5881:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 5882:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 5883:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 5884:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 5885:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 5886:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 5887:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 5888:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 5889:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 5890:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 5891:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 5892:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 5893:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 5894:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 5895:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 5896:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 5897:bool\20OT::chain_context_would_apply_lookup>\28OT::hb_would_apply_context_t*\2c\20unsigned\20int\2c\20OT::IntType\20const*\2c\20unsigned\20int\2c\20OT::IntType\20const*\2c\20unsigned\20int\2c\20OT::IntType\20const*\2c\20unsigned\20int\2c\20OT::LookupRecord\20const*\2c\20OT::ChainContextApplyLookupContext\20const&\29 5898:bool\20OT::Paint::sanitize<>\28hb_sanitize_context_t*\29\20const 5899:bool\20OT::OffsetTo\2c\20OT::IntType\2c\20true>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 5900:bool\20OT::OffsetTo\2c\20true>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 5901:bool\20OT::OffsetTo\2c\20OT::IntType\2c\20true>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 5902:bool\20OT::OffsetTo\2c\20true>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 5903:bool\20OT::OffsetTo\2c\20true>::sanitize\28hb_sanitize_context_t*\2c\20void\20const*\2c\20unsigned\20int&&\29\20const 5904:bool\20OT::OffsetTo\2c\20true>::serialize_serialize\2c\20hb_array_t>\2c\20$_7\20const&\2c\20\28hb_function_sortedness_t\291\2c\20\28void*\290>&>\28hb_serialize_context_t*\2c\20hb_map_iter_t\2c\20hb_array_t>\2c\20$_7\20const&\2c\20\28hb_function_sortedness_t\291\2c\20\28void*\290>&\29 5905:bool\20OT::OffsetTo\2c\20true>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 5906:bool\20OT::OffsetTo\2c\20true>::sanitize\28hb_sanitize_context_t*\2c\20void\20const*\2c\20unsigned\20int&&\29\20const 5907:bool\20OT::OffsetTo\2c\20OT::IntType\2c\20true>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 5908:bool\20OT::OffsetTo\2c\20true>::sanitize\28hb_sanitize_context_t*\2c\20void\20const*\2c\20AAT::trak\20const*&&\29\20const 5909:bool\20OT::OffsetTo>\2c\20OT::IntType\2c\20false>::sanitize<>\28hb_sanitize_context_t*\2c\20void\20const*\29\20const 5910:bool\20OT::GSUBGPOS::sanitize\28hb_sanitize_context_t*\29\20const 5911:bool\20OT::GSUBGPOS::sanitize\28hb_sanitize_context_t*\29\20const 5912:bool\20GrTTopoSort_Visit\28GrRenderTask*\2c\20unsigned\20int*\29 5913:blur_column\28void\20\28*\29\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29\2c\20skvx::Vec<8\2c\20unsigned\20short>\20\28*\29\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29\2c\20int\2c\20int\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20unsigned\20char\20const*\2c\20unsigned\20long\2c\20int\2c\20unsigned\20char*\2c\20unsigned\20long\29 5914:blit_two_alphas\28AdditiveBlitter*\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\2c\20unsigned\20char\2c\20unsigned\20char*\2c\20bool\2c\20bool\2c\20bool\29 5915:blit_full_alpha\28AdditiveBlitter*\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char*\2c\20bool\2c\20bool\2c\20bool\29 5916:blender_requires_shader\28SkBlender\20const*\29 5917:bits_to_runs\28SkBlitter*\2c\20int\2c\20int\2c\20unsigned\20char\20const*\2c\20unsigned\20char\2c\20long\2c\20unsigned\20char\29 5918:between_closed\28double\2c\20double\2c\20double\2c\20double\2c\20bool\29 5919:barycentric_coords\28float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>*\2c\20skvx::Vec<4\2c\20float>*\2c\20skvx::Vec<4\2c\20float>*\29 5920:auto\20GrGLProgramBuilder::computeCountsAndStrides\28unsigned\20int\2c\20GrGeometryProcessor\20const&\2c\20bool\29::$_0::operator\28\29\28int\2c\20GrGeometryProcessor::Attribute\20const&\29\20const 5921:auto&&\20std::__2::__generic_get\5babi:v160004\5d<0ul\2c\20std::__2::variant\20const&>\28std::__2::variant\20const&\29 5922:atanf 5923:are_radius_check_predicates_valid\28float\2c\20float\2c\20float\29 5924:arabic_fallback_plan_destroy\28arabic_fallback_plan_t*\29 5925:apply_forward\28OT::hb_ot_apply_context_t*\2c\20OT::hb_ot_layout_lookup_accelerator_t\20const&\2c\20unsigned\20int\29 5926:apply_fill_type\28SkPathFillType\2c\20int\29 5927:apply_fill_type\28SkPathFillType\2c\20GrTriangulator::Poly*\29 5928:append_texture_swizzle\28SkString*\2c\20skgpu::Swizzle\29 5929:append_color_output\28PorterDuffXferProcessor\20const&\2c\20GrGLSLXPFragmentBuilder*\2c\20skgpu::BlendFormula::OutputType\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\29 5930:antifilldot8\28int\2c\20int\2c\20int\2c\20int\2c\20SkBlitter*\2c\20bool\29 5931:analysis_properties\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\20const&\2c\20GrCaps\20const&\2c\20GrClampType\2c\20SkBlendMode\29 5932:afm_stream_skip_spaces 5933:afm_stream_read_string 5934:afm_stream_read_one 5935:af_sort_and_quantize_widths 5936:af_shaper_get_elem 5937:af_loader_compute_darkening 5938:af_latin_metrics_scale_dim 5939:af_latin_hints_detect_features 5940:af_hint_normal_stem 5941:af_glyph_hints_align_weak_points 5942:af_glyph_hints_align_strong_points 5943:af_face_globals_new 5944:af_cjk_metrics_scale_dim 5945:af_cjk_metrics_scale 5946:af_cjk_metrics_init_widths 5947:af_cjk_metrics_check_digits 5948:af_cjk_hints_init 5949:af_cjk_hints_detect_features 5950:af_cjk_hints_compute_blue_edges 5951:af_cjk_hints_apply 5952:af_cjk_get_standard_widths 5953:af_cjk_compute_stem_width 5954:af_axis_hints_new_edge 5955:add_line\28SkPoint\20const*\2c\20skia_private::TArray*\29 5956:add_const_color\28SkRasterPipeline_GradientCtx*\2c\20unsigned\20long\2c\20SkRGBA4f<\28SkAlphaType\292>\29 5957:a_swap.9170 5958:a_fetch_add.9131 5959:a_fetch_add 5960:a_ctz_32 5961:_pow10\28unsigned\20int\29 5962:_hb_preprocess_text_vowel_constraints\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 5963:_hb_ot_shape 5964:_hb_options_init\28\29 5965:_hb_grapheme_group_func\28hb_glyph_info_t\20const&\2c\20hb_glyph_info_t\20const&\29 5966:_hb_font_create\28hb_face_t*\29 5967:_hb_fallback_shape 5968:_glyf_get_advance_with_var_unscaled\28hb_font_t*\2c\20unsigned\20int\2c\20bool\29 5969:_emscripten_yield 5970:_emscripten_thread_mailbox_init 5971:_do_call 5972:__wasm_init_tls 5973:__vm_wait 5974:__vfprintf_internal 5975:__trunctfsf2 5976:__timedwait 5977:__tan 5978:__set_thread_state 5979:__rem_pio2_large 5980:__pthread_rwlock_unlock 5981:__pthread_rwlock_tryrdlock 5982:__pthread_rwlock_timedrdlock 5983:__newlocale 5984:__math_xflowf 5985:__math_invalidf 5986:__loc_is_allocated 5987:__isxdigit_l 5988:__getf2 5989:__get_locale 5990:__ftello_unlocked 5991:__fseeko_unlocked 5992:__floatscan 5993:__expo2 5994:__dynamic_cast 5995:__divtf3 5996:__cxxabiv1::__base_class_type_info::has_unambiguous_public_base\28__cxxabiv1::__dynamic_cast_info*\2c\20void*\2c\20int\29\20const 5997:__cxxabiv1::\28anonymous\20namespace\29::InitByteGlobalMutex<__cxxabiv1::\28anonymous\20namespace\29::LibcppMutex\2c\20__cxxabiv1::\28anonymous\20namespace\29::LibcppCondVar\2c\20__cxxabiv1::\28anonymous\20namespace\29::GlobalStatic<__cxxabiv1::\28anonymous\20namespace\29::LibcppMutex>::instance\2c\20__cxxabiv1::\28anonymous\20namespace\29::GlobalStatic<__cxxabiv1::\28anonymous\20namespace\29::LibcppCondVar>::instance\2c\20\28unsigned\20int\20\28*\29\28\29\290>::LockGuard::~LockGuard\28\29 5998:__cxxabiv1::\28anonymous\20namespace\29::InitByteGlobalMutex<__cxxabiv1::\28anonymous\20namespace\29::LibcppMutex\2c\20__cxxabiv1::\28anonymous\20namespace\29::LibcppCondVar\2c\20__cxxabiv1::\28anonymous\20namespace\29::GlobalStatic<__cxxabiv1::\28anonymous\20namespace\29::LibcppMutex>::instance\2c\20__cxxabiv1::\28anonymous\20namespace\29::GlobalStatic<__cxxabiv1::\28anonymous\20namespace\29::LibcppCondVar>::instance\2c\20\28unsigned\20int\20\28*\29\28\29\290>::LockGuard::LockGuard\28char\20const*\29 5999:__cxxabiv1::\28anonymous\20namespace\29::GuardObject<__cxxabiv1::\28anonymous\20namespace\29::InitByteGlobalMutex<__cxxabiv1::\28anonymous\20namespace\29::LibcppMutex\2c\20__cxxabiv1::\28anonymous\20namespace\29::LibcppCondVar\2c\20__cxxabiv1::\28anonymous\20namespace\29::GlobalStatic<__cxxabiv1::\28anonymous\20namespace\29::LibcppMutex>::instance\2c\20__cxxabiv1::\28anonymous\20namespace\29::GlobalStatic<__cxxabiv1::\28anonymous\20namespace\29::LibcppCondVar>::instance\2c\20\28unsigned\20int\20\28*\29\28\29\290>>::GuardObject\28unsigned\20int*\29 6000:\28anonymous\20namespace\29::texture_color\28SkRGBA4f<\28SkAlphaType\293>\2c\20float\2c\20GrColorType\2c\20GrColorInfo\20const&\29 6001:\28anonymous\20namespace\29::supported_aa\28skgpu::ganesh::SurfaceDrawContext*\2c\20GrAA\29 6002:\28anonymous\20namespace\29::set_uv_quad\28SkPoint\20const*\2c\20\28anonymous\20namespace\29::BezierVertex*\29 6003:\28anonymous\20namespace\29::safe_to_ignore_subset_rect\28GrAAType\2c\20SkFilterMode\2c\20DrawQuad\20const&\2c\20SkRect\20const&\29 6004:\28anonymous\20namespace\29::rrect_type_to_vert_count\28\28anonymous\20namespace\29::RRectType\29 6005:\28anonymous\20namespace\29::proxy_normalization_params\28GrSurfaceProxy\20const*\2c\20GrSurfaceOrigin\29 6006:\28anonymous\20namespace\29::prepare_for_direct_mask_drawing\28SkStrike*\2c\20SkMatrix\20const&\2c\20SkZip\2c\20SkZip\2c\20SkZip\29 6007:\28anonymous\20namespace\29::normalize_src_quad\28\28anonymous\20namespace\29::NormalizationParams\20const&\2c\20GrQuad*\29 6008:\28anonymous\20namespace\29::normalize_and_inset_subset\28SkFilterMode\2c\20\28anonymous\20namespace\29::NormalizationParams\20const&\2c\20SkRect\20const*\29 6009:\28anonymous\20namespace\29::next_gen_id\28\29 6010:\28anonymous\20namespace\29::morphology_pass\28skif::Context\20const&\2c\20skif::FilterResult\20const&\2c\20\28anonymous\20namespace\29::MorphType\2c\20\28anonymous\20namespace\29::MorphDirection\2c\20int\29 6011:\28anonymous\20namespace\29::make_non_convex_fill_op\28GrRecordingContext*\2c\20SkArenaAlloc*\2c\20skgpu::ganesh::FillPathFlags\2c\20GrAAType\2c\20SkRect\20const&\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\2c\20GrPaint&&\29 6012:\28anonymous\20namespace\29::is_visible\28SkRect\20const&\2c\20SkIRect\20const&\29 6013:\28anonymous\20namespace\29::is_degen_quad_or_conic\28SkPoint\20const*\2c\20float*\29 6014:\28anonymous\20namespace\29::init_vertices_paint\28GrRecordingContext*\2c\20GrColorInfo\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\2c\20SkBlender*\2c\20bool\2c\20SkSurfaceProps\20const&\2c\20GrPaint*\29 6015:\28anonymous\20namespace\29::get_hbFace_cache\28\29 6016:\28anonymous\20namespace\29::gather_lines_and_quads\28SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20float\2c\20bool\2c\20skia_private::TArray*\2c\20skia_private::TArray*\2c\20skia_private::TArray*\2c\20skia_private::TArray*\2c\20skia_private::TArray*\29::$_1::operator\28\29\28SkPoint\20const*\2c\20SkPoint\20const*\2c\20bool\29\20const 6017:\28anonymous\20namespace\29::draw_to_sw_mask\28GrSWMaskHelper*\2c\20skgpu::ganesh::ClipStack::Element\20const&\2c\20bool\29 6018:\28anonymous\20namespace\29::draw_path\28GrRecordingContext*\2c\20skgpu::ganesh::SurfaceDrawContext*\2c\20skgpu::ganesh::PathRenderer*\2c\20GrHardClip\20const&\2c\20SkIRect\20const&\2c\20GrUserStencilSettings\20const*\2c\20SkMatrix\20const&\2c\20GrStyledShape\20const&\2c\20GrAA\29 6019:\28anonymous\20namespace\29::determine_clipped_src_rect\28SkIRect\2c\20SkMatrix\20const&\2c\20SkMatrix\20const&\2c\20SkISize\20const&\2c\20SkRect\20const*\29 6020:\28anonymous\20namespace\29::create_data\28int\2c\20bool\2c\20float\29 6021:\28anonymous\20namespace\29::cpu_blur\28skif::Context\20const&\2c\20skif::LayerSpace\2c\20sk_sp\20const&\2c\20skif::LayerSpace\2c\20skif::LayerSpace\29::$_0::operator\28\29\28double\29\20const 6022:\28anonymous\20namespace\29::copyFTBitmap\28FT_Bitmap_\20const&\2c\20SkMaskBuilder*\29 6023:\28anonymous\20namespace\29::contains_scissor\28GrScissorState\20const&\2c\20GrScissorState\20const&\29 6024:\28anonymous\20namespace\29::colrv1_start_glyph_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20unsigned\20short\2c\20FT_Color_Root_Transform_\2c\20skia_private::THashSet*\29 6025:\28anonymous\20namespace\29::colrv1_start_glyph\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20unsigned\20short\2c\20FT_Color_Root_Transform_\2c\20skia_private::THashSet*\29 6026:\28anonymous\20namespace\29::colrv1_draw_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_COLR_Paint_\20const&\29 6027:\28anonymous\20namespace\29::colrv1_configure_skpaint\28FT_FaceRec_*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_COLR_Paint_\20const&\2c\20SkPaint*\29 6028:\28anonymous\20namespace\29::can_use_draw_texture\28SkPaint\20const&\2c\20SkSamplingOptions\20const&\29 6029:\28anonymous\20namespace\29::axis_aligned_quad_size\28GrQuad\20const&\29 6030:\28anonymous\20namespace\29::YUVPlanesRec::~YUVPlanesRec\28\29 6031:\28anonymous\20namespace\29::YUVPlanesKey::YUVPlanesKey\28unsigned\20int\29 6032:\28anonymous\20namespace\29::UniqueKeyInvalidator::~UniqueKeyInvalidator\28\29 6033:\28anonymous\20namespace\29::TriangulatingPathOp::~TriangulatingPathOp\28\29 6034:\28anonymous\20namespace\29::TriangulatingPathOp::TriangulatingPathOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20GrStyledShape\20const&\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20GrAAType\2c\20GrUserStencilSettings\20const*\29 6035:\28anonymous\20namespace\29::TriangulatingPathOp::Triangulate\28GrEagerVertexAllocator*\2c\20SkMatrix\20const&\2c\20GrStyledShape\20const&\2c\20SkIRect\20const&\2c\20float\2c\20bool*\29 6036:\28anonymous\20namespace\29::TriangulatingPathOp::CreateKey\28skgpu::UniqueKey*\2c\20GrStyledShape\20const&\2c\20SkIRect\20const&\29 6037:\28anonymous\20namespace\29::TransformedMaskSubRun::vertexStride\28SkMatrix\20const&\29\20const 6038:\28anonymous\20namespace\29::TransformedMaskSubRun::regenerateAtlas\28int\2c\20int\2c\20std::__2::function\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>\29\20const 6039:\28anonymous\20namespace\29::TransformedMaskSubRun::makeAtlasTextOp\28GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20skgpu::ganesh::SurfaceDrawContext*\29\20const 6040:\28anonymous\20namespace\29::TransformedMaskSubRun::glyphCount\28\29\20const 6041:\28anonymous\20namespace\29::TransformedMaskSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 6042:\28anonymous\20namespace\29::TextureOpImpl::~TextureOpImpl\28\29 6043:\28anonymous\20namespace\29::TextureOpImpl::propagateCoverageAAThroughoutChain\28\29 6044:\28anonymous\20namespace\29::TextureOpImpl::numChainedQuads\28\29\20const 6045:\28anonymous\20namespace\29::TextureOpImpl::characterize\28\28anonymous\20namespace\29::TextureOpImpl::Desc*\29\20const 6046:\28anonymous\20namespace\29::TextureOpImpl::appendQuad\28DrawQuad*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\29 6047:\28anonymous\20namespace\29::TextureOpImpl::Make\28GrRecordingContext*\2c\20GrTextureSetEntry*\2c\20int\2c\20int\2c\20SkFilterMode\2c\20SkMipmapMode\2c\20skgpu::ganesh::TextureOp::Saturate\2c\20GrAAType\2c\20SkCanvas::SrcRectConstraint\2c\20SkMatrix\20const&\2c\20sk_sp\29 6048:\28anonymous\20namespace\29::TextureOpImpl::FillInVertices\28GrCaps\20const&\2c\20\28anonymous\20namespace\29::TextureOpImpl*\2c\20\28anonymous\20namespace\29::TextureOpImpl::Desc*\2c\20char*\29 6049:\28anonymous\20namespace\29::TextureOpImpl::Desc::totalSizeInBytes\28\29\20const 6050:\28anonymous\20namespace\29::TextureOpImpl::Desc*\20SkArenaAlloc::make<\28anonymous\20namespace\29::TextureOpImpl::Desc>\28\29 6051:\28anonymous\20namespace\29::TextureOpImpl::ClassID\28\29 6052:\28anonymous\20namespace\29::SpotVerticesFactory::makeVertices\28SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkPoint*\29\20const 6053:\28anonymous\20namespace\29::SkUnicodeHbScriptRunIterator::hb_script_for_unichar\28int\29 6054:\28anonymous\20namespace\29::SkQuadCoeff::SkQuadCoeff\28SkPoint\20const*\29 6055:\28anonymous\20namespace\29::SkMorphologyImageFilter::requiredInput\28skif::Mapping\20const&\2c\20skif::LayerSpace\29\20const 6056:\28anonymous\20namespace\29::SkMorphologyImageFilter::kernelOutputBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\29\20const 6057:\28anonymous\20namespace\29::SkMatrixTransformImageFilter::requiredInput\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\29\20const 6058:\28anonymous\20namespace\29::SkEmptyTypeface::onMakeClone\28SkFontArguments\20const&\29\20const 6059:\28anonymous\20namespace\29::SkCropImageFilter::requiredInput\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\29\20const 6060:\28anonymous\20namespace\29::SkConicCoeff::SkConicCoeff\28SkConic\20const&\29 6061:\28anonymous\20namespace\29::SkColorFilterImageFilter::~SkColorFilterImageFilter\28\29 6062:\28anonymous\20namespace\29::SkBlurImageFilter::mapSigma\28skif::Mapping\20const&\2c\20bool\29\20const 6063:\28anonymous\20namespace\29::SkBlendImageFilter::~SkBlendImageFilter\28\29 6064:\28anonymous\20namespace\29::SkBidiIterator_icu::~SkBidiIterator_icu\28\29 6065:\28anonymous\20namespace\29::ShaperHarfBuzz::~ShaperHarfBuzz\28\29 6066:\28anonymous\20namespace\29::ShadowedPath::keyBytes\28\29\20const 6067:\28anonymous\20namespace\29::ShadowInvalidator::~ShadowInvalidator\28\29 6068:\28anonymous\20namespace\29::ShadowCircularRRectOp::~ShadowCircularRRectOp\28\29 6069:\28anonymous\20namespace\29::SDFTSubRun::~SDFTSubRun\28\29.1 6070:\28anonymous\20namespace\29::SDFTSubRun::regenerateAtlas\28int\2c\20int\2c\20std::__2::function\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>\29\20const 6071:\28anonymous\20namespace\29::SDFTSubRun::makeAtlasTextOp\28GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20skgpu::ganesh::SurfaceDrawContext*\29\20const 6072:\28anonymous\20namespace\29::SDFTSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 6073:\28anonymous\20namespace\29::RectsBlurRec::~RectsBlurRec\28\29 6074:\28anonymous\20namespace\29::RectsBlurKey::RectsBlurKey\28float\2c\20SkBlurStyle\2c\20SkRect\20const*\2c\20int\29 6075:\28anonymous\20namespace\29::RRectBlurRec::~RRectBlurRec\28\29 6076:\28anonymous\20namespace\29::RRectBlurKey::RRectBlurKey\28float\2c\20SkRRect\20const&\2c\20SkBlurStyle\29 6077:\28anonymous\20namespace\29::PlanGauss::PlanGauss\28double\29 6078:\28anonymous\20namespace\29::PathSubRun::~PathSubRun\28\29 6079:\28anonymous\20namespace\29::PathOpSubmitter::~PathOpSubmitter\28\29 6080:\28anonymous\20namespace\29::PathGeoBuilder::createMeshAndPutBackReserve\28\29 6081:\28anonymous\20namespace\29::PathGeoBuilder::allocNewBuffers\28\29 6082:\28anonymous\20namespace\29::PathGeoBuilder::addQuad\28SkPoint\20const*\2c\20float\2c\20float\29 6083:\28anonymous\20namespace\29::Pass::blur\28int\2c\20int\2c\20int\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int*\2c\20int\29 6084:\28anonymous\20namespace\29::MipMapRec::~MipMapRec\28\29 6085:\28anonymous\20namespace\29::MipMapKey::MipMapKey\28SkBitmapCacheDesc\20const&\29 6086:\28anonymous\20namespace\29::MipLevelHelper::allocAndInit\28SkArenaAlloc*\2c\20SkSamplingOptions\20const&\2c\20SkTileMode\2c\20SkTileMode\29 6087:\28anonymous\20namespace\29::MipLevelHelper::MipLevelHelper\28\29 6088:\28anonymous\20namespace\29::MiddleOutShader::~MiddleOutShader\28\29 6089:\28anonymous\20namespace\29::MeshOp::~MeshOp\28\29 6090:\28anonymous\20namespace\29::MeshOp::MeshOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20sk_sp\2c\20GrPrimitiveType\20const*\2c\20GrAAType\2c\20sk_sp\2c\20SkMatrix\20const&\29 6091:\28anonymous\20namespace\29::MeshOp::MeshOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMesh\20const&\2c\20skia_private::TArray>\2c\20true>\2c\20GrAAType\2c\20sk_sp\2c\20SkMatrix\20const&\29 6092:\28anonymous\20namespace\29::MeshOp::Mesh::indices\28\29\20const 6093:\28anonymous\20namespace\29::MeshOp::Mesh::Mesh\28SkMesh\20const&\29 6094:\28anonymous\20namespace\29::MeshOp::ClassID\28\29 6095:\28anonymous\20namespace\29::MeshGP::~MeshGP\28\29 6096:\28anonymous\20namespace\29::MeshGP::Impl::~Impl\28\29 6097:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::defineStruct\28char\20const*\29 6098:\28anonymous\20namespace\29::Iter::next\28\29 6099:\28anonymous\20namespace\29::FillRectOpImpl::~FillRectOpImpl\28\29 6100:\28anonymous\20namespace\29::FillRectOpImpl::tessellate\28skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20char*\29\20const 6101:\28anonymous\20namespace\29::FillRectOpImpl::FillRectOpImpl\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\2c\20GrAAType\2c\20DrawQuad*\2c\20GrUserStencilSettings\20const*\2c\20GrSimpleMeshDrawOpHelper::InputFlags\29 6102:\28anonymous\20namespace\29::ExternalWebGLTexture::~ExternalWebGLTexture\28\29 6103:\28anonymous\20namespace\29::EllipticalRRectEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 6104:\28anonymous\20namespace\29::DrawableSubRun::~DrawableSubRun\28\29 6105:\28anonymous\20namespace\29::DrawAtlasPathShader::~DrawAtlasPathShader\28\29 6106:\28anonymous\20namespace\29::DrawAtlasOpImpl::~DrawAtlasOpImpl\28\29 6107:\28anonymous\20namespace\29::DrawAtlasOpImpl::DrawAtlasOpImpl\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20GrAAType\2c\20int\2c\20SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\29 6108:\28anonymous\20namespace\29::DirectMaskSubRun::regenerateAtlas\28int\2c\20int\2c\20std::__2::function\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>\29\20const 6109:\28anonymous\20namespace\29::DirectMaskSubRun::makeAtlasTextOp\28GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20skgpu::ganesh::SurfaceDrawContext*\29\20const 6110:\28anonymous\20namespace\29::DirectMaskSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 6111:\28anonymous\20namespace\29::DefaultPathOp::~DefaultPathOp\28\29 6112:\28anonymous\20namespace\29::DefaultPathOp::programInfo\28\29 6113:\28anonymous\20namespace\29::DefaultPathOp::primType\28\29\20const 6114:\28anonymous\20namespace\29::DefaultPathOp::PathData::PathData\28\28anonymous\20namespace\29::DefaultPathOp::PathData&&\29 6115:\28anonymous\20namespace\29::DefaultPathOp::Make\28GrRecordingContext*\2c\20GrPaint&&\2c\20SkPath\20const&\2c\20float\2c\20unsigned\20char\2c\20SkMatrix\20const&\2c\20bool\2c\20GrAAType\2c\20SkRect\20const&\2c\20GrUserStencilSettings\20const*\29 6116:\28anonymous\20namespace\29::DefaultPathOp::DefaultPathOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkPath\20const&\2c\20float\2c\20unsigned\20char\2c\20SkMatrix\20const&\2c\20bool\2c\20GrAAType\2c\20SkRect\20const&\2c\20GrUserStencilSettings\20const*\29 6117:\28anonymous\20namespace\29::ClipGeometry\20\28anonymous\20namespace\29::get_clip_geometry\28skgpu::ganesh::ClipStack::SaveRecord\20const&\2c\20skgpu::ganesh::ClipStack::Draw\20const&\29 6118:\28anonymous\20namespace\29::CircularRRectEffect::Make\28std::__2::unique_ptr>\2c\20GrClipEdgeType\2c\20unsigned\20int\2c\20SkRRect\20const&\29 6119:\28anonymous\20namespace\29::CachedTessellationsRec::~CachedTessellationsRec\28\29 6120:\28anonymous\20namespace\29::CachedTessellationsRec::CachedTessellationsRec\28SkResourceCache::Key\20const&\2c\20sk_sp<\28anonymous\20namespace\29::CachedTessellations>\29 6121:\28anonymous\20namespace\29::CachedTessellations::~CachedTessellations\28\29 6122:\28anonymous\20namespace\29::CachedTessellations::CachedTessellations\28\29 6123:\28anonymous\20namespace\29::CacheImpl::~CacheImpl\28\29 6124:\28anonymous\20namespace\29::BitmapKey::BitmapKey\28SkBitmapCacheDesc\20const&\29 6125:\28anonymous\20namespace\29::AmbientVerticesFactory::makeVertices\28SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkPoint*\29\20const 6126:\28anonymous\20namespace\29::AAHairlineOp::~AAHairlineOp\28\29 6127:\28anonymous\20namespace\29::AAHairlineOp::PathData::PathData\28\28anonymous\20namespace\29::AAHairlineOp::PathData&&\29 6128:\28anonymous\20namespace\29::AAHairlineOp::AAHairlineOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20unsigned\20char\2c\20SkMatrix\20const&\2c\20SkPath\20const&\2c\20SkIRect\2c\20float\2c\20GrUserStencilSettings\20const*\29 6129:TextureSourceImageGenerator::~TextureSourceImageGenerator\28\29 6130:TT_Set_Named_Instance 6131:TT_Save_Context 6132:TT_Hint_Glyph 6133:TT_DotFix14 6134:TT_Done_Context 6135:StringBuffer\20apply_format_string<1024>\28char\20const*\2c\20void*\2c\20char\20\28&\29\20\5b1024\5d\2c\20SkString*\29 6136:SortContourList\28SkOpContourHead**\2c\20bool\2c\20bool\29 6137:SkWriter32::writeString\28char\20const*\2c\20unsigned\20long\29 6138:SkWriter32::writePoint3\28SkPoint3\20const&\29 6139:SkWBuffer::padToAlign4\28\29 6140:SkVertices::getSizes\28\29\20const 6141:SkVertices::Builder::init\28SkVertices::Desc\20const&\29 6142:SkVertices::Builder::Builder\28SkVertices::VertexMode\2c\20int\2c\20int\2c\20unsigned\20int\29 6143:SkUnicode_client::~SkUnicode_client\28\29 6144:SkUnicode::convertUtf16ToUtf8\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 6145:SkUnicode::BidiRegion&\20std::__2::vector>::emplace_back\28unsigned\20long&\2c\20unsigned\20long&\2c\20unsigned\20char&\29 6146:SkUTF::UTF16ToUTF8\28char*\2c\20int\2c\20unsigned\20short\20const*\2c\20unsigned\20long\29 6147:SkUTF::ToUTF8\28int\2c\20char*\29 6148:SkTypeface_FreeTypeStream::~SkTypeface_FreeTypeStream\28\29 6149:SkTypeface_FreeTypeStream::SkTypeface_FreeTypeStream\28std::__2::unique_ptr>\2c\20SkString\2c\20SkFontStyle\20const&\2c\20bool\29 6150:SkTypeface_FreeType::getFaceRec\28\29\20const 6151:SkTypeface_FreeType::SkTypeface_FreeType\28SkFontStyle\20const&\2c\20bool\29 6152:SkTypeface_FreeType::GetUnitsPerEm\28FT_FaceRec_*\29 6153:SkTypeface_Custom::~SkTypeface_Custom\28\29 6154:SkTypeface_Custom::onGetFamilyName\28SkString*\29\20const 6155:SkTypeface::unicharsToGlyphs\28int\20const*\2c\20int\2c\20unsigned\20short*\29\20const 6156:SkTypeface::MakeEmpty\28\29 6157:SkTransformShader::update\28SkMatrix\20const&\29 6158:SkTextBlobBuilder::reserve\28unsigned\20long\29 6159:SkTextBlobBuilder::allocRunPos\28SkFont\20const&\2c\20int\2c\20SkRect\20const*\29 6160:SkTextBlobBuilder::TightRunBounds\28SkTextBlob::RunRecord\20const&\29 6161:SkTextBlob::getIntercepts\28float\20const*\2c\20float*\2c\20SkPaint\20const*\29\20const 6162:SkTaskGroup::add\28std::__2::function\29 6163:SkTSpan::split\28SkTSpan*\2c\20SkArenaAlloc*\29 6164:SkTSpan::splitAt\28SkTSpan*\2c\20double\2c\20SkArenaAlloc*\29 6165:SkTSpan::linearIntersects\28SkTCurve\20const&\29\20const 6166:SkTSpan::hullCheck\28SkTSpan\20const*\2c\20bool*\2c\20bool*\29 6167:SkTSpan::contains\28double\29\20const 6168:SkTSect::unlinkSpan\28SkTSpan*\29 6169:SkTSect::removeAllBut\28SkTSpan\20const*\2c\20SkTSpan*\2c\20SkTSect*\29 6170:SkTSect::recoverCollapsed\28\29 6171:SkTSect::intersects\28SkTSpan*\2c\20SkTSect*\2c\20SkTSpan*\2c\20int*\29 6172:SkTSect::coincidentHasT\28double\29 6173:SkTSect::boundsMax\28\29 6174:SkTSect::addSplitAt\28SkTSpan*\2c\20double\29 6175:SkTSect::addForPerp\28SkTSpan*\2c\20double\29 6176:SkTSect::EndsEqual\28SkTSect\20const*\2c\20SkTSect\20const*\2c\20SkIntersections*\29 6177:SkTMultiMap::reset\28\29 6178:SkTMaskGamma<3\2c\203\2c\203>::CanonicalColor\28unsigned\20int\29 6179:SkTLazy::getMaybeNull\28\29 6180:SkTInternalLList::remove\28skgpu::ganesh::SmallPathShapeData*\29 6181:SkTInternalLList<\28anonymous\20namespace\29::CacheImpl::Value>::remove\28\28anonymous\20namespace\29::CacheImpl::Value*\29 6182:SkTInternalLList<\28anonymous\20namespace\29::CacheImpl::Value>::addToHead\28\28anonymous\20namespace\29::CacheImpl::Value*\29 6183:SkTInternalLList::remove\28TriangulationVertex*\29 6184:SkTInternalLList::addToTail\28TriangulationVertex*\29 6185:SkTInternalLList::Entry>::addToHead\28SkLRUCache::Entry*\29 6186:SkTInternalLList>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Entry>::addToHead\28SkLRUCache>\2c\20skia::textlayout::ParagraphCache::KeyHash>::Entry*\29 6187:SkTInternalLList>\2c\20GrGLGpu::ProgramCache::DescHash>::Entry>::addToHead\28SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::Entry*\29 6188:SkTDynamicHash<\28anonymous\20namespace\29::CacheImpl::Value\2c\20SkImageFilterCacheKey\2c\20\28anonymous\20namespace\29::CacheImpl::Value>::find\28SkImageFilterCacheKey\20const&\29\20const 6189:SkTDStorage::SkTDStorage\28SkTDStorage&&\29 6190:SkTDPQueue<\28anonymous\20namespace\29::RunIteratorQueue::Entry\2c\20&\28anonymous\20namespace\29::RunIteratorQueue::CompareEntry\28\28anonymous\20namespace\29::RunIteratorQueue::Entry\20const&\2c\20\28anonymous\20namespace\29::RunIteratorQueue::Entry\20const&\29\2c\20\28int*\20\28*\29\28\28anonymous\20namespace\29::RunIteratorQueue::Entry\20const&\29\290>::insert\28\28anonymous\20namespace\29::RunIteratorQueue::Entry\29 6191:SkTDPQueue::remove\28GrGpuResource*\29 6192:SkTDPQueue::percolateUpIfNecessary\28int\29 6193:SkTDPQueue::percolateDownIfNecessary\28int\29 6194:SkTDPQueue::insert\28GrGpuResource*\29 6195:SkTDArray::append\28int\29 6196:SkTDArray::append\28int\29 6197:SkTDArray::push_back\28SkRecords::FillBounds::SaveBounds\20const&\29 6198:SkTCubic::hullIntersects\28SkDQuad\20const&\2c\20bool*\29\20const 6199:SkTCopyOnFirstWrite::writable\28\29 6200:SkTCopyOnFirstWrite::writable\28\29 6201:SkTConic::otherPts\28int\2c\20SkDPoint\20const**\29\20const 6202:SkTConic::hullIntersects\28SkDCubic\20const&\2c\20bool*\29\20const 6203:SkTConic::controlsInside\28\29\20const 6204:SkTConic::collapsed\28\29\20const 6205:SkTBlockList::pushItem\28\29 6206:SkTBlockList::pop_back\28\29 6207:SkTBlockList::push_back\28skgpu::ganesh::ClipStack::RawElement&&\29 6208:SkTBlockList::pushItem\28\29 6209:SkTBlockList::~SkTBlockList\28\29 6210:SkTBlockList::push_back\28GrGLProgramDataManager::GLUniformInfo\20const&\29 6211:SkTBlockList::item\28int\29 6212:SkSurface_Raster::~SkSurface_Raster\28\29 6213:SkSurface_Ganesh::~SkSurface_Ganesh\28\29 6214:SkSurface_Ganesh::onDiscard\28\29 6215:SkSurface_Base::replaceBackendTexture\28GrBackendTexture\20const&\2c\20GrSurfaceOrigin\2c\20SkSurface::ContentChangeMode\2c\20void\20\28*\29\28void*\29\2c\20void*\29 6216:SkSurface_Base::onDraw\28SkCanvas*\2c\20float\2c\20float\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\29 6217:SkSurface_Base::onCapabilities\28\29 6218:SkSurfaceValidateRasterInfo\28SkImageInfo\20const&\2c\20unsigned\20long\29 6219:SkStrokeRec::GetInflationRadius\28SkPaint::Join\2c\20float\2c\20SkPaint::Cap\2c\20float\29 6220:SkString_from_UTF16BE\28unsigned\20char\20const*\2c\20unsigned\20long\2c\20SkString&\29 6221:SkString::equals\28char\20const*\2c\20unsigned\20long\29\20const 6222:SkString::equals\28char\20const*\29\20const 6223:SkString::appendVAList\28char\20const*\2c\20void*\29 6224:SkString::appendUnichar\28int\29 6225:SkString::appendHex\28unsigned\20int\2c\20int\29 6226:SkString::SkString\28unsigned\20long\29 6227:SkStrikeSpec::SkStrikeSpec\28SkStrikeSpec\20const&\29 6228:SkStrikeSpec::ShouldDrawAsPath\28SkPaint\20const&\2c\20SkFont\20const&\2c\20SkMatrix\20const&\29::$_0::operator\28\29\28int\2c\20int\29\20const 6229:SkStrikeSpec::ShouldDrawAsPath\28SkPaint\20const&\2c\20SkFont\20const&\2c\20SkMatrix\20const&\29 6230:SkStrikeSpec::MakeTransformMask\28SkFont\20const&\2c\20SkPaint\20const&\2c\20SkSurfaceProps\20const&\2c\20SkScalerContextFlags\2c\20SkMatrix\20const&\29 6231:SkStrikeCache::~SkStrikeCache\28\29 6232:SkStrike::~SkStrike\28\29 6233:SkStrike::prepareForImage\28SkGlyph*\29 6234:SkStrike::prepareForDrawable\28SkGlyph*\29 6235:SkStrike::internalPrepare\28SkSpan\2c\20SkStrike::PathDetail\2c\20SkGlyph\20const**\29 6236:SkStrSplit\28char\20const*\2c\20char\20const*\2c\20SkStrSplitMode\2c\20skia_private::TArray*\29 6237:SkStrAppendU32\28char*\2c\20unsigned\20int\29 6238:SkStrAppendS32\28char*\2c\20int\29 6239:SkSpriteBlitter_Memcpy::~SkSpriteBlitter_Memcpy\28\29 6240:SkSpecialImages::MakeFromRaster\28SkIRect\20const&\2c\20sk_sp\2c\20SkSurfaceProps\20const&\29 6241:SkSpecialImages::AsView\28GrRecordingContext*\2c\20SkSpecialImage\20const*\29 6242:SkSpecialImages::AsBitmap\28SkSpecialImage\20const*\2c\20SkBitmap*\29 6243:SkSpecialImage_Raster::~SkSpecialImage_Raster\28\29 6244:SkSpecialImage_Raster::getROPixels\28SkBitmap*\29\20const 6245:SkSpecialImage_Raster::SkSpecialImage_Raster\28SkIRect\20const&\2c\20SkBitmap\20const&\2c\20SkSurfaceProps\20const&\29 6246:SkSpecialImage_Gpu::~SkSpecialImage_Gpu\28\29 6247:SkSpecialImage::makeSubset\28SkIRect\20const&\29\20const 6248:SkSpecialImage::makePixelOutset\28\29\20const 6249:SkSpecialImage::SkSpecialImage\28SkIRect\20const&\2c\20unsigned\20int\2c\20SkColorInfo\20const&\2c\20SkSurfaceProps\20const&\29 6250:SkShapers::unicode::BidiRunIterator\28sk_sp\2c\20char\20const*\2c\20unsigned\20long\2c\20unsigned\20char\29 6251:SkShapers::HB::ShapeDontWrapOrReorder\28sk_sp\2c\20sk_sp\29 6252:SkShaper::TrivialLanguageRunIterator::~TrivialLanguageRunIterator\28\29 6253:SkShaper::MakeStdLanguageRunIterator\28char\20const*\2c\20unsigned\20long\29 6254:SkShaper::MakeFontMgrRunIterator\28char\20const*\2c\20unsigned\20long\2c\20SkFont\20const&\2c\20sk_sp\29 6255:SkShadowTessellator::MakeAmbient\28SkPath\20const&\2c\20SkMatrix\20const&\2c\20SkPoint3\20const&\2c\20bool\29 6256:SkShaders::MatrixRec::totalMatrix\28\29\20const 6257:SkShaders::MatrixRec::concat\28SkMatrix\20const&\29\20const 6258:SkShaders::Empty\28\29 6259:SkShaders::Color\28unsigned\20int\29 6260:SkShaders::Blend\28sk_sp\2c\20sk_sp\2c\20sk_sp\29 6261:SkShaderUtils::VisitLineByLine\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::function\20const&\29 6262:SkShaderUtils::GLSLPrettyPrint::parseUntil\28char\20const*\29 6263:SkShaderUtils::GLSLPrettyPrint::parseUntilNewline\28\29 6264:SkShaderBase::getFlattenableType\28\29\20const 6265:SkShader::makeWithLocalMatrix\28SkMatrix\20const&\29\20const 6266:SkShader::makeWithColorFilter\28sk_sp\29\20const 6267:SkScan::PathRequiresTiling\28SkIRect\20const&\29 6268:SkScan::HairLine\28SkPoint\20const*\2c\20int\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 6269:SkScan::FillXRect\28SkIRect\20const&\2c\20SkRegion\20const*\2c\20SkBlitter*\29 6270:SkScan::FillRect\28SkRect\20const&\2c\20SkRegion\20const*\2c\20SkBlitter*\29 6271:SkScan::AntiFrameRect\28SkRect\20const&\2c\20SkPoint\20const&\2c\20SkRegion\20const*\2c\20SkBlitter*\29 6272:SkScan::AntiFillRect\28SkRect\20const&\2c\20SkRegion\20const*\2c\20SkBlitter*\29 6273:SkScan::AAAFillPath\28SkPath\20const&\2c\20SkBlitter*\2c\20SkIRect\20const&\2c\20SkIRect\20const&\2c\20bool\29 6274:SkScalerContext_FreeType::~SkScalerContext_FreeType\28\29 6275:SkScalerContext_FreeType::shouldSubpixelBitmap\28SkGlyph\20const&\2c\20SkMatrix\20const&\29 6276:SkScalerContext_FreeType::getCBoxForLetter\28char\2c\20FT_BBox_*\29 6277:SkScalerContext_FreeType::getBoundsOfCurrentOutlineGlyph\28FT_GlyphSlotRec_*\2c\20SkRect*\29 6278:SkScalerContextRec::setLuminanceColor\28unsigned\20int\29 6279:SkScalerContextFTUtils::drawCOLRv1Glyph\28FT_FaceRec_*\2c\20SkGlyph\20const&\2c\20unsigned\20int\2c\20SkSpan\2c\20SkCanvas*\29\20const 6280:SkScalerContextFTUtils::drawCOLRv0Glyph\28FT_FaceRec_*\2c\20SkGlyph\20const&\2c\20unsigned\20int\2c\20SkSpan\2c\20SkCanvas*\29\20const 6281:SkScalerContext::makeGlyph\28SkPackedGlyphID\2c\20SkArenaAlloc*\29 6282:SkScalerContext::internalGetPath\28SkGlyph&\2c\20SkArenaAlloc*\29 6283:SkScalerContext::SkScalerContext\28sk_sp\2c\20SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29 6284:SkScalerContext::SaturateGlyphBounds\28SkGlyph*\2c\20SkRect&&\29 6285:SkScalerContext::MakeRecAndEffects\28SkFont\20const&\2c\20SkPaint\20const&\2c\20SkSurfaceProps\20const&\2c\20SkScalerContextFlags\2c\20SkMatrix\20const&\2c\20SkScalerContextRec*\2c\20SkScalerContextEffects*\29 6286:SkScalerContext::MakeEmpty\28sk_sp\2c\20SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29 6287:SkScalerContext::AutoDescriptorGivenRecAndEffects\28SkScalerContextRec\20const&\2c\20SkScalerContextEffects\20const&\2c\20SkAutoDescriptor*\29 6288:SkScalarInterpFunc\28float\2c\20float\20const*\2c\20float\20const*\2c\20int\29 6289:SkSTArenaAlloc<4096ul>::SkSTArenaAlloc\28unsigned\20long\29 6290:SkSTArenaAlloc<256ul>::SkSTArenaAlloc\28unsigned\20long\29 6291:SkSLCombinedSamplerTypeForTextureType\28GrTextureType\29 6292:SkSL::type_to_sksltype\28SkSL::Context\20const&\2c\20SkSL::Type\20const&\2c\20SkSLType*\29 6293:SkSL::stoi\28std::__2::basic_string_view>\2c\20long\20long*\29 6294:SkSL::splat_scalar\28SkSL::Context\20const&\2c\20SkSL::Expression\20const&\2c\20SkSL::Type\20const&\29 6295:SkSL::simplify_constant_equality\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\29 6296:SkSL::short_circuit_boolean\28SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\29 6297:SkSL::remove_break_statements\28std::__2::unique_ptr>&\29::RemoveBreaksWriter::visitStatementPtr\28std::__2::unique_ptr>&\29 6298:SkSL::optimize_intrinsic_call\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::IntrinsicKind\2c\20SkSL::ExpressionArray\20const&\2c\20SkSL::Type\20const&\29::$_2::operator\28\29\28int\29\20const 6299:SkSL::optimize_intrinsic_call\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::IntrinsicKind\2c\20SkSL::ExpressionArray\20const&\2c\20SkSL::Type\20const&\29::$_1::operator\28\29\28int\29\20const 6300:SkSL::optimize_intrinsic_call\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::IntrinsicKind\2c\20SkSL::ExpressionArray\20const&\2c\20SkSL::Type\20const&\29::$_0::operator\28\29\28int\29\20const 6301:SkSL::negate_expression\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Type\20const&\29 6302:SkSL::make_reciprocal_expression\28SkSL::Context\20const&\2c\20SkSL::Expression\20const&\29 6303:SkSL::index_out_of_range\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20long\20long\2c\20SkSL::Expression\20const&\29 6304:SkSL::hoist_vardecl_symbols_into_outer_scope\28SkSL::Context\20const&\2c\20SkSL::Block\20const&\2c\20SkSL::SymbolTable*\2c\20SkSL::SymbolTable*\29::SymbolHoister::visitStatement\28SkSL::Statement\20const&\29 6305:SkSL::get_struct_definitions_from_module\28SkSL::Program&\2c\20SkSL::Module\20const&\2c\20std::__2::vector>*\29 6306:SkSL::find_existing_declaration\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ModifierFlags\2c\20SkSL::IntrinsicKind\2c\20std::__2::basic_string_view>\2c\20skia_private::TArray>\2c\20true>&\2c\20SkSL::Position\2c\20SkSL::Type\20const*\2c\20SkSL::FunctionDeclaration**\29::$_0::operator\28\29\28\29\20const 6307:SkSL::extract_matrix\28SkSL::Expression\20const*\2c\20float*\29 6308:SkSL::eliminate_unreachable_code\28SkSpan>>\2c\20SkSL::ProgramUsage*\29::UnreachableCodeEliminator::visitStatementPtr\28std::__2::unique_ptr>&\29 6309:SkSL::eliminate_no_op_boolean\28SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\29 6310:SkSL::check_main_signature\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20skia_private::TArray>\2c\20true>&\29::$_4::operator\28\29\28int\29\20const 6311:SkSL::check_main_signature\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20skia_private::TArray>\2c\20true>&\29::$_2::operator\28\29\28SkSL::Type\20const&\29\20const 6312:SkSL::check_main_signature\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20skia_private::TArray>\2c\20true>&\29::$_1::operator\28\29\28int\29\20const 6313:SkSL::argument_needs_scratch_variable\28SkSL::Expression\20const*\2c\20SkSL::Variable\20const*\2c\20SkSL::ProgramUsage\20const&\29 6314:SkSL::argument_and_parameter_flags_match\28SkSL::Expression\20const&\2c\20SkSL::Variable\20const&\29 6315:SkSL::apply_to_elements\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20double\20\28*\29\28double\29\29 6316:SkSL::append_rtadjust_fixup_to_vertex_main\28SkSL::Context\20const&\2c\20SkSL::FunctionDeclaration\20const&\2c\20SkSL::Block&\29::AppendRTAdjustFixupHelper::Adjust\28\29\20const 6317:SkSL::\28anonymous\20namespace\29::clone_with_ref_kind\28SkSL::Expression\20const&\2c\20SkSL::VariableRefKind\2c\20SkSL::Position\29 6318:SkSL::\28anonymous\20namespace\29::check_valid_uniform_type\28SkSL::Position\2c\20SkSL::Type\20const*\2c\20SkSL::Context\20const&\2c\20bool\29::$_0::operator\28\29\28\29\20const 6319:SkSL::\28anonymous\20namespace\29::caps_lookup_table\28\29 6320:SkSL::\28anonymous\20namespace\29::ReturnsInputAlphaVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 6321:SkSL::\28anonymous\20namespace\29::ProgramUsageVisitor::visitStructFields\28SkSL::Type\20const&\29 6322:SkSL::\28anonymous\20namespace\29::ProgramUsageVisitor::visitStatement\28SkSL::Statement\20const&\29 6323:SkSL::\28anonymous\20namespace\29::ProgramUsageVisitor::visitExpression\28SkSL::Expression\20const&\29 6324:SkSL::\28anonymous\20namespace\29::NodeCountVisitor::visitStatement\28SkSL::Statement\20const&\29 6325:SkSL::\28anonymous\20namespace\29::IsAssignableVisitor::visitExpression\28SkSL::Expression&\2c\20SkSL::FieldAccess\20const*\29::'lambda'\28\29::operator\28\29\28\29\20const 6326:SkSL::\28anonymous\20namespace\29::FinalizationVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 6327:SkSL::Variable::MakeScratchVariable\28SkSL::Context\20const&\2c\20SkSL::Mangler&\2c\20std::__2::basic_string_view>\2c\20SkSL::Type\20const*\2c\20SkSL::SymbolTable*\2c\20std::__2::unique_ptr>\29 6328:SkSL::VarDeclaration::ErrorCheck\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Position\2c\20SkSL::Layout\20const&\2c\20SkSL::ModifierFlags\2c\20SkSL::Type\20const*\2c\20SkSL::Type\20const*\2c\20SkSL::VariableStorage\29 6329:SkSL::TypeReference::description\28SkSL::OperatorPrecedence\29\20const 6330:SkSL::TypeReference::VerifyType\28SkSL::Context\20const&\2c\20SkSL::Type\20const*\2c\20SkSL::Position\29 6331:SkSL::TypeReference::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const*\29 6332:SkSL::Type::checkIfUsableInArray\28SkSL::Context\20const&\2c\20SkSL::Position\29\20const 6333:SkSL::Type::checkForOutOfRangeLiteral\28SkSL::Context\20const&\2c\20SkSL::Expression\20const&\29\20const 6334:SkSL::Type::MakeStructType\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::basic_string_view>\2c\20skia_private::TArray\2c\20bool\29 6335:SkSL::Type::MakeLiteralType\28char\20const*\2c\20SkSL::Type\20const&\2c\20signed\20char\29 6336:SkSL::Transform::\28anonymous\20namespace\29::BuiltinVariableScanner::addDeclaringElement\28SkSL::Symbol\20const*\29 6337:SkSL::Transform::HoistSwitchVarDeclarationsAtTopLevel\28SkSL::Context\20const&\2c\20std::__2::unique_ptr>\29::HoistSwitchVarDeclsVisitor::visitStatementPtr\28std::__2::unique_ptr>&\29 6338:SkSL::Transform::EliminateDeadGlobalVariables\28SkSL::Program&\29::$_0::operator\28\29\28std::__2::unique_ptr>\20const&\29\20const 6339:SkSL::TernaryExpression::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 6340:SkSL::SymbolTable::moveSymbolTo\28SkSL::SymbolTable*\2c\20SkSL::Symbol*\2c\20SkSL::Context\20const&\29 6341:SkSL::SymbolTable::isBuiltinType\28std::__2::basic_string_view>\29\20const 6342:SkSL::SymbolTable::insertNewParent\28\29 6343:SkSL::SymbolTable::addWithoutOwnership\28SkSL::Symbol*\29 6344:SkSL::Symbol::instantiate\28SkSL::Context\20const&\2c\20SkSL::Position\29\20const 6345:SkSL::Swizzle::~Swizzle\28\29 6346:SkSL::SwitchStatement::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 6347:SkSL::SwitchCase::Make\28SkSL::Position\2c\20long\20long\2c\20std::__2::unique_ptr>\29 6348:SkSL::SwitchCase::MakeDefault\28SkSL::Position\2c\20std::__2::unique_ptr>\29 6349:SkSL::StructType::StructType\28SkSL::Position\2c\20std::__2::basic_string_view>\2c\20skia_private::TArray\2c\20int\2c\20bool\2c\20bool\29 6350:SkSL::String::vappendf\28std::__2::basic_string\2c\20std::__2::allocator>*\2c\20char\20const*\2c\20void*\29 6351:SkSL::SingleArgumentConstructor::argumentSpan\28\29 6352:SkSL::Setting::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20bool\20const\20SkSL::ShaderCaps::*\29 6353:SkSL::RP::stack_usage\28SkSL::RP::Instruction\20const&\29 6354:SkSL::RP::is_sliceable_swizzle\28SkSpan\29 6355:SkSL::RP::is_immediate_op\28SkSL::RP::BuilderOp\29 6356:SkSL::RP::UnownedLValueSlice::isWritable\28\29\20const 6357:SkSL::RP::UnownedLValueSlice::dynamicSlotRange\28\29 6358:SkSL::RP::SwizzleLValue::~SwizzleLValue\28\29 6359:SkSL::RP::ScratchLValue::~ScratchLValue\28\29 6360:SkSL::RP::Program::appendStages\28SkRasterPipeline*\2c\20SkArenaAlloc*\2c\20SkSL::RP::Callbacks*\2c\20SkSpan\29\20const 6361:SkSL::RP::Program::appendStackRewind\28skia_private::TArray*\29\20const 6362:SkSL::RP::Program::appendCopyImmutableUnmasked\28skia_private::TArray*\2c\20SkArenaAlloc*\2c\20std::byte*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20int\29\20const 6363:SkSL::RP::Program::appendAdjacentNWayTernaryOp\28skia_private::TArray*\2c\20SkArenaAlloc*\2c\20SkSL::RP::ProgramOp\2c\20std::byte*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20int\29\20const 6364:SkSL::RP::Program::appendAdjacentNWayBinaryOp\28skia_private::TArray*\2c\20SkArenaAlloc*\2c\20SkSL::RP::ProgramOp\2c\20unsigned\20int\2c\20unsigned\20int\2c\20int\29\20const 6365:SkSL::RP::LValue::swizzle\28\29 6366:SkSL::RP::ImmutableLValue::fixedSlotRange\28SkSL::RP::Generator*\29 6367:SkSL::RP::Generator::writeVarDeclaration\28SkSL::VarDeclaration\20const&\29 6368:SkSL::RP::Generator::writeFunction\28SkSL::IRNode\20const&\2c\20SkSL::FunctionDefinition\20const&\2c\20SkSpan>\20const>\29 6369:SkSL::RP::Generator::storeImmutableValueToSlots\28skia_private::TArray\20const&\2c\20SkSL::RP::SlotRange\29 6370:SkSL::RP::Generator::returnComplexity\28SkSL::FunctionDefinition\20const*\29 6371:SkSL::RP::Generator::pushVariableReferencePartial\28SkSL::VariableReference\20const&\2c\20SkSL::RP::SlotRange\29 6372:SkSL::RP::Generator::pushTraceScopeMask\28\29 6373:SkSL::RP::Generator::pushLengthIntrinsic\28int\29 6374:SkSL::RP::Generator::pushLValueOrExpression\28SkSL::RP::LValue*\2c\20SkSL::Expression\20const&\29 6375:SkSL::RP::Generator::pushIntrinsic\28SkSL::RP::BuilderOp\2c\20SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\29 6376:SkSL::RP::Generator::pushIntrinsic\28SkSL::IntrinsicKind\2c\20SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\2c\20SkSL::Expression\20const&\29 6377:SkSL::RP::Generator::pushImmutableData\28SkSL::Expression\20const&\29 6378:SkSL::RP::Generator::getImmutableValueForExpression\28SkSL::Expression\20const&\2c\20skia_private::TArray*\29 6379:SkSL::RP::Generator::getImmutableBitsForSlot\28SkSL::Expression\20const&\2c\20unsigned\20long\29 6380:SkSL::RP::Generator::findPreexistingImmutableData\28skia_private::TArray\20const&\29 6381:SkSL::RP::Generator::discardTraceScopeMask\28\29 6382:SkSL::RP::Builder::push_condition_mask\28\29 6383:SkSL::RP::Builder::pop_slots_unmasked\28SkSL::RP::SlotRange\29 6384:SkSL::RP::Builder::pop_condition_mask\28\29 6385:SkSL::RP::Builder::pop_and_reenable_loop_mask\28\29 6386:SkSL::RP::Builder::merge_loop_mask\28\29 6387:SkSL::RP::Builder::merge_inv_condition_mask\28\29 6388:SkSL::RP::Builder::mask_off_loop_mask\28\29 6389:SkSL::RP::Builder::discard_stack\28int\2c\20int\29 6390:SkSL::RP::Builder::copy_stack_to_slots_unmasked\28SkSL::RP::SlotRange\2c\20int\29 6391:SkSL::RP::Builder::copy_stack_to_slots_unmasked\28SkSL::RP::SlotRange\29 6392:SkSL::RP::Builder::copy_stack_to_slots\28SkSL::RP::SlotRange\29 6393:SkSL::RP::Builder::branch_if_any_lanes_active\28int\29 6394:SkSL::RP::AutoStack::pushClone\28SkSL::RP::SlotRange\2c\20int\29 6395:SkSL::RP::AutoContinueMask::~AutoContinueMask\28\29 6396:SkSL::RP::AutoContinueMask::exitLoopBody\28\29 6397:SkSL::RP::AutoContinueMask::enterLoopBody\28\29 6398:SkSL::RP::AutoContinueMask::enable\28\29 6399:SkSL::ProgramUsage::remove\28SkSL::Expression\20const*\29 6400:SkSL::ProgramUsage::get\28SkSL::FunctionDeclaration\20const&\29\20const 6401:SkSL::ProgramUsage::add\28SkSL::Statement\20const*\29 6402:SkSL::ProgramUsage::add\28SkSL::Expression\20const*\29 6403:SkSL::ProgramConfig::ProgramConfig\28\29 6404:SkSL::Program::~Program\28\29 6405:SkSL::PostfixExpression::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20SkSL::Operator\29 6406:SkSL::PipelineStage::PipelineStageCodeGenerator::functionName\28SkSL::FunctionDeclaration\20const&\29 6407:SkSL::PipelineStage::PipelineStageCodeGenerator::functionDeclaration\28SkSL::FunctionDeclaration\20const&\29 6408:SkSL::Parser::~Parser\28\29 6409:SkSL::Parser::varDeclarations\28\29 6410:SkSL::Parser::varDeclarationsPrefix\28SkSL::Parser::VarDeclarationsPrefix*\29 6411:SkSL::Parser::varDeclarationsOrExpressionStatement\28\29 6412:SkSL::Parser::switchCaseBody\28SkSL::ExpressionArray*\2c\20skia_private::STArray<2\2c\20std::__2::unique_ptr>\2c\20true>*\2c\20std::__2::unique_ptr>\29 6413:SkSL::Parser::shiftExpression\28\29 6414:SkSL::Parser::relationalExpression\28\29 6415:SkSL::Parser::multiplicativeExpression\28\29 6416:SkSL::Parser::logicalXorExpression\28\29 6417:SkSL::Parser::logicalAndExpression\28\29 6418:SkSL::Parser::localVarDeclarationEnd\28SkSL::Position\2c\20SkSL::Modifiers\20const&\2c\20SkSL::Type\20const*\2c\20SkSL::Token\29 6419:SkSL::Parser::intLiteral\28long\20long*\29 6420:SkSL::Parser::identifier\28std::__2::basic_string_view>*\29 6421:SkSL::Parser::globalVarDeclarationEnd\28SkSL::Position\2c\20SkSL::Modifiers\20const&\2c\20SkSL::Type\20const*\2c\20SkSL::Token\29 6422:SkSL::Parser::expressionStatement\28\29 6423:SkSL::Parser::expectNewline\28\29 6424:SkSL::Parser::equalityExpression\28\29 6425:SkSL::Parser::directive\28bool\29 6426:SkSL::Parser::declarations\28\29 6427:SkSL::Parser::bitwiseXorExpression\28\29 6428:SkSL::Parser::bitwiseOrExpression\28\29 6429:SkSL::Parser::bitwiseAndExpression\28\29 6430:SkSL::Parser::additiveExpression\28\29 6431:SkSL::Parser::addGlobalVarDeclaration\28std::__2::unique_ptr>\29 6432:SkSL::Parser::Parser\28SkSL::Compiler*\2c\20SkSL::ProgramSettings\20const&\2c\20SkSL::ProgramKind\2c\20std::__2::unique_ptr\2c\20std::__2::allocator>\2c\20std::__2::default_delete\2c\20std::__2::allocator>>>\29 6433:SkSL::MultiArgumentConstructor::argumentSpan\28\29 6434:SkSL::ModuleLoader::loadSharedModule\28SkSL::Compiler*\29 6435:SkSL::ModuleLoader::loadPublicModule\28SkSL::Compiler*\29 6436:SkSL::ModuleLoader::Get\28\29 6437:SkSL::Module::~Module\28\29 6438:SkSL::MethodReference::~MethodReference\28\29.1 6439:SkSL::MethodReference::~MethodReference\28\29 6440:SkSL::MatrixType::bitWidth\28\29\20const 6441:SkSL::MakeRasterPipelineProgram\28SkSL::Program\20const&\2c\20SkSL::FunctionDefinition\20const&\2c\20SkSL::DebugTracePriv*\2c\20bool\29 6442:SkSL::Layout::operator!=\28SkSL::Layout\20const&\29\20const 6443:SkSL::Layout::description\28\29\20const 6444:SkSL::Intrinsics::\28anonymous\20namespace\29::finalize_distance\28double\29 6445:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_matrixCompMult\28double\2c\20double\2c\20double\29 6446:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_length\28std::__2::array\20const&\29 6447:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_add\28SkSL::Context\20const&\2c\20std::__2::array\20const&\29 6448:SkSL::Inliner::inlineStatement\28SkSL::Position\2c\20skia_private::THashMap>\2c\20SkGoodHash>*\2c\20SkSL::SymbolTable*\2c\20std::__2::unique_ptr>*\2c\20SkSL::Analysis::ReturnComplexity\2c\20SkSL::Statement\20const&\2c\20SkSL::ProgramUsage\20const&\2c\20bool\29 6449:SkSL::Inliner::inlineExpression\28SkSL::Position\2c\20skia_private::THashMap>\2c\20SkGoodHash>*\2c\20SkSL::SymbolTable*\2c\20SkSL::Expression\20const&\29 6450:SkSL::Inliner::buildCandidateList\28std::__2::vector>\2c\20std::__2::allocator>>>\20const&\2c\20SkSL::SymbolTable*\2c\20SkSL::ProgramUsage*\2c\20SkSL::InlineCandidateList*\29::$_1::operator\28\29\28SkSL::InlineCandidate\20const&\29\20const 6451:SkSL::Inliner::buildCandidateList\28std::__2::vector>\2c\20std::__2::allocator>>>\20const&\2c\20SkSL::SymbolTable*\2c\20SkSL::ProgramUsage*\2c\20SkSL::InlineCandidateList*\29::$_0::operator\28\29\28SkSL::InlineCandidate\20const&\29\20const 6452:SkSL::Inliner::InlinedCall::~InlinedCall\28\29 6453:SkSL::IndexExpression::~IndexExpression\28\29 6454:SkSL::IfStatement::~IfStatement\28\29 6455:SkSL::IRHelpers::Ref\28SkSL::Variable\20const*\29\20const 6456:SkSL::IRHelpers::Mul\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29\20const 6457:SkSL::IRHelpers::Assign\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29\20const 6458:SkSL::GLSLCodeGenerator::writeVarDeclaration\28SkSL::VarDeclaration\20const&\2c\20bool\29 6459:SkSL::GLSLCodeGenerator::writeProgramElement\28SkSL::ProgramElement\20const&\29 6460:SkSL::GLSLCodeGenerator::writeMinAbsHack\28SkSL::Expression&\2c\20SkSL::Expression&\29 6461:SkSL::GLSLCodeGenerator::generateCode\28\29 6462:SkSL::FunctionDefinition::~FunctionDefinition\28\29.1 6463:SkSL::FunctionDefinition::~FunctionDefinition\28\29 6464:SkSL::FunctionDefinition::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::FunctionDeclaration\20const&\2c\20std::__2::unique_ptr>\2c\20bool\29::Finalizer::visitStatementPtr\28std::__2::unique_ptr>&\29 6465:SkSL::FunctionDefinition::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::FunctionDeclaration\20const&\2c\20std::__2::unique_ptr>\2c\20bool\29::Finalizer::addLocalVariable\28SkSL::Variable\20const*\2c\20SkSL::Position\29 6466:SkSL::FunctionDeclaration::~FunctionDeclaration\28\29.1 6467:SkSL::FunctionDeclaration::~FunctionDeclaration\28\29 6468:SkSL::FunctionDeclaration::mangledName\28\29\20const 6469:SkSL::FunctionDeclaration::getMainInputColorParameter\28\29\20const 6470:SkSL::FunctionDeclaration::getMainDestColorParameter\28\29\20const 6471:SkSL::FunctionDeclaration::determineFinalTypes\28SkSL::ExpressionArray\20const&\2c\20skia_private::STArray<8\2c\20SkSL::Type\20const*\2c\20true>*\2c\20SkSL::Type\20const**\29\20const 6472:SkSL::FunctionDeclaration::FunctionDeclaration\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ModifierFlags\2c\20std::__2::basic_string_view>\2c\20skia_private::TArray\2c\20SkSL::Type\20const*\2c\20SkSL::IntrinsicKind\29 6473:SkSL::FunctionCall::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const*\2c\20SkSL::FunctionDeclaration\20const&\2c\20SkSL::ExpressionArray\29 6474:SkSL::FunctionCall::FunctionCall\28SkSL::Position\2c\20SkSL::Type\20const*\2c\20SkSL::FunctionDeclaration\20const*\2c\20SkSL::ExpressionArray\29 6475:SkSL::FunctionCall::FindBestFunctionForCall\28SkSL::Context\20const&\2c\20SkSL::FunctionDeclaration\20const*\2c\20SkSL::ExpressionArray\20const&\29 6476:SkSL::FunctionCall::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::FunctionDeclaration\20const&\2c\20SkSL::ExpressionArray\29 6477:SkSL::ForStatement::~ForStatement\28\29 6478:SkSL::ForStatement::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ForLoopPositions\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 6479:SkSL::FindIntrinsicKind\28std::__2::basic_string_view>\29 6480:SkSL::FieldAccess::~FieldAccess\28\29.1 6481:SkSL::FieldAccess::~FieldAccess\28\29 6482:SkSL::FieldAccess::description\28SkSL::OperatorPrecedence\29\20const 6483:SkSL::FieldAccess::FieldAccess\28SkSL::Position\2c\20std::__2::unique_ptr>\2c\20int\2c\20SkSL::FieldAccessOwnerKind\29 6484:SkSL::ExtendedVariable::~ExtendedVariable\28\29 6485:SkSL::Expression::isFloatLiteral\28\29\20const 6486:SkSL::Expression::coercionCost\28SkSL::Type\20const&\29\20const 6487:SkSL::DoStatement::~DoStatement\28\29.1 6488:SkSL::DoStatement::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 6489:SkSL::DiscardStatement::Make\28SkSL::Context\20const&\2c\20SkSL::Position\29 6490:SkSL::ContinueStatement::Make\28SkSL::Position\29 6491:SkSL::ConstructorStruct::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray\29 6492:SkSL::ConstructorScalarCast::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray\29 6493:SkSL::ConstructorMatrixResize::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20std::__2::unique_ptr>\29 6494:SkSL::Constructor::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const&\2c\20SkSL::ExpressionArray\29 6495:SkSL::Compiler::resetErrors\28\29 6496:SkSL::Compiler::initializeContext\28SkSL::Module\20const*\2c\20SkSL::ProgramKind\2c\20SkSL::ProgramSettings\2c\20std::__2::basic_string_view>\2c\20bool\29 6497:SkSL::Compiler::cleanupContext\28\29 6498:SkSL::CoercionCost::operator<\28SkSL::CoercionCost\29\20const 6499:SkSL::ChildCall::~ChildCall\28\29.1 6500:SkSL::ChildCall::~ChildCall\28\29 6501:SkSL::ChildCall::Make\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Type\20const*\2c\20SkSL::Variable\20const&\2c\20SkSL::ExpressionArray\29 6502:SkSL::ChildCall::ChildCall\28SkSL::Position\2c\20SkSL::Type\20const*\2c\20SkSL::Variable\20const*\2c\20SkSL::ExpressionArray\29 6503:SkSL::BreakStatement::Make\28SkSL::Position\29 6504:SkSL::Block::Block\28SkSL::Position\2c\20skia_private::STArray<2\2c\20std::__2::unique_ptr>\2c\20true>\2c\20SkSL::Block::Kind\2c\20std::__2::unique_ptr>\29 6505:SkSL::BinaryExpression::isAssignmentIntoVariable\28\29 6506:SkSL::ArrayType::columns\28\29\20const 6507:SkSL::Analysis::\28anonymous\20namespace\29::LoopControlFlowVisitor::visitStatement\28SkSL::Statement\20const&\29 6508:SkSL::Analysis::IsDynamicallyUniformExpression\28SkSL::Expression\20const&\29::IsDynamicallyUniformExpressionVisitor::visitExpression\28SkSL::Expression\20const&\29 6509:SkSL::Analysis::IsDynamicallyUniformExpression\28SkSL::Expression\20const&\29 6510:SkSL::Analysis::IsConstantExpression\28SkSL::Expression\20const&\29 6511:SkSL::Analysis::IsCompileTimeConstant\28SkSL::Expression\20const&\29::IsCompileTimeConstantVisitor::visitExpression\28SkSL::Expression\20const&\29 6512:SkSL::Analysis::IsAssignable\28SkSL::Expression&\2c\20SkSL::Analysis::AssignmentInfo*\2c\20SkSL::ErrorReporter*\29 6513:SkSL::Analysis::HasSideEffects\28SkSL::Expression\20const&\29::HasSideEffectsVisitor::visitExpression\28SkSL::Expression\20const&\29 6514:SkSL::Analysis::GetLoopUnrollInfo\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::ForLoopPositions\20const&\2c\20SkSL::Statement\20const*\2c\20std::__2::unique_ptr>*\2c\20SkSL::Expression\20const*\2c\20SkSL::Statement\20const*\2c\20SkSL::ErrorReporter*\29 6515:SkSL::Analysis::GetLoopControlFlowInfo\28SkSL::Statement\20const&\29 6516:SkSL::Analysis::ContainsVariable\28SkSL::Expression\20const&\2c\20SkSL::Variable\20const&\29::ContainsVariableVisitor::visitExpression\28SkSL::Expression\20const&\29 6517:SkSL::Analysis::ContainsRTAdjust\28SkSL::Expression\20const&\29::ContainsRTAdjustVisitor::visitExpression\28SkSL::Expression\20const&\29 6518:SkSL::Analysis::CheckProgramStructure\28SkSL::Program\20const&\2c\20bool\29::ProgramSizeVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 6519:SkSL::AliasType::numberKind\28\29\20const 6520:SkSL::AliasType::isAllowedInES2\28\29\20const 6521:SkSBlockAllocator<80ul>::SkSBlockAllocator\28SkBlockAllocator::GrowthPolicy\2c\20unsigned\20long\29 6522:SkRuntimeShader::~SkRuntimeShader\28\29 6523:SkRuntimeEffectPriv::VarAsChild\28SkSL::Variable\20const&\2c\20int\29 6524:SkRuntimeEffect::~SkRuntimeEffect\28\29 6525:SkRuntimeEffect::getRPProgram\28SkSL::DebugTracePriv*\29\20const 6526:SkRuntimeEffect::MakeForShader\28SkString\2c\20SkRuntimeEffect::Options\20const&\29 6527:SkRuntimeEffect::ChildPtr::type\28\29\20const 6528:SkRuntimeEffect::ChildPtr::shader\28\29\20const 6529:SkRuntimeEffect::ChildPtr::colorFilter\28\29\20const 6530:SkRuntimeEffect::ChildPtr::blender\28\29\20const 6531:SkRgnBuilder::collapsWithPrev\28\29 6532:SkResourceCache::release\28SkResourceCache::Rec*\29 6533:SkResourceCache::PostPurgeSharedID\28unsigned\20long\20long\29 6534:SkResourceCache::NewCachedData\28unsigned\20long\29 6535:SkResourceCache::GetDiscardableFactory\28\29 6536:SkRescaleAndReadPixels\28SkBitmap\2c\20SkImageInfo\20const&\2c\20SkIRect\20const&\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29::Result::~Result\28\29 6537:SkRescaleAndReadPixels\28SkBitmap\2c\20SkImageInfo\20const&\2c\20SkIRect\20const&\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29 6538:SkRegion::quickReject\28SkIRect\20const&\29\20const 6539:SkRegion::quickContains\28SkIRect\20const&\29\20const 6540:SkRegion::op\28SkIRect\20const&\2c\20SkRegion::Op\29 6541:SkRegion::getRuns\28int*\2c\20int*\29\20const 6542:SkRegion::Spanerator::next\28int*\2c\20int*\29 6543:SkRegion::Spanerator::Spanerator\28SkRegion\20const&\2c\20int\2c\20int\2c\20int\29 6544:SkRegion::RunHead::ensureWritable\28\29 6545:SkRegion::RunHead::computeRunBounds\28SkIRect*\29 6546:SkRegion::RunHead::Alloc\28int\2c\20int\2c\20int\29 6547:SkRegion::Oper\28SkRegion\20const&\2c\20SkRegion\20const&\2c\20SkRegion::Op\2c\20SkRegion*\29 6548:SkRefCntBase::internal_dispose\28\29\20const 6549:SkReduceOrder::Conic\28SkConic\20const&\2c\20SkPoint*\29 6550:SkRectPriv::Subtract\28SkIRect\20const&\2c\20SkIRect\20const&\2c\20SkIRect*\29 6551:SkRectPriv::QuadContainsRect\28SkM44\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20float\29 6552:SkRectPriv::QuadContainsRectMask\28SkM44\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20float\29 6553:SkRectPriv::FitsInFixed\28SkRect\20const&\29 6554:SkRectClipBlitter::requestRowsPreserved\28\29\20const 6555:SkRectClipBlitter::allocBlitMemory\28unsigned\20long\29 6556:SkRect::roundOut\28SkRect*\29\20const 6557:SkRect::roundIn\28\29\20const 6558:SkRect::roundIn\28SkIRect*\29\20const 6559:SkRect::makeOffset\28float\2c\20float\29\20const 6560:SkRect::joinNonEmptyArg\28SkRect\20const&\29 6561:SkRect::intersect\28SkRect\20const&\2c\20SkRect\20const&\29 6562:SkRect::contains\28float\2c\20float\29\20const 6563:SkRect::contains\28SkIRect\20const&\29\20const 6564:SkRect*\20SkRecord::alloc\28unsigned\20long\29 6565:SkRecords::FillBounds::popSaveBlock\28\29 6566:SkRecords::FillBounds::popControl\28SkRect\20const&\29 6567:SkRecords::FillBounds::AdjustForPaint\28SkPaint\20const*\2c\20SkRect*\29 6568:SkRecorder::onDrawTextBlob\28SkTextBlob\20const*\2c\20float\2c\20float\2c\20SkPaint\20const&\29 6569:SkRecordedDrawable::~SkRecordedDrawable\28\29 6570:SkRecordOptimize\28SkRecord*\29 6571:SkRecordFillBounds\28SkRect\20const&\2c\20SkRecord\20const&\2c\20SkRect*\2c\20SkBBoxHierarchy::Metadata*\29 6572:SkRecord::~SkRecord\28\29 6573:SkReadBuffer::skipByteArray\28unsigned\20long*\29 6574:SkReadBuffer::readPad32\28void*\2c\20unsigned\20long\29 6575:SkReadBuffer::SkReadBuffer\28void\20const*\2c\20unsigned\20long\29 6576:SkRasterPipeline_UniformColorCtx*\20SkArenaAlloc::make\28\29 6577:SkRasterPipeline_TileCtx*\20SkArenaAlloc::make\28\29 6578:SkRasterPipeline_RewindCtx*\20SkArenaAlloc::make\28\29 6579:SkRasterPipeline_DecalTileCtx*\20SkArenaAlloc::make\28\29 6580:SkRasterPipeline_CopyIndirectCtx*\20SkArenaAlloc::make\28\29 6581:SkRasterPipeline_2PtConicalCtx*\20SkArenaAlloc::make\28\29 6582:SkRasterPipelineSpriteBlitter::~SkRasterPipelineSpriteBlitter\28\29 6583:SkRasterPipeline::buildPipeline\28SkRasterPipelineStage*\29\20const 6584:SkRasterPipeline::appendSetRGB\28SkArenaAlloc*\2c\20float\20const*\29 6585:SkRasterPipeline::appendLoad\28SkColorType\2c\20SkRasterPipeline_MemoryCtx\20const*\29 6586:SkRasterClipStack::Rec::Rec\28SkRasterClip\20const&\29 6587:SkRasterClip::setEmpty\28\29 6588:SkRasterClip::computeIsRect\28\29\20const 6589:SkRandom::nextULessThan\28unsigned\20int\29 6590:SkRTreeFactory::operator\28\29\28\29\20const 6591:SkRTree::~SkRTree\28\29 6592:SkRTree::search\28SkRTree::Node*\2c\20SkRect\20const&\2c\20std::__2::vector>*\29\20const 6593:SkRTree::bulkLoad\28std::__2::vector>*\2c\20int\29 6594:SkRTree::allocateNodeAtLevel\28unsigned\20short\29 6595:SkRRectPriv::ConservativeIntersect\28SkRRect\20const&\2c\20SkRRect\20const&\29::$_2::operator\28\29\28SkRRect::Corner\2c\20SkPoint\20const&\2c\20SkPoint\20const&\29\20const 6596:SkRRect::setRectXY\28SkRect\20const&\2c\20float\2c\20float\29 6597:SkRRect::isValid\28\29\20const 6598:SkRRect::computeType\28\29 6599:SkRGBA4f<\28SkAlphaType\292>\20skgpu::Swizzle::applyTo<\28SkAlphaType\292>\28SkRGBA4f<\28SkAlphaType\292>\29\20const 6600:SkRGBA4f<\28SkAlphaType\292>::unpremul\28\29\20const 6601:SkQuads::Roots\28double\2c\20double\2c\20double\29 6602:SkQuadraticEdge::setQuadraticWithoutUpdate\28SkPoint\20const*\2c\20int\29 6603:SkQuadConstruct::init\28float\2c\20float\29 6604:SkPtrSet::add\28void*\29 6605:SkPoint::Normalize\28SkPoint*\29 6606:SkPixmap::readPixels\28SkPixmap\20const&\29\20const 6607:SkPixmap::readPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20int\2c\20int\29\20const 6608:SkPixmap::erase\28unsigned\20int\29\20const 6609:SkPixmap::erase\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkIRect\20const*\29\20const 6610:SkPixelRef::callGenIDChangeListeners\28\29 6611:SkPictureShader::CachedImageInfo::makeImage\28sk_sp\2c\20SkPicture\20const*\29\20const 6612:SkPictureRecorder::beginRecording\28SkRect\20const&\2c\20sk_sp\29 6613:SkPictureRecorder::beginRecording\28SkRect\20const&\2c\20SkBBHFactory*\29 6614:SkPictureRecord::fillRestoreOffsetPlaceholdersForCurrentStackLevel\28unsigned\20int\29 6615:SkPictureRecord::endRecording\28\29 6616:SkPictureRecord::beginRecording\28\29 6617:SkPictureRecord::addPath\28SkPath\20const&\29 6618:SkPictureRecord::addPathToHeap\28SkPath\20const&\29 6619:SkPictureRecord::SkPictureRecord\28SkIRect\20const&\2c\20unsigned\20int\29 6620:SkPictureImageGenerator::~SkPictureImageGenerator\28\29 6621:SkPictureData::~SkPictureData\28\29 6622:SkPictureData::flatten\28SkWriteBuffer&\29\20const 6623:SkPictureData::SkPictureData\28SkPictureRecord\20const&\2c\20SkPictInfo\20const&\29 6624:SkPicture::SkPicture\28\29 6625:SkPathWriter::moveTo\28\29 6626:SkPathWriter::init\28\29 6627:SkPathWriter::assemble\28\29 6628:SkPathStroker::setQuadEndNormal\28SkPoint\20const*\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint*\2c\20SkPoint*\29 6629:SkPathStroker::cubicQuadEnds\28SkPoint\20const*\2c\20SkQuadConstruct*\29 6630:SkPathRef::resetToSize\28int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\29 6631:SkPathRef::isRRect\28SkRRect*\2c\20bool*\2c\20unsigned\20int*\29\20const 6632:SkPathRef::isOval\28SkRect*\2c\20bool*\2c\20unsigned\20int*\29\20const 6633:SkPathRef::commonReset\28\29 6634:SkPathRef::Iter::next\28SkPoint*\29 6635:SkPathRef::CreateEmpty\28\29 6636:SkPathPriv::LeadingMoveToCount\28SkPath\20const&\29 6637:SkPathPriv::IsRRect\28SkPath\20const&\2c\20SkRRect*\2c\20SkPathDirection*\2c\20unsigned\20int*\29 6638:SkPathPriv::IsOval\28SkPath\20const&\2c\20SkRect*\2c\20SkPathDirection*\2c\20unsigned\20int*\29 6639:SkPathPriv::IsNestedFillRects\28SkPath\20const&\2c\20SkRect*\2c\20SkPathDirection*\29 6640:SkPathPriv::CreateDrawArcPath\28SkPath*\2c\20SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20bool\29 6641:SkPathOpsBounds::Intersects\28SkPathOpsBounds\20const&\2c\20SkPathOpsBounds\20const&\29 6642:SkPathMeasure::~SkPathMeasure\28\29 6643:SkPathMeasure::getSegment\28float\2c\20float\2c\20SkPath*\2c\20bool\29 6644:SkPathMeasure::SkPathMeasure\28SkPath\20const&\2c\20bool\2c\20float\29 6645:SkPathEffectBase::getFlattenableType\28\29\20const 6646:SkPathEffectBase::PointData::~PointData\28\29 6647:SkPathEdgeIter::next\28\29::'lambda'\28\29::operator\28\29\28\29\20const 6648:SkPathBuilder::reset\28\29 6649:SkPathBuilder::lineTo\28float\2c\20float\29 6650:SkPathBuilder::addRect\28SkRect\20const&\2c\20SkPathDirection\29 6651:SkPathBuilder::addOval\28SkRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\29 6652:SkPath::writeToMemory\28void*\29\20const 6653:SkPath::reverseAddPath\28SkPath\20const&\29 6654:SkPath::offset\28float\2c\20float\29 6655:SkPath::makeTransform\28SkMatrix\20const&\2c\20SkApplyPerspectiveClip\29\20const 6656:SkPath::isZeroLengthSincePoint\28int\29\20const 6657:SkPath::isRRect\28SkRRect*\29\20const 6658:SkPath::isOval\28SkRect*\29\20const 6659:SkPath::copyFields\28SkPath\20const&\29 6660:SkPath::conservativelyContainsRect\28SkRect\20const&\29\20const 6661:SkPath::arcTo\28float\2c\20float\2c\20float\2c\20SkPath::ArcSize\2c\20SkPathDirection\2c\20float\2c\20float\29 6662:SkPath::addRect\28float\2c\20float\2c\20float\2c\20float\2c\20SkPathDirection\29 6663:SkPath::addRRect\28SkRRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\29 6664:SkPath::addCircle\28float\2c\20float\2c\20float\2c\20SkPathDirection\29 6665:SkPath::Polygon\28std::initializer_list\20const&\2c\20bool\2c\20SkPathFillType\2c\20bool\29 6666:SkPaintToGrPaintWithBlend\28GrRecordingContext*\2c\20GrColorInfo\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\2c\20SkBlender*\2c\20SkSurfaceProps\20const&\2c\20GrPaint*\29 6667:SkPaintPriv::ShouldDither\28SkPaint\20const&\2c\20SkColorType\29 6668:SkPackedGlyphID::PackIDSkPoint\28unsigned\20short\2c\20SkPoint\2c\20SkIPoint\29 6669:SkOpSpanBase::merge\28SkOpSpan*\29 6670:SkOpSpanBase::initBase\28SkOpSegment*\2c\20SkOpSpan*\2c\20double\2c\20SkPoint\20const&\29 6671:SkOpSpan::sortableTop\28SkOpContour*\29 6672:SkOpSpan::setOppSum\28int\29 6673:SkOpSpan::insertCoincidence\28SkOpSpan*\29 6674:SkOpSpan::insertCoincidence\28SkOpSegment\20const*\2c\20bool\2c\20bool\29 6675:SkOpSpan::init\28SkOpSegment*\2c\20SkOpSpan*\2c\20double\2c\20SkPoint\20const&\29 6676:SkOpSpan::containsCoincidence\28SkOpSegment\20const*\29\20const 6677:SkOpSpan::computeWindSum\28\29 6678:SkOpSegment::updateOppWindingReverse\28SkOpAngle\20const*\29\20const 6679:SkOpSegment::ptsDisjoint\28double\2c\20SkPoint\20const&\2c\20double\2c\20SkPoint\20const&\29\20const 6680:SkOpSegment::markWinding\28SkOpSpan*\2c\20int\29 6681:SkOpSegment::isClose\28double\2c\20SkOpSegment\20const*\29\20const 6682:SkOpSegment::computeSum\28SkOpSpanBase*\2c\20SkOpSpanBase*\2c\20SkOpAngle::IncludeType\29 6683:SkOpSegment::collapsed\28double\2c\20double\29\20const 6684:SkOpSegment::addExpanded\28double\2c\20SkOpSpanBase\20const*\2c\20bool*\29 6685:SkOpSegment::activeWinding\28SkOpSpanBase*\2c\20SkOpSpanBase*\2c\20int*\29 6686:SkOpSegment::activeOp\28int\2c\20int\2c\20SkOpSpanBase*\2c\20SkOpSpanBase*\2c\20SkPathOp\2c\20int*\2c\20int*\29 6687:SkOpSegment::activeAngle\28SkOpSpanBase*\2c\20SkOpSpanBase**\2c\20SkOpSpanBase**\2c\20bool*\29 6688:SkOpSegment::activeAngleInner\28SkOpSpanBase*\2c\20SkOpSpanBase**\2c\20SkOpSpanBase**\2c\20bool*\29 6689:SkOpPtT::ptAlreadySeen\28SkOpPtT\20const*\29\20const 6690:SkOpEdgeBuilder::~SkOpEdgeBuilder\28\29 6691:SkOpEdgeBuilder::preFetch\28\29 6692:SkOpEdgeBuilder::finish\28\29 6693:SkOpEdgeBuilder::SkOpEdgeBuilder\28SkPath\20const&\2c\20SkOpContourHead*\2c\20SkOpGlobalState*\29 6694:SkOpContourBuilder::addQuad\28SkPoint*\29 6695:SkOpContourBuilder::addLine\28SkPoint\20const*\29 6696:SkOpContourBuilder::addCubic\28SkPoint*\29 6697:SkOpContourBuilder::addConic\28SkPoint*\2c\20float\29 6698:SkOpCoincidence::restoreHead\28\29 6699:SkOpCoincidence::releaseDeleted\28SkCoincidentSpans*\29 6700:SkOpCoincidence::mark\28\29 6701:SkOpCoincidence::markCollapsed\28SkCoincidentSpans*\2c\20SkOpPtT*\29 6702:SkOpCoincidence::fixUp\28SkCoincidentSpans*\2c\20SkOpPtT*\2c\20SkOpPtT\20const*\29 6703:SkOpCoincidence::contains\28SkCoincidentSpans\20const*\2c\20SkOpSegment\20const*\2c\20SkOpSegment\20const*\2c\20double\29\20const 6704:SkOpCoincidence::checkOverlap\28SkCoincidentSpans*\2c\20SkOpSegment\20const*\2c\20SkOpSegment\20const*\2c\20double\2c\20double\2c\20double\2c\20double\2c\20SkTDArray*\29\20const 6705:SkOpCoincidence::addOrOverlap\28SkOpSegment*\2c\20SkOpSegment*\2c\20double\2c\20double\2c\20double\2c\20double\2c\20bool*\29 6706:SkOpCoincidence::addMissing\28bool*\29 6707:SkOpCoincidence::addEndMovedSpans\28SkOpSpan\20const*\2c\20SkOpSpanBase\20const*\29 6708:SkOpAngle::tangentsDiverge\28SkOpAngle\20const*\2c\20double\29 6709:SkOpAngle::setSpans\28\29 6710:SkOpAngle::setSector\28\29 6711:SkOpAngle::previous\28\29\20const 6712:SkOpAngle::midToSide\28SkOpAngle\20const*\2c\20bool*\29\20const 6713:SkOpAngle::merge\28SkOpAngle*\29 6714:SkOpAngle::loopContains\28SkOpAngle\20const*\29\20const 6715:SkOpAngle::lineOnOneSide\28SkOpAngle\20const*\2c\20bool\29 6716:SkOpAngle::lastMarked\28\29\20const 6717:SkOpAngle::findSector\28SkPath::Verb\2c\20double\2c\20double\29\20const 6718:SkOpAngle::endToSide\28SkOpAngle\20const*\2c\20bool*\29\20const 6719:SkOpAngle::checkCrossesZero\28\29\20const 6720:SkOpAngle::alignmentSameSide\28SkOpAngle\20const*\2c\20int*\29\20const 6721:SkOpAngle::after\28SkOpAngle*\29 6722:SkOffsetSimplePolygon\28SkPoint\20const*\2c\20int\2c\20SkRect\20const&\2c\20float\2c\20SkTDArray*\2c\20SkTDArray*\29 6723:SkOTUtils::LocalizedStrings_SingleName::~LocalizedStrings_SingleName\28\29 6724:SkOTUtils::LocalizedStrings_NameTable::~LocalizedStrings_NameTable\28\29 6725:SkNullBlitter*\20SkArenaAlloc::make\28\29 6726:SkNotifyBitmapGenIDIsStale\28unsigned\20int\29 6727:SkNoPixelsDevice::~SkNoPixelsDevice\28\29 6728:SkNoPixelsDevice::SkNoPixelsDevice\28SkIRect\20const&\2c\20SkSurfaceProps\20const&\29 6729:SkNoDestructor::SkNoDestructor\2c\20sk_sp>\28sk_sp&&\2c\20sk_sp&&\29 6730:SkNVRefCnt::unref\28\29\20const 6731:SkNVRefCnt::unref\28\29\20const 6732:SkNVRefCnt::unref\28\29\20const 6733:SkNVRefCnt::unref\28\29\20const 6734:SkNVRefCnt::unref\28\29\20const 6735:SkMipmapAccessor::SkMipmapAccessor\28SkImage_Base\20const*\2c\20SkMatrix\20const&\2c\20SkMipmapMode\29::$_1::operator\28\29\28SkPixmap\20const&\29\20const 6736:SkMipmap::~SkMipmap\28\29 6737:SkMessageBus::Get\28\29 6738:SkMessageBus::Get\28\29 6739:SkMeshSpecification::Attribute::Attribute\28SkMeshSpecification::Attribute\20const&\29 6740:SkMeshPriv::CpuBuffer::~CpuBuffer\28\29 6741:SkMeshPriv::CpuBuffer::size\28\29\20const 6742:SkMeshPriv::CpuBuffer::peek\28\29\20const 6743:SkMeshPriv::CpuBuffer::onUpdate\28GrDirectContext*\2c\20void\20const*\2c\20unsigned\20long\2c\20unsigned\20long\29 6744:SkMemoryStream::~SkMemoryStream\28\29 6745:SkMemoryStream::SkMemoryStream\28sk_sp\29 6746:SkMatrixPriv::MapPointsWithStride\28SkMatrix\20const&\2c\20SkPoint*\2c\20unsigned\20long\2c\20int\29 6747:SkMatrix::updateTranslateMask\28\29 6748:SkMatrix::setTranslate\28float\2c\20float\29 6749:SkMatrix::setScale\28float\2c\20float\29 6750:SkMatrix::postSkew\28float\2c\20float\29 6751:SkMatrix::mapHomogeneousPoints\28SkPoint3*\2c\20SkPoint3\20const*\2c\20int\29\20const 6752:SkMatrix::getMinScale\28\29\20const 6753:SkMatrix::computeTypeMask\28\29\20const 6754:SkMatrix::Rot_xy\28SkMatrix\20const&\2c\20float\2c\20float\2c\20SkPoint*\29 6755:SkMatrix*\20SkRecord::alloc\28unsigned\20long\29 6756:SkMaskFilterBase::NinePatch::~NinePatch\28\29 6757:SkMask*\20SkTLazy::init\28unsigned\20char\20const*&&\2c\20SkIRect\20const&\2c\20unsigned\20int\20const&\2c\20SkMask::Format\20const&\29 6758:SkMask*\20SkTLazy::init\28SkMaskBuilder&\29 6759:SkMallocPixelRef::MakeAllocate\28SkImageInfo\20const&\2c\20unsigned\20long\29::PixelRef::~PixelRef\28\29 6760:SkMakePixelRefWithProc\28int\2c\20int\2c\20unsigned\20long\2c\20void*\2c\20void\20\28*\29\28void*\2c\20void*\29\2c\20void*\29::PixelRef::~PixelRef\28\29 6761:SkMakeBitmapShaderForPaint\28SkPaint\20const&\2c\20SkBitmap\20const&\2c\20SkTileMode\2c\20SkTileMode\2c\20SkSamplingOptions\20const&\2c\20SkMatrix\20const*\2c\20SkCopyPixelsMode\29 6762:SkM44::preTranslate\28float\2c\20float\2c\20float\29 6763:SkM44::postTranslate\28float\2c\20float\2c\20float\29 6764:SkLocalMatrixShader::type\28\29\20const 6765:SkLinearColorSpaceLuminance::toLuma\28float\2c\20float\29\20const 6766:SkLineParameters::normalize\28\29 6767:SkLineParameters::cubicEndPoints\28SkDCubic\20const&\29 6768:SkLineClipper::ClipLine\28SkPoint\20const*\2c\20SkRect\20const&\2c\20SkPoint*\2c\20bool\29 6769:SkLatticeIter::~SkLatticeIter\28\29 6770:SkLatticeIter::next\28SkIRect*\2c\20SkRect*\2c\20bool*\2c\20unsigned\20int*\29 6771:SkLatticeIter::SkLatticeIter\28SkCanvas::Lattice\20const&\2c\20SkRect\20const&\29 6772:SkLRUCache>\2c\20skia::textlayout::ParagraphCache::KeyHash>::find\28skia::textlayout::ParagraphCacheKey\20const&\29 6773:SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::insert\28GrProgramDesc\20const&\2c\20std::__2::unique_ptr>\29 6774:SkLRUCache>\2c\20GrGLGpu::ProgramCache::DescHash>::find\28GrProgramDesc\20const&\29 6775:SkJSONWriter::appendf\28char\20const*\2c\20...\29 6776:SkIsSimplePolygon\28SkPoint\20const*\2c\20int\29 6777:SkIsConvexPolygon\28SkPoint\20const*\2c\20int\29 6778:SkInvert4x4Matrix\28float\20const*\2c\20float*\29 6779:SkInvert3x3Matrix\28float\20const*\2c\20float*\29 6780:SkIntersections::quadVertical\28SkPoint\20const*\2c\20float\2c\20float\2c\20float\2c\20bool\29 6781:SkIntersections::quadLine\28SkPoint\20const*\2c\20SkPoint\20const*\29 6782:SkIntersections::quadHorizontal\28SkPoint\20const*\2c\20float\2c\20float\2c\20float\2c\20bool\29 6783:SkIntersections::mostOutside\28double\2c\20double\2c\20SkDPoint\20const&\29\20const 6784:SkIntersections::lineVertical\28SkPoint\20const*\2c\20float\2c\20float\2c\20float\2c\20bool\29 6785:SkIntersections::lineHorizontal\28SkPoint\20const*\2c\20float\2c\20float\2c\20float\2c\20bool\29 6786:SkIntersections::intersect\28SkDCubic\20const&\2c\20SkDQuad\20const&\29 6787:SkIntersections::intersect\28SkDCubic\20const&\2c\20SkDConic\20const&\29 6788:SkIntersections::intersect\28SkDConic\20const&\2c\20SkDQuad\20const&\29 6789:SkIntersections::insertCoincident\28double\2c\20double\2c\20SkDPoint\20const&\29 6790:SkIntersections::cubicVertical\28SkPoint\20const*\2c\20float\2c\20float\2c\20float\2c\20bool\29 6791:SkIntersections::cubicLine\28SkPoint\20const*\2c\20SkPoint\20const*\29 6792:SkIntersections::cubicHorizontal\28SkPoint\20const*\2c\20float\2c\20float\2c\20float\2c\20bool\29 6793:SkIntersections::conicVertical\28SkPoint\20const*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20bool\29 6794:SkIntersections::conicLine\28SkPoint\20const*\2c\20float\2c\20SkPoint\20const*\29 6795:SkIntersections::conicHorizontal\28SkPoint\20const*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20bool\29 6796:SkImages::RasterFromPixmap\28SkPixmap\20const&\2c\20void\20\28*\29\28void\20const*\2c\20void*\29\2c\20void*\29 6797:SkImages::RasterFromData\28SkImageInfo\20const&\2c\20sk_sp\2c\20unsigned\20long\29 6798:SkImage_Raster::~SkImage_Raster\28\29 6799:SkImage_Raster::SkImage_Raster\28SkBitmap\20const&\2c\20bool\29 6800:SkImage_Lazy::~SkImage_Lazy\28\29 6801:SkImage_GaneshBase::~SkImage_GaneshBase\28\29 6802:SkImage_GaneshBase::onMakeSubset\28GrDirectContext*\2c\20SkIRect\20const&\29\20const 6803:SkImage_GaneshBase::SkImage_GaneshBase\28sk_sp\2c\20SkImageInfo\2c\20unsigned\20int\29 6804:SkImage_Base::onAsyncRescaleAndReadPixelsYUV420\28SkYUVColorSpace\2c\20bool\2c\20sk_sp\2c\20SkIRect\2c\20SkISize\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29\20const 6805:SkImage_Base::onAsLegacyBitmap\28GrDirectContext*\2c\20SkBitmap*\29\20const 6806:SkImageShader::~SkImageShader\28\29 6807:SkImageShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const::$_3::operator\28\29\28\28anonymous\20namespace\29::MipLevelHelper\20const*\29\20const 6808:SkImageShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const::$_1::operator\28\29\28\28anonymous\20namespace\29::MipLevelHelper\20const*\29\20const 6809:SkImageInfoValidConversion\28SkImageInfo\20const&\2c\20SkImageInfo\20const&\29 6810:SkImageGenerator::SkImageGenerator\28SkImageInfo\20const&\2c\20unsigned\20int\29 6811:SkImageFilters::Crop\28SkRect\20const&\2c\20sk_sp\29 6812:SkImageFilters::Blur\28float\2c\20float\2c\20SkTileMode\2c\20sk_sp\2c\20SkImageFilters::CropRect\20const&\29 6813:SkImageFilter_Base::getInputBounds\28skif::Mapping\20const&\2c\20skif::DeviceSpace\20const&\2c\20std::__2::optional>\29\20const 6814:SkImageFilter_Base::getCTMCapability\28\29\20const 6815:SkImageFilter_Base::filterImage\28skif::Context\20const&\29\20const 6816:SkImageFilterCache::Get\28\29 6817:SkImageFilterCache::Create\28unsigned\20long\29 6818:SkImage::~SkImage\28\29 6819:SkIRect::contains\28SkRect\20const&\29\20const 6820:SkGradientShader::MakeTwoPointConical\28SkPoint\20const&\2c\20float\2c\20SkPoint\20const&\2c\20float\2c\20unsigned\20int\20const*\2c\20float\20const*\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20SkMatrix\20const*\29 6821:SkGradientShader::MakeTwoPointConical\28SkPoint\20const&\2c\20float\2c\20SkPoint\20const&\2c\20float\2c\20SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20sk_sp\2c\20float\20const*\2c\20int\2c\20SkTileMode\2c\20SkGradientShader::Interpolation\20const&\2c\20SkMatrix\20const*\29 6822:SkGradientShader::MakeSweep\28float\2c\20float\2c\20unsigned\20int\20const*\2c\20float\20const*\2c\20int\2c\20SkTileMode\2c\20float\2c\20float\2c\20unsigned\20int\2c\20SkMatrix\20const*\29 6823:SkGradientShader::MakeRadial\28SkPoint\20const&\2c\20float\2c\20unsigned\20int\20const*\2c\20float\20const*\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20SkMatrix\20const*\29 6824:SkGradientShader::MakeLinear\28SkPoint\20const*\2c\20unsigned\20int\20const*\2c\20float\20const*\2c\20int\2c\20SkTileMode\2c\20unsigned\20int\2c\20SkMatrix\20const*\29 6825:SkGradientShader::MakeLinear\28SkPoint\20const*\2c\20SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20sk_sp\2c\20float\20const*\2c\20int\2c\20SkTileMode\2c\20SkGradientShader::Interpolation\20const&\2c\20SkMatrix\20const*\29 6826:SkGradientBaseShader::~SkGradientBaseShader\28\29 6827:SkGradientBaseShader::getPos\28int\29\20const 6828:SkGradientBaseShader::AppendGradientFillStages\28SkRasterPipeline*\2c\20SkArenaAlloc*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const*\2c\20float\20const*\2c\20int\29 6829:SkGlyph::mask\28SkPoint\29\20const 6830:SkGlyph::ensureIntercepts\28float\20const*\2c\20float\2c\20float\2c\20float*\2c\20int*\2c\20SkArenaAlloc*\29::$_1::operator\28\29\28SkGlyph::Intercept\20const*\2c\20float*\2c\20int*\29\20const 6831:SkGenerateDistanceFieldFromA8Image\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\2c\20unsigned\20long\29 6832:SkGaussFilter::SkGaussFilter\28double\29 6833:SkFontStyleSet_Custom::~SkFontStyleSet_Custom\28\29 6834:SkFontStyleSet::CreateEmpty\28\29 6835:SkFontScanner_FreeType::scanInstance\28SkStreamAsset*\2c\20int\2c\20int\2c\20SkString*\2c\20SkFontStyle*\2c\20bool*\2c\20skia_private::STArray<4\2c\20SkFontScanner::AxisDefinition\2c\20true>*\29\20const 6836:SkFontScanner_FreeType::computeAxisValues\28skia_private::STArray<4\2c\20SkFontScanner::AxisDefinition\2c\20true>\2c\20SkFontArguments::VariationPosition\2c\20int*\2c\20SkString\20const&\2c\20SkFontArguments::VariationPosition::Coordinate\20const*\29 6837:SkFontScanner_FreeType::SkFontScanner_FreeType\28\29 6838:SkFontPriv::MakeTextMatrix\28float\2c\20float\2c\20float\29 6839:SkFontPriv::GetFontBounds\28SkFont\20const&\29 6840:SkFontMgr_Custom::~SkFontMgr_Custom\28\29 6841:SkFontData::~SkFontData\28\29 6842:SkFontData::SkFontData\28std::__2::unique_ptr>\2c\20int\2c\20int\2c\20int\20const*\2c\20int\2c\20SkFontArguments::Palette::Override\20const*\2c\20int\29 6843:SkFont::operator==\28SkFont\20const&\29\20const 6844:SkFont::getWidths\28unsigned\20short\20const*\2c\20int\2c\20float*\29\20const 6845:SkFont::getPaths\28unsigned\20short\20const*\2c\20int\2c\20void\20\28*\29\28SkPath\20const*\2c\20SkMatrix\20const&\2c\20void*\29\2c\20void*\29\20const 6846:SkFindCubicInflections\28SkPoint\20const*\2c\20float*\29 6847:SkFindCubicExtrema\28float\2c\20float\2c\20float\2c\20float\2c\20float*\29 6848:SkFindBisector\28SkPoint\2c\20SkPoint\29 6849:SkFibBlockSizes<4294967295u>::SkFibBlockSizes\28unsigned\20int\2c\20unsigned\20int\29::'lambda0'\28\29::operator\28\29\28\29\20const 6850:SkFibBlockSizes<4294967295u>::SkFibBlockSizes\28unsigned\20int\2c\20unsigned\20int\29::'lambda'\28\29::operator\28\29\28\29\20const 6851:SkFILEStream::~SkFILEStream\28\29 6852:SkEvalQuadTangentAt\28SkPoint\20const*\2c\20float\29 6853:SkEvalQuadAt\28SkPoint\20const*\2c\20float\2c\20SkPoint*\2c\20SkPoint*\29 6854:SkEdgeClipper::next\28SkPoint*\29 6855:SkEdgeClipper::clipQuad\28SkPoint\20const*\2c\20SkRect\20const&\29 6856:SkEdgeClipper::clipLine\28SkPoint\2c\20SkPoint\2c\20SkRect\20const&\29 6857:SkEdgeClipper::appendCubic\28SkPoint\20const*\2c\20bool\29 6858:SkEdgeClipper::ClipPath\28SkPath\20const&\2c\20SkRect\20const&\2c\20bool\2c\20void\20\28*\29\28SkEdgeClipper*\2c\20bool\2c\20void*\29\2c\20void*\29 6859:SkEdgeBuilder::build\28SkPath\20const&\2c\20SkIRect\20const*\2c\20bool\29::$_1::operator\28\29\28SkPoint\20const*\29\20const 6860:SkEdgeBuilder::buildEdges\28SkPath\20const&\2c\20SkIRect\20const*\29 6861:SkEdgeBuilder::SkEdgeBuilder\28\29 6862:SkEdge::updateLine\28int\2c\20int\2c\20int\2c\20int\29 6863:SkEdge::setLine\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20int\29 6864:SkDynamicMemoryWStream::reset\28\29 6865:SkDynamicMemoryWStream::Block::append\28void\20const*\2c\20unsigned\20long\29 6866:SkDrawableList::newDrawableSnapshot\28\29 6867:SkDrawTreatAsHairline\28SkPaint\20const&\2c\20SkMatrix\20const&\2c\20float*\29 6868:SkDrawShadowMetrics::GetSpotShadowTransform\28SkPoint3\20const&\2c\20float\2c\20SkMatrix\20const&\2c\20SkPoint3\20const&\2c\20SkRect\20const&\2c\20bool\2c\20SkMatrix*\2c\20float*\29 6869:SkDrawBase::drawRect\28SkRect\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const*\2c\20SkRect\20const*\29\20const 6870:SkDrawBase::drawPath\28SkPath\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const*\2c\20bool\2c\20bool\2c\20SkBlitter*\29\20const 6871:SkDrawBase::drawPaint\28SkPaint\20const&\29\20const 6872:SkDrawBase::SkDrawBase\28SkDrawBase\20const&\29 6873:SkDrawBase::DrawToMask\28SkPath\20const&\2c\20SkIRect\20const&\2c\20SkMaskFilter\20const*\2c\20SkMatrix\20const*\2c\20SkMaskBuilder*\2c\20SkMaskBuilder::CreateMode\2c\20SkStrokeRec::InitStyle\29 6874:SkDraw::drawSprite\28SkBitmap\20const&\2c\20int\2c\20int\2c\20SkPaint\20const&\29\20const 6875:SkDraw::drawBitmap\28SkBitmap\20const&\2c\20SkMatrix\20const&\2c\20SkRect\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\29\20const 6876:SkDraw::SkDraw\28SkDraw\20const&\29 6877:SkDevice::snapSpecial\28\29 6878:SkDevice::setDeviceCoordinateSystem\28SkM44\20const&\2c\20SkM44\20const&\2c\20SkM44\20const&\2c\20int\2c\20int\29 6879:SkDevice::drawShadow\28SkPath\20const&\2c\20SkDrawShadowRec\20const&\29 6880:SkDevice::drawDevice\28SkDevice*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\29 6881:SkDevice::drawArc\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 6882:SkDescriptor::addEntry\28unsigned\20int\2c\20unsigned\20long\2c\20void\20const*\29 6883:SkDeque::push_back\28\29 6884:SkDeque::allocateBlock\28int\29 6885:SkDeque::Iter::Iter\28SkDeque\20const&\2c\20SkDeque::Iter::IterStart\29 6886:SkDashPathEffect::Make\28float\20const*\2c\20int\2c\20float\29 6887:SkDashPath::InternalFilter\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20float\20const*\2c\20int\2c\20float\2c\20int\2c\20float\2c\20float\2c\20SkDashPath::StrokeRecApplication\29 6888:SkDashPath::CalcDashParameters\28float\2c\20float\20const*\2c\20int\2c\20float*\2c\20int*\2c\20float*\2c\20float*\29 6889:SkDashImpl::~SkDashImpl\28\29 6890:SkDRect::setBounds\28SkDQuad\20const&\2c\20SkDQuad\20const&\2c\20double\2c\20double\29 6891:SkDRect::setBounds\28SkDCubic\20const&\2c\20SkDCubic\20const&\2c\20double\2c\20double\29 6892:SkDRect::setBounds\28SkDConic\20const&\2c\20SkDConic\20const&\2c\20double\2c\20double\29 6893:SkDQuad::subDivide\28double\2c\20double\29\20const 6894:SkDQuad::otherPts\28int\2c\20SkDPoint\20const**\29\20const 6895:SkDQuad::isLinear\28int\2c\20int\29\20const 6896:SkDQuad::hullIntersects\28SkDQuad\20const&\2c\20bool*\29\20const 6897:SkDQuad::AddValidTs\28double*\2c\20int\2c\20double*\29 6898:SkDPoint::roughlyEqual\28SkDPoint\20const&\29\20const 6899:SkDPoint::approximatelyDEqual\28SkDPoint\20const&\29\20const 6900:SkDCurveSweep::setCurveHullSweep\28SkPath::Verb\29 6901:SkDCubic::monotonicInY\28\29\20const 6902:SkDCubic::hullIntersects\28SkDQuad\20const&\2c\20bool*\29\20const 6903:SkDCubic::hullIntersects\28SkDPoint\20const*\2c\20int\2c\20bool*\29\20const 6904:SkDCubic::Coefficients\28double\20const*\2c\20double*\2c\20double*\2c\20double*\2c\20double*\29 6905:SkDConic::subDivide\28double\2c\20double\29\20const 6906:SkCubics::RootsReal\28double\2c\20double\2c\20double\2c\20double\2c\20double*\29 6907:SkCubicEdge::setCubicWithoutUpdate\28SkPoint\20const*\2c\20int\2c\20bool\29 6908:SkCubicClipper::ChopMonoAtY\28SkPoint\20const*\2c\20float\2c\20float*\29 6909:SkCreateRasterPipelineBlitter\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkRasterPipeline\20const&\2c\20bool\2c\20SkArenaAlloc*\2c\20sk_sp\29 6910:SkCreateRasterPipelineBlitter\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkMatrix\20const&\2c\20SkArenaAlloc*\2c\20sk_sp\2c\20SkSurfaceProps\20const&\29 6911:SkContourMeasure_segTo\28SkPoint\20const*\2c\20unsigned\20int\2c\20float\2c\20float\2c\20SkPath*\29 6912:SkContourMeasureIter::SkContourMeasureIter\28SkPath\20const&\2c\20bool\2c\20float\29 6913:SkContourMeasureIter::Impl::compute_line_seg\28SkPoint\2c\20SkPoint\2c\20float\2c\20unsigned\20int\29 6914:SkContourMeasure::~SkContourMeasure\28\29 6915:SkContourMeasure::getSegment\28float\2c\20float\2c\20SkPath*\2c\20bool\29\20const 6916:SkConicalGradient::getCenterX1\28\29\20const 6917:SkConic::evalTangentAt\28float\29\20const 6918:SkConic::chop\28SkConic*\29\20const 6919:SkConic::chopIntoQuadsPOW2\28SkPoint*\2c\20int\29\20const 6920:SkConic::BuildUnitArc\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkRotationDirection\2c\20SkMatrix\20const*\2c\20SkConic*\29 6921:SkColorSpaceXformColorFilter::~SkColorSpaceXformColorFilter\28\29 6922:SkColorSpaceSingletonFactory::Make\28skcms_TransferFunction\20const&\2c\20skcms_Matrix3x3\20const&\29 6923:SkColorSpace::makeLinearGamma\28\29\20const 6924:SkColorSpace::computeLazyDstFields\28\29\20const 6925:SkColorSpace::SkColorSpace\28skcms_TransferFunction\20const&\2c\20skcms_Matrix3x3\20const&\29 6926:SkColorInfo::operator=\28SkColorInfo&&\29 6927:SkColorFilters::Blend\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20sk_sp\2c\20SkBlendMode\29 6928:SkColorFilterShader::~SkColorFilterShader\28\29 6929:SkColorFilterShader::flatten\28SkWriteBuffer&\29\20const 6930:SkColor4fXformer::~SkColor4fXformer\28\29 6931:SkColor4fXformer::SkColor4fXformer\28SkGradientBaseShader\20const*\2c\20SkColorSpace*\2c\20bool\29 6932:SkColor4Shader::~SkColor4Shader\28\29 6933:SkCoincidentSpans::contains\28SkOpPtT\20const*\2c\20SkOpPtT\20const*\29\20const 6934:SkChopQuadAtMaxCurvature\28SkPoint\20const*\2c\20SkPoint*\29 6935:SkChopQuadAtHalf\28SkPoint\20const*\2c\20SkPoint*\29 6936:SkChopCubicAt\28SkPoint\20const*\2c\20SkPoint*\2c\20float\2c\20float\29 6937:SkChopCubicAtInflections\28SkPoint\20const*\2c\20SkPoint*\29 6938:SkCharToGlyphCache::reset\28\29 6939:SkCharToGlyphCache::findGlyphIndex\28int\29\20const 6940:SkCanvasVirtualEnforcer::SkCanvasVirtualEnforcer\28SkIRect\20const&\29 6941:SkCanvasPriv::WriteLattice\28void*\2c\20SkCanvas::Lattice\20const&\29 6942:SkCanvasPriv::ImageToColorFilter\28SkPaint*\29 6943:SkCanvasPriv::GetDstClipAndMatrixCounts\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20int*\2c\20int*\29 6944:SkCanvas::setMatrix\28SkM44\20const&\29 6945:SkCanvas::scale\28float\2c\20float\29 6946:SkCanvas::internalSaveLayer\28SkCanvas::SaveLayerRec\20const&\2c\20SkCanvas::SaveLayerStrategy\2c\20bool\29 6947:SkCanvas::internalDrawPaint\28SkPaint\20const&\29 6948:SkCanvas::internalDrawDeviceWithFilter\28SkDevice*\2c\20SkDevice*\2c\20SkSpan>\2c\20SkPaint\20const&\2c\20SkCanvas::DeviceCompatibleWithFilter\2c\20float\2c\20bool\29 6949:SkCanvas::getDeviceClipBounds\28\29\20const 6950:SkCanvas::drawTextBlob\28sk_sp\20const&\2c\20float\2c\20float\2c\20SkPaint\20const&\29 6951:SkCanvas::drawTextBlob\28SkTextBlob\20const*\2c\20float\2c\20float\2c\20SkPaint\20const&\29 6952:SkCanvas::drawPicture\28sk_sp\20const&\2c\20SkMatrix\20const*\2c\20SkPaint\20const*\29 6953:SkCanvas::drawPicture\28SkPicture\20const*\29 6954:SkCanvas::drawLine\28float\2c\20float\2c\20float\2c\20float\2c\20SkPaint\20const&\29 6955:SkCanvas::drawImageLattice\28SkImage\20const*\2c\20SkCanvas::Lattice\20const&\2c\20SkRect\20const&\2c\20SkFilterMode\2c\20SkPaint\20const*\29 6956:SkCanvas::drawDRRect\28SkRRect\20const&\2c\20SkRRect\20const&\2c\20SkPaint\20const&\29 6957:SkCanvas::drawColor\28unsigned\20int\2c\20SkBlendMode\29 6958:SkCanvas::drawColor\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkBlendMode\29 6959:SkCanvas::drawAtlas\28SkImage\20const*\2c\20SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20SkBlendMode\2c\20SkSamplingOptions\20const&\2c\20SkRect\20const*\2c\20SkPaint\20const*\29 6960:SkCanvas::drawArc\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 6961:SkCanvas::didTranslate\28float\2c\20float\29 6962:SkCanvas::clipRRect\28SkRRect\20const&\2c\20SkClipOp\2c\20bool\29 6963:SkCanvas::clipPath\28SkPath\20const&\2c\20SkClipOp\2c\20bool\29 6964:SkCanvas::clipIRect\28SkIRect\20const&\2c\20SkClipOp\29 6965:SkCanvas::SkCanvas\28sk_sp\29 6966:SkCanvas::SkCanvas\28SkBitmap\20const&\2c\20SkSurfaceProps\20const&\29 6967:SkCanvas::SkCanvas\28SkBitmap\20const&\29 6968:SkCachedData::setData\28void*\29 6969:SkCachedData::internalUnref\28bool\29\20const 6970:SkCachedData::internalRef\28bool\29\20const 6971:SkCachedData::SkCachedData\28void*\2c\20unsigned\20long\29 6972:SkCachedData::SkCachedData\28unsigned\20long\2c\20SkDiscardableMemory*\29 6973:SkCTMShader::isOpaque\28\29\20const 6974:SkBulkGlyphMetricsAndPaths::glyphs\28SkSpan\29 6975:SkBreakIterator_client::~SkBreakIterator_client\28\29 6976:SkBlurMaskFilterImpl::filterRectMask\28SkMaskBuilder*\2c\20SkRect\20const&\2c\20SkMatrix\20const&\2c\20SkIPoint*\2c\20SkMaskBuilder::CreateMode\29\20const 6977:SkBlurMask::ComputeBlurredScanline\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20unsigned\20int\2c\20float\29 6978:SkBlockAllocator::addBlock\28int\2c\20int\29 6979:SkBlockAllocator::BlockIter::Item::advance\28SkBlockAllocator::Block*\29 6980:SkBlitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 6981:SkBlitter::blitRectRegion\28SkIRect\20const&\2c\20SkRegion\20const&\29 6982:SkBlitter::Choose\28SkPixmap\20const&\2c\20SkMatrix\20const&\2c\20SkPaint\20const&\2c\20SkArenaAlloc*\2c\20bool\2c\20sk_sp\2c\20SkSurfaceProps\20const&\29 6983:SkBlitter::ChooseSprite\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkPixmap\20const&\2c\20int\2c\20int\2c\20SkArenaAlloc*\2c\20sk_sp\29 6984:SkBlendShader::~SkBlendShader\28\29.1 6985:SkBitmapDevice::~SkBitmapDevice\28\29 6986:SkBitmapDevice::Create\28SkImageInfo\20const&\2c\20SkSurfaceProps\20const&\2c\20SkRasterHandleAllocator*\29 6987:SkBitmapCache::Rec::~Rec\28\29 6988:SkBitmapCache::Rec::install\28SkBitmap*\29 6989:SkBitmapCache::Rec::diagnostic_only_getDiscardable\28\29\20const 6990:SkBitmapCache::Find\28SkBitmapCacheDesc\20const&\2c\20SkBitmap*\29 6991:SkBitmapCache::Alloc\28SkBitmapCacheDesc\20const&\2c\20SkImageInfo\20const&\2c\20SkPixmap*\29 6992:SkBitmap::tryAllocPixels\28SkImageInfo\20const&\2c\20unsigned\20long\29 6993:SkBitmap::readPixels\28SkPixmap\20const&\29\20const 6994:SkBitmap::operator=\28SkBitmap&&\29 6995:SkBitmap::makeShader\28SkTileMode\2c\20SkTileMode\2c\20SkSamplingOptions\20const&\2c\20SkMatrix\20const&\29\20const 6996:SkBitmap::getAddr\28int\2c\20int\29\20const 6997:SkBitmap::allocPixels\28SkImageInfo\20const&\2c\20unsigned\20long\29 6998:SkBitmap::allocPixels\28SkImageInfo\20const&\29 6999:SkBitmap::SkBitmap\28SkBitmap&&\29 7000:SkBinaryWriteBuffer::writeFlattenable\28SkFlattenable\20const*\29 7001:SkBinaryWriteBuffer::writeColor4f\28SkRGBA4f<\28SkAlphaType\293>\20const&\29 7002:SkBigPicture::~SkBigPicture\28\29 7003:SkBigPicture::SnapshotArray::~SnapshotArray\28\29 7004:SkBigPicture::SkBigPicture\28SkRect\20const&\2c\20sk_sp\2c\20std::__2::unique_ptr>\2c\20sk_sp\2c\20unsigned\20long\29 7005:SkBidiFactory::MakeIterator\28unsigned\20short\20const*\2c\20int\2c\20SkBidiIterator::Direction\29\20const 7006:SkBezierCubic::Subdivide\28double\20const*\2c\20double\2c\20double*\29 7007:SkBasicEdgeBuilder::~SkBasicEdgeBuilder\28\29 7008:SkBasicEdgeBuilder::combineVertical\28SkEdge\20const*\2c\20SkEdge*\29 7009:SkBaseShadowTessellator::releaseVertices\28\29 7010:SkBaseShadowTessellator::handleQuad\28SkPoint\20const*\29 7011:SkBaseShadowTessellator::handleQuad\28SkMatrix\20const&\2c\20SkPoint*\29 7012:SkBaseShadowTessellator::handleLine\28SkMatrix\20const&\2c\20SkPoint*\29 7013:SkBaseShadowTessellator::handleCubic\28SkMatrix\20const&\2c\20SkPoint*\29 7014:SkBaseShadowTessellator::handleConic\28SkMatrix\20const&\2c\20SkPoint*\2c\20float\29 7015:SkBaseShadowTessellator::finishPathPolygon\28\29 7016:SkBaseShadowTessellator::computeConvexShadow\28float\2c\20float\2c\20bool\29 7017:SkBaseShadowTessellator::computeConcaveShadow\28float\2c\20float\29 7018:SkBaseShadowTessellator::clipUmbraPoint\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint*\29 7019:SkBaseShadowTessellator::checkConvexity\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\29 7020:SkBaseShadowTessellator::appendQuad\28unsigned\20short\2c\20unsigned\20short\2c\20unsigned\20short\2c\20unsigned\20short\29 7021:SkBaseShadowTessellator::addInnerPoint\28SkPoint\20const&\2c\20unsigned\20int\2c\20SkTDArray\20const&\2c\20int*\29 7022:SkBaseShadowTessellator::addEdge\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20unsigned\20int\2c\20SkTDArray\20const&\2c\20bool\2c\20bool\29 7023:SkBaseShadowTessellator::addArc\28SkPoint\20const&\2c\20float\2c\20bool\29 7024:SkBaseShadowTessellator::accumulateCentroid\28SkPoint\20const&\2c\20SkPoint\20const&\29 7025:SkAutoSMalloc<1024ul>::reset\28unsigned\20long\2c\20SkAutoMalloc::OnShrink\2c\20bool*\29 7026:SkAutoPixmapStorage::reset\28SkImageInfo\20const&\2c\20void\20const*\2c\20unsigned\20long\29 7027:SkAutoMalloc::SkAutoMalloc\28unsigned\20long\29 7028:SkAutoDescriptor::reset\28unsigned\20long\29 7029:SkAutoDescriptor::reset\28SkDescriptor\20const&\29 7030:SkAutoCanvasMatrixPaint::~SkAutoCanvasMatrixPaint\28\29 7031:SkAutoCanvasMatrixPaint::SkAutoCanvasMatrixPaint\28SkCanvas*\2c\20SkMatrix\20const*\2c\20SkPaint\20const*\2c\20SkRect\20const&\29 7032:SkAutoBlitterChoose::choose\28SkDrawBase\20const&\2c\20SkMatrix\20const*\2c\20SkPaint\20const&\2c\20bool\29 7033:SkArenaAlloc::ensureSpace\28unsigned\20int\2c\20unsigned\20int\29 7034:SkAnySubclass::reset\28\29 7035:SkAnalyticEdgeBuilder::combineVertical\28SkAnalyticEdge\20const*\2c\20SkAnalyticEdge*\29 7036:SkAnalyticEdge::update\28int\2c\20bool\29 7037:SkAnalyticEdge::updateLine\28int\2c\20int\2c\20int\2c\20int\2c\20int\29 7038:SkAnalyticEdge::setLine\28SkPoint\20const&\2c\20SkPoint\20const&\29 7039:SkAlphaRuns::BreakAt\28short*\2c\20unsigned\20char*\2c\20int\29 7040:SkAAClip::operator=\28SkAAClip\20const&\29 7041:SkAAClip::op\28SkIRect\20const&\2c\20SkClipOp\29 7042:SkAAClip::isRect\28\29\20const 7043:SkAAClip::RunHead::Iterate\28SkAAClip\20const&\29 7044:SkAAClip::Builder::~Builder\28\29 7045:SkAAClip::Builder::flushRow\28bool\29 7046:SkAAClip::Builder::finish\28SkAAClip*\29 7047:SkAAClip::Builder::Blitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 7048:SkA8_Coverage_Blitter::~SkA8_Coverage_Blitter\28\29 7049:SkA8_Coverage_Blitter*\20SkArenaAlloc::make\28SkPixmap\20const&\2c\20SkPaint\20const&\29 7050:SkA8_Blitter::~SkA8_Blitter\28\29 7051:Simplify\28SkPath\20const&\2c\20SkPath*\29 7052:SharedGenerator::Make\28std::__2::unique_ptr>\29 7053:SetSuperRound 7054:RuntimeEffectRPCallbacks::applyColorSpaceXform\28SkColorSpaceXformSteps\20const&\2c\20void\20const*\29 7055:RunBasedAdditiveBlitter::~RunBasedAdditiveBlitter\28\29.1 7056:RunBasedAdditiveBlitter::advanceRuns\28\29 7057:RunBasedAdditiveBlitter::RunBasedAdditiveBlitter\28SkBlitter*\2c\20SkIRect\20const&\2c\20SkIRect\20const&\2c\20bool\29 7058:RgnOper::addSpan\28int\2c\20int\20const*\2c\20int\20const*\29 7059:ReflexHash::hash\28TriangulationVertex*\29\20const 7060:PorterDuffXferProcessor::onIsEqual\28GrXferProcessor\20const&\29\20const 7061:PathSegment::init\28\29 7062:PS_Conv_Strtol 7063:PS_Conv_ASCIIHexDecode 7064:PDLCDXferProcessor::Make\28SkBlendMode\2c\20GrProcessorAnalysisColor\20const&\29 7065:OpAsWinding::markReverse\28Contour*\2c\20Contour*\29 7066:OpAsWinding::getDirection\28Contour&\29 7067:OpAsWinding::checkContainerChildren\28Contour*\2c\20Contour*\29 7068:OffsetEdge::computeCrossingDistance\28OffsetEdge\20const*\29 7069:OT::sbix::sanitize\28hb_sanitize_context_t*\29\20const 7070:OT::sbix::accelerator_t::reference_png\28hb_font_t*\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20unsigned\20int*\29\20const 7071:OT::sbix::accelerator_t::has_data\28\29\20const 7072:OT::sbix::accelerator_t::get_png_extents\28hb_font_t*\2c\20unsigned\20int\2c\20hb_glyph_extents_t*\2c\20bool\29\20const 7073:OT::post::sanitize\28hb_sanitize_context_t*\29\20const 7074:OT::maxp::sanitize\28hb_sanitize_context_t*\29\20const 7075:OT::kern::sanitize\28hb_sanitize_context_t*\29\20const 7076:OT::hmtxvmtx::accelerator_t::get_advance_with_var_unscaled\28unsigned\20int\2c\20hb_font_t*\2c\20float*\29\20const 7077:OT::head::sanitize\28hb_sanitize_context_t*\29\20const 7078:OT::hb_ot_layout_lookup_accelerator_t*\20OT::hb_ot_layout_lookup_accelerator_t::create\28OT::Layout::GSUB_impl::SubstLookup\20const&\29 7079:OT::hb_ot_apply_context_t::skipping_iterator_t::may_skip\28hb_glyph_info_t\20const&\29\20const 7080:OT::hb_ot_apply_context_t::skipping_iterator_t::init\28OT::hb_ot_apply_context_t*\2c\20bool\29 7081:OT::hb_ot_apply_context_t::matcher_t::may_skip\28OT::hb_ot_apply_context_t\20const*\2c\20hb_glyph_info_t\20const&\29\20const 7082:OT::hb_kern_machine_t::kern\28hb_font_t*\2c\20hb_buffer_t*\2c\20unsigned\20int\2c\20bool\29\20const 7083:OT::hb_accelerate_subtables_context_t::return_t\20OT::Context::dispatch\28OT::hb_accelerate_subtables_context_t*\29\20const 7084:OT::hb_accelerate_subtables_context_t::return_t\20OT::ChainContext::dispatch\28OT::hb_accelerate_subtables_context_t*\29\20const 7085:OT::gvar::sanitize_shallow\28hb_sanitize_context_t*\29\20const 7086:OT::gvar::get_offset\28unsigned\20int\2c\20unsigned\20int\29\20const 7087:OT::gvar::accelerator_t::infer_delta\28hb_array_t\2c\20hb_array_t\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20float\20contour_point_t::*\29 7088:OT::glyf_impl::composite_iter_tmpl::set_current\28OT::glyf_impl::CompositeGlyphRecord\20const*\29 7089:OT::glyf_impl::composite_iter_tmpl::__next__\28\29 7090:OT::glyf_impl::SimpleGlyph::read_points\28OT::IntType\20const*&\2c\20hb_array_t\2c\20OT::IntType\20const*\2c\20float\20contour_point_t::*\2c\20OT::glyf_impl::SimpleGlyph::simple_glyph_flag_t\2c\20OT::glyf_impl::SimpleGlyph::simple_glyph_flag_t\29 7091:OT::glyf_impl::Glyph::get_composite_iterator\28\29\20const 7092:OT::glyf_impl::CompositeGlyphRecord::transform\28float\20const\20\28&\29\20\5b4\5d\2c\20hb_array_t\29 7093:OT::glyf_impl::CompositeGlyphRecord::get_transformation\28float\20\28&\29\20\5b4\5d\2c\20contour_point_t&\29\20const 7094:OT::glyf_accelerator_t::get_extents\28hb_font_t*\2c\20unsigned\20int\2c\20hb_glyph_extents_t*\29\20const 7095:OT::fvar::sanitize\28hb_sanitize_context_t*\29\20const 7096:OT::cmap::sanitize\28hb_sanitize_context_t*\29\20const 7097:OT::cmap::accelerator_t::get_nominal_glyph\28unsigned\20int\2c\20unsigned\20int*\2c\20hb_cache_t<21u\2c\2016u\2c\208u\2c\20true>*\29\20const 7098:OT::cmap::accelerator_t::_cached_get\28unsigned\20int\2c\20unsigned\20int*\2c\20hb_cache_t<21u\2c\2016u\2c\208u\2c\20true>*\29\20const 7099:OT::cff2::sanitize\28hb_sanitize_context_t*\29\20const 7100:OT::cff2::accelerator_templ_t>::_fini\28\29 7101:OT::cff1::sanitize\28hb_sanitize_context_t*\29\20const 7102:OT::cff1::accelerator_templ_t>::glyph_to_sid\28unsigned\20int\2c\20CFF::code_pair_t*\29\20const 7103:OT::cff1::accelerator_templ_t>::_fini\28\29 7104:OT::cff1::accelerator_t::gname_t::cmp\28void\20const*\2c\20void\20const*\29 7105:OT::avar::sanitize\28hb_sanitize_context_t*\29\20const 7106:OT::VariationDevice::get_delta\28hb_font_t*\2c\20OT::VariationStore\20const&\2c\20float*\29\20const 7107:OT::VarData::get_row_size\28\29\20const 7108:OT::VVAR::sanitize\28hb_sanitize_context_t*\29\20const 7109:OT::VORG::sanitize\28hb_sanitize_context_t*\29\20const 7110:OT::UnsizedArrayOf\2c\2014u>>\20const&\20OT::operator+\2c\20\28void*\290>\28hb_blob_ptr_t\20const&\2c\20OT::OffsetTo\2c\2014u>>\2c\20OT::IntType\2c\20false>\20const&\29 7111:OT::TupleVariationHeader::get_size\28unsigned\20int\29\20const 7112:OT::TupleVariationData::unpack_points\28OT::IntType\20const*&\2c\20hb_vector_t&\2c\20OT::IntType\20const*\29 7113:OT::TupleVariationData::unpack_deltas\28OT::IntType\20const*&\2c\20hb_vector_t&\2c\20OT::IntType\20const*\29 7114:OT::TupleVariationData::tuple_iterator_t::is_valid\28\29\20const 7115:OT::SortedArrayOf\2c\20OT::IntType>::serialize\28hb_serialize_context_t*\2c\20unsigned\20int\29 7116:OT::SVG::sanitize\28hb_sanitize_context_t*\29\20const 7117:OT::RuleSet::would_apply\28OT::hb_would_apply_context_t*\2c\20OT::ContextApplyLookupContext\20const&\29\20const 7118:OT::RuleSet::apply\28OT::hb_ot_apply_context_t*\2c\20OT::ContextApplyLookupContext\20const&\29\20const 7119:OT::ResourceMap::get_type_record\28unsigned\20int\29\20const 7120:OT::ResourceMap::get_type_count\28\29\20const 7121:OT::RecordArrayOf::find_index\28unsigned\20int\2c\20unsigned\20int*\29\20const 7122:OT::PaintTranslate::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 7123:OT::PaintSolid::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 7124:OT::PaintSkewAroundCenter::sanitize\28hb_sanitize_context_t*\29\20const 7125:OT::PaintSkewAroundCenter::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 7126:OT::PaintSkew::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 7127:OT::PaintScaleUniformAroundCenter::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 7128:OT::PaintScaleUniform::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 7129:OT::PaintScaleAroundCenter::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 7130:OT::PaintScale::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 7131:OT::PaintRotateAroundCenter::sanitize\28hb_sanitize_context_t*\29\20const 7132:OT::PaintRotateAroundCenter::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 7133:OT::PaintRotate::sanitize\28hb_sanitize_context_t*\29\20const 7134:OT::PaintRotate::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 7135:OT::OpenTypeFontFile::sanitize\28hb_sanitize_context_t*\29\20const 7136:OT::OffsetTo\2c\20true>::neuter\28hb_sanitize_context_t*\29\20const 7137:OT::OS2::sanitize\28hb_sanitize_context_t*\29\20const 7138:OT::MVAR::sanitize\28hb_sanitize_context_t*\29\20const 7139:OT::Lookup::serialize\28hb_serialize_context_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 7140:OT::Lookup*\20hb_serialize_context_t::extend_size\28OT::Lookup*\2c\20unsigned\20long\2c\20bool\29 7141:OT::Layout::propagate_attachment_offsets\28hb_glyph_position_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20hb_direction_t\2c\20unsigned\20int\29 7142:OT::Layout::GPOS_impl::reverse_cursive_minor_offset\28hb_glyph_position_t*\2c\20unsigned\20int\2c\20hb_direction_t\2c\20unsigned\20int\29 7143:OT::Layout::GPOS_impl::ValueFormat::sanitize_value_devices\28hb_sanitize_context_t*\2c\20void\20const*\2c\20OT::IntType\20const*\29\20const 7144:OT::Layout::Common::RangeRecord\20const&\20OT::SortedArrayOf\2c\20OT::IntType>::bsearch\28unsigned\20int\20const&\2c\20OT::Layout::Common::RangeRecord\20const&\29\20const 7145:OT::Layout::Common::CoverageFormat2_4*\20hb_serialize_context_t::extend_min>\28OT::Layout::Common::CoverageFormat2_4*\29 7146:OT::Layout::Common::Coverage::sanitize\28hb_sanitize_context_t*\29\20const 7147:OT::Layout::Common::Coverage::get_population\28\29\20const 7148:OT::LangSys::sanitize\28hb_sanitize_context_t*\2c\20OT::Record_sanitize_closure_t\20const*\29\20const 7149:OT::IndexSubtableRecord::get_image_data\28unsigned\20int\2c\20void\20const*\2c\20unsigned\20int*\2c\20unsigned\20int*\2c\20unsigned\20int*\29\20const 7150:OT::IndexArray::get_indexes\28unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int*\29\20const 7151:OT::HintingDevice::get_delta\28unsigned\20int\2c\20int\29\20const 7152:OT::HVARVVAR::get_advance_delta_unscaled\28unsigned\20int\2c\20int\20const*\2c\20unsigned\20int\2c\20float*\29\20const 7153:OT::GSUBGPOS::get_script_list\28\29\20const 7154:OT::GSUBGPOS::get_feature_variations\28\29\20const 7155:OT::GSUBGPOS::accelerator_t::get_accel\28unsigned\20int\29\20const 7156:OT::GDEF::sanitize\28hb_sanitize_context_t*\29\20const 7157:OT::GDEF::get_mark_glyph_sets\28\29\20const 7158:OT::GDEF::accelerator_t::get_glyph_props\28unsigned\20int\29\20const 7159:OT::Feature::sanitize\28hb_sanitize_context_t*\2c\20OT::Record_sanitize_closure_t\20const*\29\20const 7160:OT::ContextFormat2_5::_apply\28OT::hb_ot_apply_context_t*\2c\20bool\29\20const 7161:OT::ColorStop::get_color_stop\28OT::hb_paint_context_t*\2c\20hb_color_stop_t*\2c\20unsigned\20int\2c\20OT::VarStoreInstancer\20const&\29\20const 7162:OT::ColorLine::static_get_extend\28hb_color_line_t*\2c\20void*\2c\20void*\29 7163:OT::CmapSubtableLongSegmented::get_glyph\28unsigned\20int\2c\20unsigned\20int*\29\20const 7164:OT::CmapSubtableLongGroup\20const&\20OT::SortedArrayOf>::bsearch\28unsigned\20int\20const&\2c\20OT::CmapSubtableLongGroup\20const&\29\20const 7165:OT::CmapSubtableFormat4::accelerator_t::init\28OT::CmapSubtableFormat4\20const*\29 7166:OT::CmapSubtableFormat4::accelerator_t::get_glyph\28unsigned\20int\2c\20unsigned\20int*\29\20const 7167:OT::ClipBoxFormat1::get_clip_box\28OT::ClipBoxData&\2c\20OT::VarStoreInstancer\20const&\29\20const 7168:OT::ClassDef::cost\28\29\20const 7169:OT::ChainRuleSet::would_apply\28OT::hb_would_apply_context_t*\2c\20OT::ChainContextApplyLookupContext\20const&\29\20const 7170:OT::ChainRuleSet::apply\28OT::hb_ot_apply_context_t*\2c\20OT::ChainContextApplyLookupContext\20const&\29\20const 7171:OT::ChainContextFormat2_5::_apply\28OT::hb_ot_apply_context_t*\2c\20bool\29\20const 7172:OT::CPAL::sanitize\28hb_sanitize_context_t*\29\20const 7173:OT::COLR::sanitize\28hb_sanitize_context_t*\29\20const 7174:OT::COLR::get_base_glyph_paint\28unsigned\20int\29\20const 7175:OT::CBLC::sanitize\28hb_sanitize_context_t*\29\20const 7176:OT::CBLC::choose_strike\28hb_font_t*\29\20const 7177:OT::CBDT::sanitize\28hb_sanitize_context_t*\29\20const 7178:OT::CBDT::accelerator_t::get_extents\28hb_font_t*\2c\20unsigned\20int\2c\20hb_glyph_extents_t*\2c\20bool\29\20const 7179:OT::BitmapSizeTable::find_table\28unsigned\20int\2c\20void\20const*\2c\20void\20const**\29\20const 7180:OT::ArrayOf>::sanitize_shallow\28hb_sanitize_context_t*\29\20const 7181:OT::ArrayOf\2c\20OT::IntType>::sanitize_shallow\28hb_sanitize_context_t*\29\20const 7182:OT::ArrayOf>::sanitize_shallow\28hb_sanitize_context_t*\29\20const 7183:OT::ArrayOf>>::sanitize_shallow\28hb_sanitize_context_t*\29\20const 7184:OT::Affine2x3::paint_glyph\28OT::hb_paint_context_t*\2c\20unsigned\20int\29\20const 7185:MaskValue*\20SkTLazy::init\28MaskValue\20const&\29 7186:MakeRasterCopyPriv\28SkPixmap\20const&\2c\20unsigned\20int\29 7187:Load_SBit_Png 7188:LineQuadraticIntersections::verticalIntersect\28double\2c\20double*\29 7189:LineQuadraticIntersections::intersectRay\28double*\29 7190:LineQuadraticIntersections::horizontalIntersect\28double\2c\20double*\29 7191:LineCubicIntersections::intersectRay\28double*\29 7192:LineCubicIntersections::VerticalIntersect\28SkDCubic\20const&\2c\20double\2c\20double*\29 7193:LineCubicIntersections::HorizontalIntersect\28SkDCubic\20const&\2c\20double\2c\20double*\29 7194:LineConicIntersections::verticalIntersect\28double\2c\20double*\29 7195:LineConicIntersections::intersectRay\28double*\29 7196:LineConicIntersections::horizontalIntersect\28double\2c\20double*\29 7197:Ins_UNKNOWN 7198:Ins_SxVTL 7199:HandleCoincidence\28SkOpContourHead*\2c\20SkOpCoincidence*\29 7200:GrWritePixelsTask::~GrWritePixelsTask\28\29 7201:GrWindowRectsState::operator=\28GrWindowRectsState\20const&\29 7202:GrWindowRectsState::operator==\28GrWindowRectsState\20const&\29\20const 7203:GrWindowRectangles::GrWindowRectangles\28GrWindowRectangles\20const&\29 7204:GrWaitRenderTask::~GrWaitRenderTask\28\29 7205:GrVertexBufferAllocPool::makeSpace\28unsigned\20long\2c\20int\2c\20sk_sp*\2c\20int*\29 7206:GrVertexBufferAllocPool::makeSpaceAtLeast\28unsigned\20long\2c\20int\2c\20int\2c\20sk_sp*\2c\20int*\2c\20int*\29 7207:GrTriangulator::polysToTriangles\28GrTriangulator::Poly*\2c\20SkPathFillType\2c\20skgpu::VertexWriter\29\20const 7208:GrTriangulator::polysToTriangles\28GrTriangulator::Poly*\2c\20GrEagerVertexAllocator*\29\20const 7209:GrTriangulator::mergeEdgesBelow\28GrTriangulator::Edge*\2c\20GrTriangulator::Edge*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Comparator\20const&\29\20const 7210:GrTriangulator::mergeEdgesAbove\28GrTriangulator::Edge*\2c\20GrTriangulator::Edge*\2c\20GrTriangulator::EdgeList*\2c\20GrTriangulator::Vertex**\2c\20GrTriangulator::Comparator\20const&\29\20const 7211:GrTriangulator::makeSortedVertex\28SkPoint\20const&\2c\20unsigned\20char\2c\20GrTriangulator::VertexList*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::Comparator\20const&\29\20const 7212:GrTriangulator::makeEdge\28GrTriangulator::Vertex*\2c\20GrTriangulator::Vertex*\2c\20GrTriangulator::EdgeType\2c\20GrTriangulator::Comparator\20const&\29 7213:GrTriangulator::computeBisector\28GrTriangulator::Edge*\2c\20GrTriangulator::Edge*\2c\20GrTriangulator::Vertex*\29\20const 7214:GrTriangulator::appendQuadraticToContour\28SkPoint\20const*\2c\20float\2c\20GrTriangulator::VertexList*\29\20const 7215:GrTriangulator::allocateMonotonePoly\28GrTriangulator::Edge*\2c\20GrTriangulator::Side\2c\20int\29 7216:GrTriangulator::Edge::recompute\28\29 7217:GrTriangulator::Edge::intersect\28GrTriangulator::Edge\20const&\2c\20SkPoint*\2c\20unsigned\20char*\29\20const 7218:GrTriangulator::CountPoints\28GrTriangulator::Poly*\2c\20SkPathFillType\29 7219:GrTriangulator::BreadcrumbTriangleList::concat\28GrTriangulator::BreadcrumbTriangleList&&\29 7220:GrTransferFromRenderTask::~GrTransferFromRenderTask\28\29 7221:GrThreadSafeCache::makeNewEntryMRU\28GrThreadSafeCache::Entry*\29 7222:GrThreadSafeCache::makeExistingEntryMRU\28GrThreadSafeCache::Entry*\29 7223:GrThreadSafeCache::findVertsWithData\28skgpu::UniqueKey\20const&\29 7224:GrThreadSafeCache::addVertsWithData\28skgpu::UniqueKey\20const&\2c\20sk_sp\2c\20bool\20\28*\29\28SkData*\2c\20SkData*\29\29 7225:GrThreadSafeCache::Trampoline::~Trampoline\28\29 7226:GrThreadSafeCache::Entry::set\28skgpu::UniqueKey\20const&\2c\20sk_sp\29 7227:GrThreadSafeCache::Entry::makeEmpty\28\29 7228:GrThreadSafeCache::CreateLazyView\28GrDirectContext*\2c\20GrColorType\2c\20SkISize\2c\20GrSurfaceOrigin\2c\20SkBackingFit\29 7229:GrTextureResolveRenderTask::~GrTextureResolveRenderTask\28\29 7230:GrTextureRenderTargetProxy::initSurfaceFlags\28GrCaps\20const&\29 7231:GrTextureRenderTargetProxy::GrTextureRenderTargetProxy\28sk_sp\2c\20GrSurfaceProxy::UseAllocator\2c\20GrDDLProvider\29 7232:GrTextureRenderTargetProxy::GrTextureRenderTargetProxy\28GrCaps\20const&\2c\20std::__2::function&&\2c\20GrBackendFormat\20const&\2c\20SkISize\2c\20int\2c\20skgpu::Mipmapped\2c\20GrMipmapStatus\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20GrInternalSurfaceFlags\2c\20GrSurfaceProxy::UseAllocator\2c\20GrDDLProvider\2c\20std::__2::basic_string_view>\29 7233:GrTextureProxy::~GrTextureProxy\28\29.2 7234:GrTextureProxy::~GrTextureProxy\28\29.1 7235:GrTextureProxy::setUniqueKey\28GrProxyProvider*\2c\20skgpu::UniqueKey\20const&\29 7236:GrTextureProxy::onUninstantiatedGpuMemorySize\28\29\20const 7237:GrTextureProxy::instantiate\28GrResourceProvider*\29 7238:GrTextureProxy::createSurface\28GrResourceProvider*\29\20const 7239:GrTextureProxy::callbackDesc\28\29\20const 7240:GrTextureProxy::ProxiesAreCompatibleAsDynamicState\28GrSurfaceProxy\20const*\2c\20GrSurfaceProxy\20const*\29 7241:GrTextureProxy::GrTextureProxy\28sk_sp\2c\20GrSurfaceProxy::UseAllocator\2c\20GrDDLProvider\29 7242:GrTextureEffect::~GrTextureEffect\28\29 7243:GrTextureEffect::Sampling::Sampling\28GrSurfaceProxy\20const&\2c\20GrSamplerState\2c\20SkRect\20const&\2c\20SkRect\20const*\2c\20float\20const*\2c\20bool\2c\20GrCaps\20const&\2c\20SkPoint\29::$_1::operator\28\29\28int\2c\20GrSamplerState::WrapMode\2c\20GrTextureEffect::Sampling::Sampling\28GrSurfaceProxy\20const&\2c\20GrSamplerState\2c\20SkRect\20const&\2c\20SkRect\20const*\2c\20float\20const*\2c\20bool\2c\20GrCaps\20const&\2c\20SkPoint\29::Span\2c\20GrTextureEffect::Sampling::Sampling\28GrSurfaceProxy\20const&\2c\20GrSamplerState\2c\20SkRect\20const&\2c\20SkRect\20const*\2c\20float\20const*\2c\20bool\2c\20GrCaps\20const&\2c\20SkPoint\29::Span\2c\20float\29\20const 7244:GrTextureEffect::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29::$_0::operator\28\29\28float*\2c\20GrResourceHandle\29\20const 7245:GrTextureEffect::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::$_2::operator\28\29\28GrTextureEffect::ShaderMode\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\29\20const 7246:GrTexture::onGpuMemorySize\28\29\20const 7247:GrTexture::computeScratchKey\28skgpu::ScratchKey*\29\20const 7248:GrTDeferredProxyUploader>::~GrTDeferredProxyUploader\28\29 7249:GrTDeferredProxyUploader<\28anonymous\20namespace\29::SoftwarePathData>::~GrTDeferredProxyUploader\28\29 7250:GrSurfaceProxyView::operator=\28GrSurfaceProxyView\20const&\29 7251:GrSurfaceProxyView::operator==\28GrSurfaceProxyView\20const&\29\20const 7252:GrSurfaceProxyPriv::exactify\28\29 7253:GrSurfaceProxyPriv::assign\28sk_sp\29 7254:GrSurfaceProxy::GrSurfaceProxy\28std::__2::function&&\2c\20GrBackendFormat\20const&\2c\20SkISize\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20GrInternalSurfaceFlags\2c\20GrSurfaceProxy::UseAllocator\2c\20std::__2::basic_string_view>\29 7255:GrSurfaceProxy::GrSurfaceProxy\28GrBackendFormat\20const&\2c\20SkISize\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20GrInternalSurfaceFlags\2c\20GrSurfaceProxy::UseAllocator\2c\20std::__2::basic_string_view>\29 7256:GrSurface::onRelease\28\29 7257:GrStyledShape::setInheritedKey\28GrStyledShape\20const&\2c\20GrStyle::Apply\2c\20float\29 7258:GrStyledShape::asRRect\28SkRRect*\2c\20SkPathDirection*\2c\20unsigned\20int*\2c\20bool*\29\20const 7259:GrStyledShape::asLine\28SkPoint*\2c\20bool*\29\20const 7260:GrStyledShape::GrStyledShape\28SkRRect\20const&\2c\20SkPathDirection\2c\20unsigned\20int\2c\20bool\2c\20GrStyle\20const&\2c\20GrStyledShape::DoSimplify\29 7261:GrStyledShape::GrStyledShape\28SkRRect\20const&\2c\20GrStyle\20const&\2c\20GrStyledShape::DoSimplify\29 7262:GrStyledShape::GrStyledShape\28SkPath\20const&\2c\20SkPaint\20const&\2c\20GrStyledShape::DoSimplify\29 7263:GrStyle::resetToInitStyle\28SkStrokeRec::InitStyle\29 7264:GrStyle::applyToPath\28SkPath*\2c\20SkStrokeRec::InitStyle*\2c\20SkPath\20const&\2c\20float\29\20const 7265:GrStyle::applyPathEffect\28SkPath*\2c\20SkStrokeRec*\2c\20SkPath\20const&\29\20const 7266:GrStyle::MatrixToScaleFactor\28SkMatrix\20const&\29 7267:GrStyle::DashInfo::operator=\28GrStyle::DashInfo\20const&\29 7268:GrStrokeTessellationShader::~GrStrokeTessellationShader\28\29 7269:GrStrokeTessellationShader::Impl::~Impl\28\29 7270:GrStagingBufferManager::detachBuffers\28\29 7271:GrSkSLFP::~GrSkSLFP\28\29 7272:GrSkSLFP::Impl::~Impl\28\29 7273:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::defineStruct\28char\20const*\29 7274:GrSimpleMesh::~GrSimpleMesh\28\29 7275:GrShape::simplify\28unsigned\20int\29 7276:GrShape::setArc\28GrArc\20const&\29 7277:GrShape::segmentMask\28\29\20const 7278:GrShape::conservativeContains\28SkRect\20const&\29\20const 7279:GrShape::closed\28\29\20const 7280:GrShape::GrShape\28SkRect\20const&\29 7281:GrShape::GrShape\28SkRRect\20const&\29 7282:GrShape::GrShape\28SkPath\20const&\29 7283:GrShaderVar::GrShaderVar\28SkString\2c\20SkSLType\2c\20GrShaderVar::TypeModifier\2c\20int\2c\20SkString\2c\20SkString\29 7284:GrScissorState::operator==\28GrScissorState\20const&\29\20const 7285:GrScissorState::intersect\28SkIRect\20const&\29 7286:GrSWMaskHelper::toTextureView\28GrRecordingContext*\2c\20SkBackingFit\29 7287:GrSWMaskHelper::drawShape\28GrStyledShape\20const&\2c\20SkMatrix\20const&\2c\20GrAA\2c\20unsigned\20char\29 7288:GrSWMaskHelper::drawShape\28GrShape\20const&\2c\20SkMatrix\20const&\2c\20GrAA\2c\20unsigned\20char\29 7289:GrResourceProvider::writePixels\28sk_sp\2c\20GrColorType\2c\20SkISize\2c\20GrMipLevel\20const*\2c\20int\29\20const 7290:GrResourceProvider::wrapBackendSemaphore\28GrBackendSemaphore\20const&\2c\20GrSemaphoreWrapType\2c\20GrWrapOwnership\29 7291:GrResourceProvider::prepareLevels\28GrBackendFormat\20const&\2c\20GrColorType\2c\20SkISize\2c\20GrMipLevel\20const*\2c\20int\2c\20skia_private::AutoSTArray<14\2c\20GrMipLevel>*\2c\20skia_private::AutoSTArray<14\2c\20std::__2::unique_ptr>>*\29\20const 7292:GrResourceProvider::getExactScratch\28SkISize\2c\20GrBackendFormat\20const&\2c\20GrTextureType\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Budgeted\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 7293:GrResourceProvider::findAndRefScratchTexture\28skgpu::ScratchKey\20const&\2c\20std::__2::basic_string_view>\29 7294:GrResourceProvider::findAndRefScratchTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20GrTextureType\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 7295:GrResourceProvider::createTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20GrTextureType\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 7296:GrResourceProvider::createTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20GrTextureType\2c\20GrColorType\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Budgeted\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrMipLevel\20const*\2c\20std::__2::basic_string_view>\29 7297:GrResourceProvider::createBuffer\28void\20const*\2c\20unsigned\20long\2c\20GrGpuBufferType\2c\20GrAccessPattern\29 7298:GrResourceProvider::createApproxTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20GrTextureType\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 7299:GrResourceCache::removeResource\28GrGpuResource*\29 7300:GrResourceCache::removeFromNonpurgeableArray\28GrGpuResource*\29 7301:GrResourceCache::releaseAll\28\29 7302:GrResourceCache::refAndMakeResourceMRU\28GrGpuResource*\29 7303:GrResourceCache::processFreedGpuResources\28\29 7304:GrResourceCache::insertResource\28GrGpuResource*\29 7305:GrResourceCache::findAndRefUniqueResource\28skgpu::UniqueKey\20const&\29 7306:GrResourceCache::didChangeBudgetStatus\28GrGpuResource*\29 7307:GrResourceCache::addToNonpurgeableArray\28GrGpuResource*\29 7308:GrResourceAllocator::~GrResourceAllocator\28\29 7309:GrResourceAllocator::planAssignment\28\29 7310:GrResourceAllocator::expire\28unsigned\20int\29 7311:GrResourceAllocator::Register*\20SkArenaAlloc::make\28GrSurfaceProxy*&\2c\20skgpu::ScratchKey&&\2c\20GrResourceProvider*&\29 7312:GrResourceAllocator::IntervalList::popHead\28\29 7313:GrResourceAllocator::IntervalList::insertByIncreasingStart\28GrResourceAllocator::Interval*\29 7314:GrRenderTask::makeSkippable\28\29 7315:GrRenderTask::isUsed\28GrSurfaceProxy*\29\20const 7316:GrRenderTask::isInstantiated\28\29\20const 7317:GrRenderTargetProxy::~GrRenderTargetProxy\28\29.2 7318:GrRenderTargetProxy::~GrRenderTargetProxy\28\29.1 7319:GrRenderTargetProxy::onUninstantiatedGpuMemorySize\28\29\20const 7320:GrRenderTargetProxy::isMSAADirty\28\29\20const 7321:GrRenderTargetProxy::instantiate\28GrResourceProvider*\29 7322:GrRenderTargetProxy::createSurface\28GrResourceProvider*\29\20const 7323:GrRenderTargetProxy::callbackDesc\28\29\20const 7324:GrRenderTarget::GrRenderTarget\28GrGpu*\2c\20SkISize\20const&\2c\20int\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\2c\20sk_sp\29 7325:GrRecordingContextPriv::createDevice\28skgpu::Budgeted\2c\20SkImageInfo\20const&\2c\20SkBackingFit\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrSurfaceOrigin\2c\20SkSurfaceProps\20const&\2c\20skgpu::ganesh::Device::InitContents\29 7326:GrRecordingContext::init\28\29 7327:GrRecordingContext::destroyDrawingManager\28\29 7328:GrRecordingContext::colorTypeSupportedAsSurface\28SkColorType\29\20const 7329:GrRecordingContext::abandoned\28\29 7330:GrRecordingContext::abandonContext\28\29 7331:GrRRectShadowGeoProc::~GrRRectShadowGeoProc\28\29 7332:GrRRectEffect::Make\28std::__2::unique_ptr>\2c\20GrClipEdgeType\2c\20SkRRect\20const&\2c\20GrShaderCaps\20const&\29 7333:GrQuadUtils::TessellationHelper::outset\28skvx::Vec<4\2c\20float>\20const&\2c\20GrQuad*\2c\20GrQuad*\29 7334:GrQuadUtils::TessellationHelper::getOutsetRequest\28skvx::Vec<4\2c\20float>\20const&\29 7335:GrQuadUtils::TessellationHelper::adjustVertices\28skvx::Vec<4\2c\20float>\20const&\2c\20GrQuadUtils::TessellationHelper::Vertices*\29 7336:GrQuadUtils::TessellationHelper::adjustDegenerateVertices\28skvx::Vec<4\2c\20float>\20const&\2c\20GrQuadUtils::TessellationHelper::Vertices*\29 7337:GrQuadUtils::TessellationHelper::Vertices::moveTo\28skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20float>\20const&\2c\20skvx::Vec<4\2c\20int>\20const&\29 7338:GrQuadUtils::ClipToW0\28DrawQuad*\2c\20DrawQuad*\29 7339:GrQuadBuffer<\28anonymous\20namespace\29::TextureOpImpl::ColorSubsetAndAA>::append\28GrQuad\20const&\2c\20\28anonymous\20namespace\29::TextureOpImpl::ColorSubsetAndAA&&\2c\20GrQuad\20const*\29 7340:GrQuadBuffer<\28anonymous\20namespace\29::TextureOpImpl::ColorSubsetAndAA>::GrQuadBuffer\28int\2c\20bool\29 7341:GrQuad::point\28int\29\20const 7342:GrQuad::bounds\28\29\20const::'lambda0'\28float\20const*\29::operator\28\29\28float\20const*\29\20const 7343:GrQuad::bounds\28\29\20const::'lambda'\28float\20const*\29::operator\28\29\28float\20const*\29\20const 7344:GrProxyProvider::removeUniqueKeyFromProxy\28GrTextureProxy*\29 7345:GrProxyProvider::processInvalidUniqueKeyImpl\28skgpu::UniqueKey\20const&\2c\20GrTextureProxy*\2c\20GrProxyProvider::InvalidateGPUResource\2c\20GrProxyProvider::RemoveTableEntry\29 7346:GrProxyProvider::createLazyProxy\28std::__2::function&&\2c\20GrBackendFormat\20const&\2c\20SkISize\2c\20skgpu::Mipmapped\2c\20GrMipmapStatus\2c\20GrInternalSurfaceFlags\2c\20SkBackingFit\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20GrSurfaceProxy::UseAllocator\2c\20std::__2::basic_string_view>\29 7347:GrProxyProvider::adoptUniqueKeyFromSurface\28GrTextureProxy*\2c\20GrSurface\20const*\29 7348:GrProcessorSet::operator==\28GrProcessorSet\20const&\29\20const 7349:GrPorterDuffXPFactory::Get\28SkBlendMode\29 7350:GrPixmap::GrPixmap\28SkPixmap\20const&\29 7351:GrPipeline::peekDstTexture\28\29\20const 7352:GrPipeline::GrPipeline\28GrPipeline::InitArgs\20const&\2c\20sk_sp\2c\20GrAppliedHardClip\20const&\29 7353:GrPersistentCacheUtils::ShaderMetadata::~ShaderMetadata\28\29 7354:GrPersistentCacheUtils::GetType\28SkReadBuffer*\29 7355:GrPerlinNoise2Effect::~GrPerlinNoise2Effect\28\29 7356:GrPathUtils::QuadUVMatrix::set\28SkPoint\20const*\29 7357:GrPathUtils::QuadUVMatrix::apply\28void*\2c\20int\2c\20unsigned\20long\2c\20unsigned\20long\29\20const 7358:GrPathTessellationShader::MakeStencilOnlyPipeline\28GrTessellationShader::ProgramArgs\20const&\2c\20GrAAType\2c\20GrAppliedHardClip\20const&\2c\20GrPipeline::InputFlags\29 7359:GrPathTessellationShader::Impl::~Impl\28\29 7360:GrOpsRenderPass::~GrOpsRenderPass\28\29 7361:GrOpsRenderPass::resetActiveBuffers\28\29 7362:GrOpsRenderPass::draw\28int\2c\20int\29 7363:GrOpsRenderPass::drawIndexPattern\28int\2c\20int\2c\20int\2c\20int\2c\20int\29 7364:GrOpFlushState::~GrOpFlushState\28\29.1 7365:GrOpFlushState::smallPathAtlasManager\28\29\20const 7366:GrOpFlushState::reset\28\29 7367:GrOpFlushState::recordDraw\28GrGeometryProcessor\20const*\2c\20GrSimpleMesh\20const*\2c\20int\2c\20GrSurfaceProxy\20const*\20const*\2c\20GrPrimitiveType\29 7368:GrOpFlushState::putBackIndices\28int\29 7369:GrOpFlushState::executeDrawsAndUploadsForMeshDrawOp\28GrOp\20const*\2c\20SkRect\20const&\2c\20GrPipeline\20const*\2c\20GrUserStencilSettings\20const*\29 7370:GrOpFlushState::drawIndexedInstanced\28int\2c\20int\2c\20int\2c\20int\2c\20int\29 7371:GrOpFlushState::doUpload\28std::__2::function&\29>&\2c\20bool\29 7372:GrOpFlushState::addASAPUpload\28std::__2::function&\29>&&\29 7373:GrOpFlushState::OpArgs::OpArgs\28GrOp*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 7374:GrOp::setTransformedBounds\28SkRect\20const&\2c\20SkMatrix\20const&\2c\20GrOp::HasAABloat\2c\20GrOp::IsHairline\29 7375:GrOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 7376:GrOp::combineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 7377:GrNonAtomicRef::unref\28\29\20const 7378:GrNonAtomicRef::unref\28\29\20const 7379:GrNonAtomicRef::unref\28\29\20const 7380:GrNativeRect::operator!=\28GrNativeRect\20const&\29\20const 7381:GrMeshDrawTarget::allocPrimProcProxyPtrs\28int\29 7382:GrMeshDrawOp::PatternHelper::init\28GrMeshDrawTarget*\2c\20GrPrimitiveType\2c\20unsigned\20long\2c\20sk_sp\2c\20int\2c\20int\2c\20int\2c\20int\29 7383:GrMemoryPool::allocate\28unsigned\20long\29 7384:GrMakeUniqueKeyInvalidationListener\28skgpu::UniqueKey*\2c\20unsigned\20int\29::Listener::~Listener\28\29 7385:GrMakeUniqueKeyInvalidationListener\28skgpu::UniqueKey*\2c\20unsigned\20int\29::Listener::changed\28\29 7386:GrMakeCachedBitmapProxyView\28GrRecordingContext*\2c\20SkBitmap\20const&\2c\20std::__2::basic_string_view>\2c\20skgpu::Mipmapped\29::$_0::operator\28\29\28GrTextureProxy*\29\20const 7387:GrIndexBufferAllocPool::makeSpace\28int\2c\20sk_sp*\2c\20int*\29 7388:GrIndexBufferAllocPool::makeSpaceAtLeast\28int\2c\20int\2c\20sk_sp*\2c\20int*\2c\20int*\29 7389:GrImageInfo::operator=\28GrImageInfo&&\29 7390:GrImageInfo::GrImageInfo\28GrColorType\2c\20SkAlphaType\2c\20sk_sp\2c\20int\2c\20int\29 7391:GrImageContext::abandonContext\28\29 7392:GrHashMapWithCache::find\28unsigned\20int\20const&\29\20const 7393:GrGradientBitmapCache::release\28GrGradientBitmapCache::Entry*\29\20const 7394:GrGradientBitmapCache::Entry::~Entry\28\29 7395:GrGpuResource::setLabel\28std::__2::basic_string_view>\29 7396:GrGpuResource::makeBudgeted\28\29 7397:GrGpuResource::GrGpuResource\28GrGpu*\2c\20std::__2::basic_string_view>\29 7398:GrGpuResource::CacheAccess::abandon\28\29 7399:GrGpuBuffer::ComputeScratchKeyForDynamicBuffer\28unsigned\20long\2c\20GrGpuBufferType\2c\20skgpu::ScratchKey*\29 7400:GrGpu::~GrGpu\28\29 7401:GrGpu::regenerateMipMapLevels\28GrTexture*\29 7402:GrGpu::executeFlushInfo\28SkSpan\2c\20SkSurfaces::BackendSurfaceAccess\2c\20GrFlushInfo\20const&\2c\20skgpu::MutableTextureState\20const*\29 7403:GrGpu::createTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20GrTextureType\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 7404:GrGpu::createTextureCommon\28SkISize\2c\20GrBackendFormat\20const&\2c\20GrTextureType\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20int\2c\20unsigned\20int\2c\20std::__2::basic_string_view>\29 7405:GrGpu::createBuffer\28unsigned\20long\2c\20GrGpuBufferType\2c\20GrAccessPattern\29 7406:GrGpu::callSubmittedProcs\28bool\29 7407:GrGeometryProcessor::AttributeSet::addToKey\28skgpu::KeyBuilder*\29\20const 7408:GrGeometryProcessor::AttributeSet::Iter::skipUninitialized\28\29 7409:GrGeometryProcessor::Attribute&\20skia_private::TArray::emplace_back\28char\20const\20\28&\29\20\5b26\5d\2c\20GrVertexAttribType&&\2c\20SkSLType&&\29 7410:GrGLVertexArray::bind\28GrGLGpu*\29 7411:GrGLTextureParameters::invalidate\28\29 7412:GrGLTextureParameters::SamplerOverriddenState::SamplerOverriddenState\28\29 7413:GrGLTexture::~GrGLTexture\28\29.2 7414:GrGLTexture::~GrGLTexture\28\29.1 7415:GrGLTexture::MakeWrapped\28GrGLGpu*\2c\20GrMipmapStatus\2c\20GrGLTexture::Desc\20const&\2c\20sk_sp\2c\20GrWrapCacheable\2c\20GrIOType\2c\20std::__2::basic_string_view>\29 7416:GrGLTexture::GrGLTexture\28GrGLGpu*\2c\20skgpu::Budgeted\2c\20GrGLTexture::Desc\20const&\2c\20GrMipmapStatus\2c\20std::__2::basic_string_view>\29 7417:GrGLTexture::GrGLTexture\28GrGLGpu*\2c\20GrGLTexture::Desc\20const&\2c\20sk_sp\2c\20GrMipmapStatus\2c\20std::__2::basic_string_view>\29 7418:GrGLSemaphore::~GrGLSemaphore\28\29 7419:GrGLSLVaryingHandler::addAttribute\28GrShaderVar\20const&\29 7420:GrGLSLVarying::vsOutVar\28\29\20const 7421:GrGLSLVarying::fsInVar\28\29\20const 7422:GrGLSLUniformHandler::liftUniformToVertexShader\28GrProcessor\20const&\2c\20SkString\29 7423:GrGLSLShaderBuilder::nextStage\28\29 7424:GrGLSLShaderBuilder::finalize\28unsigned\20int\29 7425:GrGLSLShaderBuilder::emitFunction\28char\20const*\2c\20char\20const*\29 7426:GrGLSLShaderBuilder::emitFunctionPrototype\28char\20const*\29 7427:GrGLSLShaderBuilder::appendTextureLookupAndBlend\28char\20const*\2c\20SkBlendMode\2c\20GrResourceHandle\2c\20char\20const*\2c\20GrGLSLColorSpaceXformHelper*\29 7428:GrGLSLShaderBuilder::appendDecls\28SkTBlockList\20const&\2c\20SkString*\29\20const 7429:GrGLSLShaderBuilder::appendColorGamutXform\28SkString*\2c\20char\20const*\2c\20GrGLSLColorSpaceXformHelper*\29::$_0::operator\28\29\28char\20const*\2c\20GrResourceHandle\2c\20skcms_TFType\29\20const 7430:GrGLSLShaderBuilder::GrGLSLShaderBuilder\28GrGLSLProgramBuilder*\29 7431:GrGLSLProgramDataManager::setRuntimeEffectUniforms\28SkSpan\2c\20SkSpan\20const>\2c\20SkSpan\2c\20void\20const*\29\20const 7432:GrGLSLProgramBuilder::~GrGLSLProgramBuilder\28\29 7433:GrGLSLFragmentShaderBuilder::onFinalize\28\29 7434:GrGLSLFragmentShaderBuilder::enableAdvancedBlendEquationIfNeeded\28skgpu::BlendEquation\29 7435:GrGLSLColorSpaceXformHelper::isNoop\28\29\20const 7436:GrGLSLBlend::SetBlendModeUniformData\28GrGLSLProgramDataManager\20const&\2c\20GrResourceHandle\2c\20SkBlendMode\29 7437:GrGLSLBlend::BlendExpression\28GrProcessor\20const*\2c\20GrGLSLUniformHandler*\2c\20GrResourceHandle*\2c\20char\20const*\2c\20char\20const*\2c\20SkBlendMode\29 7438:GrGLRenderTarget::~GrGLRenderTarget\28\29.2 7439:GrGLRenderTarget::~GrGLRenderTarget\28\29.1 7440:GrGLRenderTarget::setFlags\28GrGLCaps\20const&\2c\20GrGLRenderTarget::IDs\20const&\29 7441:GrGLRenderTarget::onGpuMemorySize\28\29\20const 7442:GrGLRenderTarget::bind\28bool\29 7443:GrGLRenderTarget::backendFormat\28\29\20const 7444:GrGLRenderTarget::GrGLRenderTarget\28GrGLGpu*\2c\20SkISize\20const&\2c\20GrGLFormat\2c\20int\2c\20GrGLRenderTarget::IDs\20const&\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 7445:GrGLProgramDataManager::set4fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 7446:GrGLProgramDataManager::set2fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 7447:GrGLProgramBuilder::uniformHandler\28\29 7448:GrGLProgramBuilder::compileAndAttachShaders\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int\2c\20unsigned\20int\2c\20SkTDArray*\2c\20bool\2c\20skgpu::ShaderErrorHandler*\29 7449:GrGLProgramBuilder::PrecompileProgram\28GrDirectContext*\2c\20GrGLPrecompiledProgram*\2c\20SkData\20const&\29::$_0::operator\28\29\28SkSL::ProgramKind\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int\29\20const 7450:GrGLProgramBuilder::CreateProgram\28GrDirectContext*\2c\20GrProgramDesc\20const&\2c\20GrProgramInfo\20const&\2c\20GrGLPrecompiledProgram\20const*\29 7451:GrGLProgram::~GrGLProgram\28\29 7452:GrGLMakeNativeInterface\28\29 7453:GrGLInterface::~GrGLInterface\28\29 7454:GrGLGpu::~GrGLGpu\28\29 7455:GrGLGpu::waitSemaphore\28GrSemaphore*\29 7456:GrGLGpu::uploadTexData\28SkISize\2c\20unsigned\20int\2c\20SkIRect\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20long\2c\20GrMipLevel\20const*\2c\20int\29 7457:GrGLGpu::uploadCompressedTexData\28SkTextureCompressionType\2c\20GrGLFormat\2c\20SkISize\2c\20skgpu::Mipmapped\2c\20unsigned\20int\2c\20void\20const*\2c\20unsigned\20long\29 7458:GrGLGpu::uploadColorToTex\28GrGLFormat\2c\20SkISize\2c\20unsigned\20int\2c\20std::__2::array\2c\20unsigned\20int\29 7459:GrGLGpu::readOrTransferPixelsFrom\28GrSurface*\2c\20SkIRect\2c\20GrColorType\2c\20GrColorType\2c\20void*\2c\20int\29 7460:GrGLGpu::onFBOChanged\28\29 7461:GrGLGpu::getCompatibleStencilIndex\28GrGLFormat\29 7462:GrGLGpu::flushWireframeState\28bool\29 7463:GrGLGpu::flushScissorRect\28SkIRect\20const&\2c\20int\2c\20GrSurfaceOrigin\29 7464:GrGLGpu::flushProgram\28unsigned\20int\29 7465:GrGLGpu::flushProgram\28sk_sp\29 7466:GrGLGpu::flushFramebufferSRGB\28bool\29 7467:GrGLGpu::flushConservativeRasterState\28bool\29 7468:GrGLGpu::deleteSync\28__GLsync*\29 7469:GrGLGpu::deleteFence\28__GLsync*\29 7470:GrGLGpu::createRenderTargetObjects\28GrGLTexture::Desc\20const&\2c\20int\2c\20GrGLRenderTarget::IDs*\29 7471:GrGLGpu::createCompressedTexture2D\28SkISize\2c\20SkTextureCompressionType\2c\20GrGLFormat\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrGLTextureParameters::SamplerOverriddenState*\29 7472:GrGLGpu::bindVertexArray\28unsigned\20int\29 7473:GrGLGpu::TextureUnitBindings::setBoundID\28unsigned\20int\2c\20GrGpuResource::UniqueID\29 7474:GrGLGpu::TextureUnitBindings::invalidateAllTargets\28bool\29 7475:GrGLGpu::TextureToCopyProgramIdx\28GrTexture*\29 7476:GrGLGpu::ProgramCache::~ProgramCache\28\29 7477:GrGLGpu::ProgramCache::findOrCreateProgramImpl\28GrDirectContext*\2c\20GrProgramDesc\20const&\2c\20GrProgramInfo\20const&\2c\20GrThreadSafePipelineBuilder::Stats::ProgramCacheResult*\29 7478:GrGLGpu::HWVertexArrayState::invalidate\28\29 7479:GrGLFunction::GrGLFunction\28void\20\28*\29\28unsigned\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void\20const*\29\29::'lambda'\28void\20const*\2c\20unsigned\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void\20const*\29::__invoke\28void\20const*\2c\20unsigned\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void\20const*\29 7480:GrGLFunction::GrGLFunction\28void\20\28*\29\28int\2c\20float\29\29::'lambda'\28void\20const*\2c\20int\2c\20float\29::__invoke\28void\20const*\2c\20int\2c\20float\29 7481:GrGLFinishCallbacks::check\28\29 7482:GrGLContext::~GrGLContext\28\29.1 7483:GrGLCaps::~GrGLCaps\28\29 7484:GrGLCaps::getTexSubImageExternalFormatAndType\28GrGLFormat\2c\20GrColorType\2c\20GrColorType\2c\20unsigned\20int*\2c\20unsigned\20int*\29\20const 7485:GrGLCaps::getExternalFormat\28GrGLFormat\2c\20GrColorType\2c\20GrColorType\2c\20GrGLCaps::ExternalFormatUsage\2c\20unsigned\20int*\2c\20unsigned\20int*\29\20const 7486:GrGLCaps::canCopyTexSubImage\28GrGLFormat\2c\20bool\2c\20GrTextureType\20const*\2c\20GrGLFormat\2c\20bool\2c\20GrTextureType\20const*\29\20const 7487:GrGLCaps::canCopyAsBlit\28GrGLFormat\2c\20int\2c\20GrTextureType\20const*\2c\20GrGLFormat\2c\20int\2c\20GrTextureType\20const*\2c\20SkRect\20const&\2c\20bool\2c\20SkIRect\20const&\2c\20SkIRect\20const&\29\20const 7488:GrGLBuffer::~GrGLBuffer\28\29.1 7489:GrGLAttribArrayState::resize\28int\29 7490:GrGLAttribArrayState::GrGLAttribArrayState\28int\29 7491:GrFragmentProcessors::MakeChildFP\28SkRuntimeEffect::ChildPtr\20const&\2c\20GrFPArgs\20const&\29 7492:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::Make\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29 7493:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29 7494:GrFragmentProcessor::SurfaceColor\28\29::SurfaceColorProcessor::Make\28\29 7495:GrFragmentProcessor::HighPrecision\28std::__2::unique_ptr>\29::HighPrecisionFragmentProcessor::Make\28std::__2::unique_ptr>\29 7496:GrFragmentProcessor::DeviceSpace\28std::__2::unique_ptr>\29::DeviceSpace::DeviceSpace\28std::__2::unique_ptr>\29 7497:GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29::ComposeProcessor::Make\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 7498:GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29 7499:GrFragmentProcessor::ClampOutput\28std::__2::unique_ptr>\29 7500:GrFixedClip::preApply\28SkRect\20const&\2c\20GrAA\29\20const 7501:GrFixedClip::apply\28GrAppliedHardClip*\2c\20SkIRect*\29\20const 7502:GrEagerDynamicVertexAllocator::unlock\28int\29 7503:GrDynamicAtlas::~GrDynamicAtlas\28\29 7504:GrDynamicAtlas::Node::addRect\28int\2c\20int\2c\20SkIPoint16*\29 7505:GrDrawingManager::flush\28SkSpan\2c\20SkSurfaces::BackendSurfaceAccess\2c\20GrFlushInfo\20const&\2c\20skgpu::MutableTextureState\20const*\29 7506:GrDrawingManager::closeAllTasks\28\29 7507:GrDrawOpAtlas::uploadToPage\28unsigned\20int\2c\20GrDeferredUploadTarget*\2c\20int\2c\20int\2c\20void\20const*\2c\20skgpu::AtlasLocator*\29 7508:GrDrawOpAtlas::updatePlot\28GrDeferredUploadTarget*\2c\20skgpu::AtlasLocator*\2c\20skgpu::Plot*\29 7509:GrDrawOpAtlas::setLastUseToken\28skgpu::AtlasLocator\20const&\2c\20skgpu::AtlasToken\29 7510:GrDrawOpAtlas::processEviction\28skgpu::PlotLocator\29 7511:GrDrawOpAtlas::hasID\28skgpu::PlotLocator\20const&\29 7512:GrDrawOpAtlas::compact\28skgpu::AtlasToken\29 7513:GrDrawOpAtlas::addToAtlas\28GrResourceProvider*\2c\20GrDeferredUploadTarget*\2c\20int\2c\20int\2c\20void\20const*\2c\20skgpu::AtlasLocator*\29 7514:GrDrawOpAtlas::Make\28GrProxyProvider*\2c\20GrBackendFormat\20const&\2c\20SkColorType\2c\20unsigned\20long\2c\20int\2c\20int\2c\20int\2c\20int\2c\20skgpu::AtlasGenerationCounter*\2c\20GrDrawOpAtlas::AllowMultitexturing\2c\20skgpu::PlotEvictionCallback*\2c\20std::__2::basic_string_view>\29 7515:GrDrawIndirectBufferAllocPool::putBack\28int\29 7516:GrDrawIndirectBufferAllocPool::putBackIndexed\28int\29 7517:GrDrawIndirectBufferAllocPool::makeSpace\28int\2c\20sk_sp*\2c\20unsigned\20long*\29 7518:GrDrawIndirectBufferAllocPool::makeIndexedSpace\28int\2c\20sk_sp*\2c\20unsigned\20long*\29 7519:GrDistanceFieldPathGeoProc::~GrDistanceFieldPathGeoProc\28\29 7520:GrDistanceFieldLCDTextGeoProc::~GrDistanceFieldLCDTextGeoProc\28\29 7521:GrDistanceFieldA8TextGeoProc::~GrDistanceFieldA8TextGeoProc\28\29 7522:GrDistanceFieldA8TextGeoProc::onTextureSampler\28int\29\20const 7523:GrDisableColorXPFactory::MakeXferProcessor\28\29 7524:GrDirectContextPriv::validPMUPMConversionExists\28\29 7525:GrDirectContext::~GrDirectContext\28\29 7526:GrDirectContext::syncAllOutstandingGpuWork\28bool\29 7527:GrDirectContext::submit\28GrSyncCpu\29 7528:GrDirectContext::abandoned\28\29 7529:GrDeferredProxyUploader::signalAndFreeData\28\29 7530:GrDeferredProxyUploader::GrDeferredProxyUploader\28\29 7531:GrCopyRenderTask::~GrCopyRenderTask\28\29 7532:GrCopyRenderTask::onIsUsed\28GrSurfaceProxy*\29\20const 7533:GrCopyBaseMipMapToView\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20skgpu::Budgeted\29 7534:GrCopyBaseMipMapToTextureProxy\28GrRecordingContext*\2c\20sk_sp\2c\20GrSurfaceOrigin\2c\20std::__2::basic_string_view>\2c\20skgpu::Budgeted\29 7535:GrContext_Base::~GrContext_Base\28\29.1 7536:GrContextThreadSafeProxy::~GrContextThreadSafeProxy\28\29 7537:GrColorSpaceXformEffect::~GrColorSpaceXformEffect\28\29 7538:GrColorInfo::makeColorType\28GrColorType\29\20const 7539:GrColorInfo::isLinearlyBlended\28\29\20const 7540:GrColorFragmentProcessorAnalysis::GrColorFragmentProcessorAnalysis\28GrProcessorAnalysisColor\20const&\2c\20std::__2::unique_ptr>\20const*\2c\20int\29 7541:GrCaps::~GrCaps\28\29 7542:GrCaps::surfaceSupportsWritePixels\28GrSurface\20const*\29\20const 7543:GrCaps::getDstSampleFlagsForProxy\28GrRenderTargetProxy\20const*\2c\20bool\29\20const 7544:GrCPixmap::GrCPixmap\28GrPixmap\20const&\29 7545:GrBufferAllocPool::resetCpuData\28unsigned\20long\29 7546:GrBufferAllocPool::makeSpaceAtLeast\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20sk_sp*\2c\20unsigned\20long*\2c\20unsigned\20long*\29 7547:GrBufferAllocPool::flushCpuData\28GrBufferAllocPool::BufferBlock\20const&\2c\20unsigned\20long\29 7548:GrBufferAllocPool::destroyBlock\28\29 7549:GrBufferAllocPool::deleteBlocks\28\29 7550:GrBufferAllocPool::createBlock\28unsigned\20long\29 7551:GrBufferAllocPool::CpuBufferCache::makeBuffer\28unsigned\20long\2c\20bool\29 7552:GrBlurUtils::mask_release_proc\28void*\2c\20void*\29 7553:GrBlurUtils::make_unnormalized_half_kernel\28float*\2c\20int\2c\20float\29 7554:GrBlurUtils::draw_shape_with_mask_filter\28GrRecordingContext*\2c\20skgpu::ganesh::SurfaceDrawContext*\2c\20GrClip\20const*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkMaskFilterBase\20const*\2c\20GrStyledShape\20const&\29 7555:GrBlurUtils::draw_mask\28skgpu::ganesh::SurfaceDrawContext*\2c\20GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20GrPaint&&\2c\20GrSurfaceProxyView\29 7556:GrBlurUtils::create_data\28SkIRect\20const&\2c\20SkIRect\20const&\29 7557:GrBlurUtils::convolve_gaussian_1d\28skgpu::ganesh::SurfaceFillContext*\2c\20GrSurfaceProxyView\2c\20SkIRect\20const&\2c\20SkIPoint\2c\20SkIRect\20const&\2c\20SkAlphaType\2c\20GrBlurUtils::\28anonymous\20namespace\29::Direction\2c\20int\2c\20float\2c\20SkTileMode\29 7558:GrBlurUtils::convolve_gaussian\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20GrColorType\2c\20SkAlphaType\2c\20SkIRect\2c\20SkIRect\2c\20GrBlurUtils::\28anonymous\20namespace\29::Direction\2c\20int\2c\20float\2c\20SkTileMode\2c\20sk_sp\2c\20SkBackingFit\29::$_0::operator\28\29\28SkIRect\29\20const 7559:GrBlurUtils::convolve_gaussian\28GrRecordingContext*\2c\20GrSurfaceProxyView\2c\20GrColorType\2c\20SkAlphaType\2c\20SkIRect\2c\20SkIRect\2c\20GrBlurUtils::\28anonymous\20namespace\29::Direction\2c\20int\2c\20float\2c\20SkTileMode\2c\20sk_sp\2c\20SkBackingFit\29 7560:GrBlurUtils::clip_bounds_quick_reject\28SkIRect\20const&\2c\20SkIRect\20const&\29 7561:GrBlurUtils::\28anonymous\20namespace\29::make_texture_effect\28GrCaps\20const*\2c\20GrSurfaceProxyView\2c\20SkAlphaType\2c\20GrSamplerState\20const&\2c\20SkIRect\20const&\2c\20SkIRect\20const&\2c\20SkISize\20const&\29 7562:GrBitmapTextGeoProc::~GrBitmapTextGeoProc\28\29 7563:GrBitmapTextGeoProc::addNewViews\28GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\29 7564:GrBitmapTextGeoProc::Make\28SkArenaAlloc*\2c\20GrShaderCaps\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20bool\2c\20sk_sp\2c\20GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\2c\20skgpu::MaskFormat\2c\20SkMatrix\20const&\2c\20bool\29 7565:GrBicubicEffect::Make\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkMatrix\20const&\2c\20GrSamplerState::WrapMode\2c\20GrSamplerState::WrapMode\2c\20SkCubicResampler\2c\20GrBicubicEffect::Direction\2c\20GrCaps\20const&\29 7566:GrBicubicEffect::MakeSubset\28GrSurfaceProxyView\2c\20SkAlphaType\2c\20SkMatrix\20const&\2c\20GrSamplerState::WrapMode\2c\20GrSamplerState::WrapMode\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkCubicResampler\2c\20GrBicubicEffect::Direction\2c\20GrCaps\20const&\29 7567:GrBackendTexture::operator=\28GrBackendTexture\20const&\29 7568:GrBackendTexture::GrBackendTexture\28int\2c\20int\2c\20std::__2::basic_string_view>\2c\20skgpu::Mipmapped\2c\20GrBackendApi\2c\20GrTextureType\2c\20GrGLBackendTextureData\20const&\29 7569:GrBackendRenderTarget::isProtected\28\29\20const 7570:GrBackendFormatBytesPerBlock\28GrBackendFormat\20const&\29 7571:GrBackendFormat::operator!=\28GrBackendFormat\20const&\29\20const 7572:GrBackendFormat::makeTexture2D\28\29\20const 7573:GrBackendFormat::isMockStencilFormat\28\29\20const 7574:GrAuditTrail::opsCombined\28GrOp\20const*\2c\20GrOp\20const*\29 7575:GrAttachment::ComputeSharedAttachmentUniqueKey\28GrCaps\20const&\2c\20GrBackendFormat\20const&\2c\20SkISize\2c\20GrAttachment::UsageFlags\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrMemoryless\2c\20skgpu::UniqueKey*\29 7576:GrAttachment::ComputeScratchKey\28GrCaps\20const&\2c\20GrBackendFormat\20const&\2c\20SkISize\2c\20GrAttachment::UsageFlags\2c\20int\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20GrMemoryless\2c\20skgpu::ScratchKey*\29 7577:GrAtlasManager::~GrAtlasManager\28\29 7578:GrAtlasManager::getViews\28skgpu::MaskFormat\2c\20unsigned\20int*\29 7579:GrAtlasManager::atlasGeneration\28skgpu::MaskFormat\29\20const 7580:GrAppliedClip::visitProxies\28std::__2::function\20const&\29\20const 7581:GrAppliedClip::addCoverageFP\28std::__2::unique_ptr>\29 7582:GrAATriangulator::makeEvent\28GrAATriangulator::SSEdge*\2c\20GrTriangulator::Vertex*\2c\20GrAATriangulator::SSEdge*\2c\20GrTriangulator::Vertex*\2c\20GrAATriangulator::EventList*\2c\20GrTriangulator::Comparator\20const&\29\20const 7583:GrAATriangulator::connectPartners\28GrTriangulator::VertexList*\2c\20GrTriangulator::Comparator\20const&\29 7584:GrAATriangulator::collapseOverlapRegions\28GrTriangulator::VertexList*\2c\20GrTriangulator::Comparator\20const&\2c\20GrAATriangulator::EventComparator\29 7585:GrAATriangulator::Event*\20SkArenaAlloc::make\28GrAATriangulator::SSEdge*&\2c\20SkPoint&\2c\20unsigned\20char&\29 7586:GrAAConvexTessellator::~GrAAConvexTessellator\28\29 7587:GrAAConvexTessellator::quadTo\28SkPoint\20const*\29 7588:GrAAConvexTessellator::fanRing\28GrAAConvexTessellator::Ring\20const&\29 7589:GetVariationDesignPosition\28AutoFTAccess&\2c\20SkFontArguments::VariationPosition::Coordinate*\2c\20int\29 7590:GetShortIns 7591:FontMgrRunIterator::~FontMgrRunIterator\28\29 7592:FontMgrRunIterator::endOfCurrentRun\28\29\20const 7593:FontMgrRunIterator::atEnd\28\29\20const 7594:FindSortableTop\28SkOpContourHead*\29 7595:FT_Vector_NormLen 7596:FT_Sfnt_Table_Info 7597:FT_Select_Size 7598:FT_Render_Glyph 7599:FT_Remove_Module 7600:FT_Outline_Get_Orientation 7601:FT_Outline_EmboldenXY 7602:FT_Outline_Decompose 7603:FT_Open_Face 7604:FT_New_Library 7605:FT_New_GlyphSlot 7606:FT_Match_Size 7607:FT_GlyphLoader_Reset 7608:FT_GlyphLoader_Prepare 7609:FT_GlyphLoader_CheckSubGlyphs 7610:FT_Get_Var_Design_Coordinates 7611:FT_Get_Postscript_Name 7612:FT_Get_Paint_Layers 7613:FT_Get_PS_Font_Info 7614:FT_Get_Glyph_Name 7615:FT_Get_FSType_Flags 7616:FT_Get_Color_Glyph_ClipBox 7617:FT_Done_Size 7618:FT_Done_Library 7619:FT_Done_GlyphSlot 7620:FT_Bitmap_Done 7621:FT_Bitmap_Convert 7622:FT_Add_Default_Modules 7623:EmptyFontLoader::loadSystemFonts\28SkFontScanner\20const*\2c\20skia_private::TArray\2c\20true>*\29\20const 7624:EllipticalRRectOp::~EllipticalRRectOp\28\29.1 7625:EllipticalRRectOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 7626:EllipticalRRectOp::EllipticalRRectOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20float\2c\20float\2c\20SkPoint\2c\20bool\29 7627:EllipseOp::EllipseOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20EllipseOp::DeviceSpaceParams\20const&\2c\20SkStrokeRec\20const&\29 7628:EllipseGeometryProcessor::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 7629:Dot2AngleType\28float\29 7630:DIEllipseOp::~DIEllipseOp\28\29 7631:DIEllipseOp::DIEllipseOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20DIEllipseOp::DeviceSpaceParams\20const&\2c\20SkMatrix\20const&\29 7632:CustomXP::makeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrXferProcessor\20const&\29 7633:CustomXP::makeProgramImpl\28\29\20const::Impl::emitBlendCodeForDstRead\28GrGLSLXPFragmentBuilder*\2c\20GrGLSLUniformHandler*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20GrXferProcessor\20const&\29 7634:Cr_z_inflateReset2 7635:Cr_z_inflateReset 7636:CoverageSetOpXP::onIsEqual\28GrXferProcessor\20const&\29\20const 7637:Convexicator::close\28\29 7638:Convexicator::addVec\28SkPoint\20const&\29 7639:Convexicator::addPt\28SkPoint\20const&\29 7640:ContourIter::next\28\29 7641:Contour&\20std::__2::vector>::emplace_back\28SkRect&\2c\20int&\2c\20int&\29 7642:CircularRRectOp::~CircularRRectOp\28\29.1 7643:CircularRRectOp::CircularRRectOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkRect\20const&\2c\20float\2c\20float\2c\20bool\29 7644:CircleOp::~CircleOp\28\29 7645:CircleOp::Make\28GrRecordingContext*\2c\20GrPaint&&\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20float\2c\20GrStyle\20const&\2c\20CircleOp::ArcParams\20const*\29 7646:CircleOp::CircleOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20float\2c\20GrStyle\20const&\2c\20CircleOp::ArcParams\20const*\29 7647:CircleGeometryProcessor::Make\28SkArenaAlloc*\2c\20bool\2c\20bool\2c\20bool\2c\20bool\2c\20bool\2c\20bool\2c\20SkMatrix\20const&\29 7648:CircleGeometryProcessor::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 7649:CFF::dict_interpreter_t\2c\20CFF::interp_env_t>::interpret\28CFF::cff1_private_dict_values_base_t&\29 7650:CFF::cs_opset_t\2c\20cff2_path_param_t\2c\20cff2_path_procs_path_t>::process_op\28unsigned\20int\2c\20CFF::cff2_cs_interp_env_t&\2c\20cff2_path_param_t&\29 7651:CFF::cs_opset_t\2c\20cff2_extents_param_t\2c\20cff2_path_procs_extents_t>::process_op\28unsigned\20int\2c\20CFF::cff2_cs_interp_env_t&\2c\20cff2_extents_param_t&\29 7652:CFF::cff_stack_t::cff_stack_t\28\29 7653:CFF::cff2_cs_interp_env_t::process_vsindex\28\29 7654:CFF::cff2_cs_interp_env_t::process_blend\28\29 7655:CFF::cff2_cs_interp_env_t::fetch_op\28\29 7656:CFF::cff2_cs_interp_env_t::cff2_cs_interp_env_t\28hb_array_t\20const&\2c\20OT::cff2::accelerator_t\20const&\2c\20unsigned\20int\2c\20int\20const*\2c\20unsigned\20int\29 7657:CFF::cff2_cs_interp_env_t::blend_deltas\28hb_array_t\29\20const 7658:CFF::cff1_top_dict_values_t::init\28\29 7659:CFF::cff1_cs_interp_env_t::cff1_cs_interp_env_t\28hb_array_t\20const&\2c\20OT::cff1::accelerator_t\20const&\2c\20unsigned\20int\2c\20int\20const*\2c\20unsigned\20int\29 7660:CFF::biased_subrs_t>>::init\28CFF::Subrs>\20const*\29 7661:CFF::biased_subrs_t>>::init\28CFF::Subrs>\20const*\29 7662:CFF::FDSelect::get_fd\28unsigned\20int\29\20const 7663:CFF::FDSelect3_4\2c\20OT::IntType>::sentinel\28\29\20const 7664:CFF::FDSelect3_4\2c\20OT::IntType>::sanitize\28hb_sanitize_context_t*\2c\20unsigned\20int\29\20const 7665:CFF::FDSelect3_4\2c\20OT::IntType>::get_fd\28unsigned\20int\29\20const 7666:CFF::FDSelect0::sanitize\28hb_sanitize_context_t*\2c\20unsigned\20int\29\20const 7667:CFF::Charset::get_glyph\28unsigned\20int\2c\20unsigned\20int\29\20const 7668:CFF::CFF2FDSelect::get_fd\28unsigned\20int\29\20const 7669:ButtCapDashedCircleOp::ButtCapDashedCircleOp\28GrProcessorSet*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\29 7670:BlockIndexIterator::Last\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::First\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::Decrement\28SkBlockAllocator::Block\20const*\2c\20int\29\2c\20&SkTBlockList::GetItem\28SkBlockAllocator::Block\20const*\2c\20int\29>::begin\28\29\20const 7671:BlockIndexIterator::First\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::Last\28SkBlockAllocator::Block\20const*\29\2c\20&SkTBlockList::Increment\28SkBlockAllocator::Block\20const*\2c\20int\29\2c\20&SkTBlockList::GetItem\28SkBlockAllocator::Block\20const*\2c\20int\29>::Item::operator++\28\29 7672:AutoRestoreInverseness::~AutoRestoreInverseness\28\29 7673:AutoRestoreInverseness::AutoRestoreInverseness\28GrShape*\2c\20GrStyle\20const&\29 7674:AutoLayerForImageFilter::addLayer\28SkPaint\20const&\2c\20SkRect\20const*\2c\20bool\29 7675:AngleWinding\28SkOpSpanBase*\2c\20SkOpSpanBase*\2c\20int*\2c\20bool*\29 7676:AddIntersectTs\28SkOpContour*\2c\20SkOpContour*\2c\20SkOpCoincidence*\29 7677:ActiveEdgeList::replace\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20unsigned\20short\2c\20unsigned\20short\2c\20unsigned\20short\29 7678:ActiveEdgeList::remove\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20unsigned\20short\2c\20unsigned\20short\29 7679:ActiveEdgeList::insert\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20unsigned\20short\2c\20unsigned\20short\29 7680:ActiveEdgeList::allocate\28SkPoint\20const&\2c\20SkPoint\20const&\2c\20unsigned\20short\2c\20unsigned\20short\29 7681:AAT::trak::sanitize\28hb_sanitize_context_t*\29\20const 7682:AAT::mortmorx::sanitize\28hb_sanitize_context_t*\29\20const 7683:AAT::mortmorx::sanitize\28hb_sanitize_context_t*\29\20const 7684:AAT::ltag::sanitize\28hb_sanitize_context_t*\29\20const 7685:AAT::ltag::get_language\28unsigned\20int\29\20const 7686:AAT::feat::sanitize\28hb_sanitize_context_t*\29\20const 7687:AAT::ankr::sanitize\28hb_sanitize_context_t*\29\20const 7688:AAT::ankr::get_anchor\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29\20const 7689:AAT::TrackData::get_tracking\28void\20const*\2c\20float\29\20const 7690:AAT::Lookup>::get_value_or_null\28unsigned\20int\2c\20unsigned\20int\29\20const 7691:AAT::Lookup>::get_value\28unsigned\20int\2c\20unsigned\20int\29\20const 7692:AAT::Lookup>::get_value_or_null\28unsigned\20int\2c\20unsigned\20int\29\20const 7693:AAT::KerxTable::sanitize\28hb_sanitize_context_t*\29\20const 7694:AAT::KernPair\20const*\20hb_sorted_array_t::bsearch\28AAT::hb_glyph_pair_t\20const&\2c\20AAT::KernPair\20const*\29 7695:AAT::KernPair\20const&\20OT::SortedArrayOf>>::bsearch\28AAT::hb_glyph_pair_t\20const&\2c\20AAT::KernPair\20const&\29\20const 7696:AAT::ChainSubtable::apply\28AAT::hb_aat_apply_context_t*\29\20const 7697:AAT::ChainSubtable::apply\28AAT::hb_aat_apply_context_t*\29\20const 7698:xyzd50_to_hcl\28SkRGBA4f<\28SkAlphaType\292>\2c\20bool*\29 7699:void\20mergeT\28void\20const*\2c\20int\2c\20unsigned\20char\20const*\2c\20int\2c\20void*\29 7700:void\20mergeT\28void\20const*\2c\20int\2c\20unsigned\20char\20const*\2c\20int\2c\20void*\29 7701:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7702:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7703:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7704:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7705:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7706:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7707:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7708:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7709:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7710:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7711:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7712:void\20\28anonymous\20namespace\29::downsample_3_3<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7713:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7714:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7715:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7716:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7717:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7718:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7719:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7720:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7721:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7722:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7723:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7724:void\20\28anonymous\20namespace\29::downsample_3_2<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7725:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7726:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7727:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7728:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7729:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7730:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7731:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7732:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7733:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7734:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7735:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7736:void\20\28anonymous\20namespace\29::downsample_3_1<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7737:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7738:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7739:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7740:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7741:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7742:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7743:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7744:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7745:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7746:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7747:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7748:void\20\28anonymous\20namespace\29::downsample_2_3<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7749:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7750:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7751:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7752:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7753:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7754:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7755:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7756:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7757:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7758:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7759:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7760:void\20\28anonymous\20namespace\29::downsample_2_2<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7761:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7762:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7763:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7764:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7765:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7766:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7767:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7768:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7769:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7770:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7771:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7772:void\20\28anonymous\20namespace\29::downsample_2_1<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7773:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7774:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7775:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7776:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7777:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7778:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7779:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7780:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7781:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7782:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7783:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7784:void\20\28anonymous\20namespace\29::downsample_1_3<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7785:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_RGBA_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7786:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_F16F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7787:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_Alpha_F16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7788:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_8>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7789:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_88>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7790:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_8888>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7791:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_565>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7792:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_4444>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7793:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_16>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7794:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_1616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7795:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_16161616>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7796:void\20\28anonymous\20namespace\29::downsample_1_2<\28anonymous\20namespace\29::ColorTypeFilter_1010102>\28void*\2c\20void\20const*\2c\20unsigned\20long\2c\20int\29 7797:virtual\20thunk\20to\20std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29.1 7798:virtual\20thunk\20to\20std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29 7799:virtual\20thunk\20to\20std::__2::basic_istream>::~basic_istream\28\29.1 7800:virtual\20thunk\20to\20std::__2::basic_istream>::~basic_istream\28\29 7801:virtual\20thunk\20to\20std::__2::basic_iostream>::~basic_iostream\28\29.1 7802:virtual\20thunk\20to\20std::__2::basic_iostream>::~basic_iostream\28\29 7803:virtual\20thunk\20to\20GrTextureRenderTargetProxy::~GrTextureRenderTargetProxy\28\29.1 7804:virtual\20thunk\20to\20GrTextureRenderTargetProxy::~GrTextureRenderTargetProxy\28\29 7805:virtual\20thunk\20to\20GrTextureRenderTargetProxy::onUninstantiatedGpuMemorySize\28\29\20const 7806:virtual\20thunk\20to\20GrTextureRenderTargetProxy::instantiate\28GrResourceProvider*\29 7807:virtual\20thunk\20to\20GrTextureRenderTargetProxy::createSurface\28GrResourceProvider*\29\20const 7808:virtual\20thunk\20to\20GrTextureRenderTargetProxy::callbackDesc\28\29\20const 7809:virtual\20thunk\20to\20GrTextureProxy::~GrTextureProxy\28\29.1 7810:virtual\20thunk\20to\20GrTextureProxy::~GrTextureProxy\28\29 7811:virtual\20thunk\20to\20GrTextureProxy::onUninstantiatedGpuMemorySize\28\29\20const 7812:virtual\20thunk\20to\20GrTextureProxy::instantiate\28GrResourceProvider*\29 7813:virtual\20thunk\20to\20GrTextureProxy::getUniqueKey\28\29\20const 7814:virtual\20thunk\20to\20GrTextureProxy::createSurface\28GrResourceProvider*\29\20const 7815:virtual\20thunk\20to\20GrTextureProxy::callbackDesc\28\29\20const 7816:virtual\20thunk\20to\20GrTextureProxy::asTextureProxy\28\29\20const 7817:virtual\20thunk\20to\20GrTextureProxy::asTextureProxy\28\29 7818:virtual\20thunk\20to\20GrTexture::onGpuMemorySize\28\29\20const 7819:virtual\20thunk\20to\20GrTexture::computeScratchKey\28skgpu::ScratchKey*\29\20const 7820:virtual\20thunk\20to\20GrTexture::asTexture\28\29\20const 7821:virtual\20thunk\20to\20GrTexture::asTexture\28\29 7822:virtual\20thunk\20to\20GrRenderTargetProxy::~GrRenderTargetProxy\28\29.1 7823:virtual\20thunk\20to\20GrRenderTargetProxy::~GrRenderTargetProxy\28\29 7824:virtual\20thunk\20to\20GrRenderTargetProxy::onUninstantiatedGpuMemorySize\28\29\20const 7825:virtual\20thunk\20to\20GrRenderTargetProxy::instantiate\28GrResourceProvider*\29 7826:virtual\20thunk\20to\20GrRenderTargetProxy::createSurface\28GrResourceProvider*\29\20const 7827:virtual\20thunk\20to\20GrRenderTargetProxy::callbackDesc\28\29\20const 7828:virtual\20thunk\20to\20GrRenderTargetProxy::asRenderTargetProxy\28\29\20const 7829:virtual\20thunk\20to\20GrRenderTargetProxy::asRenderTargetProxy\28\29 7830:virtual\20thunk\20to\20GrRenderTarget::onRelease\28\29 7831:virtual\20thunk\20to\20GrRenderTarget::onAbandon\28\29 7832:virtual\20thunk\20to\20GrRenderTarget::asRenderTarget\28\29\20const 7833:virtual\20thunk\20to\20GrRenderTarget::asRenderTarget\28\29 7834:virtual\20thunk\20to\20GrGLTextureRenderTarget::~GrGLTextureRenderTarget\28\29.1 7835:virtual\20thunk\20to\20GrGLTextureRenderTarget::~GrGLTextureRenderTarget\28\29 7836:virtual\20thunk\20to\20GrGLTextureRenderTarget::onRelease\28\29 7837:virtual\20thunk\20to\20GrGLTextureRenderTarget::onGpuMemorySize\28\29\20const 7838:virtual\20thunk\20to\20GrGLTextureRenderTarget::onAbandon\28\29 7839:virtual\20thunk\20to\20GrGLTextureRenderTarget::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 7840:virtual\20thunk\20to\20GrGLTexture::~GrGLTexture\28\29.1 7841:virtual\20thunk\20to\20GrGLTexture::~GrGLTexture\28\29 7842:virtual\20thunk\20to\20GrGLTexture::onRelease\28\29 7843:virtual\20thunk\20to\20GrGLTexture::onAbandon\28\29 7844:virtual\20thunk\20to\20GrGLTexture::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 7845:virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::~GrGLSLFragmentShaderBuilder\28\29.1 7846:virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::~GrGLSLFragmentShaderBuilder\28\29 7847:virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::onFinalize\28\29 7848:virtual\20thunk\20to\20GrGLRenderTarget::~GrGLRenderTarget\28\29.1 7849:virtual\20thunk\20to\20GrGLRenderTarget::~GrGLRenderTarget\28\29 7850:virtual\20thunk\20to\20GrGLRenderTarget::onRelease\28\29 7851:virtual\20thunk\20to\20GrGLRenderTarget::onGpuMemorySize\28\29\20const 7852:virtual\20thunk\20to\20GrGLRenderTarget::onAbandon\28\29 7853:virtual\20thunk\20to\20GrGLRenderTarget::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 7854:virtual\20thunk\20to\20GrGLRenderTarget::backendFormat\28\29\20const 7855:vertices_dispose 7856:vertices_create 7857:unicodePositionBuffer_create 7858:typefaces_filterCoveredCodePoints 7859:typeface_create 7860:tt_vadvance_adjust 7861:tt_slot_init 7862:tt_size_request 7863:tt_size_init 7864:tt_size_done 7865:tt_sbit_decoder_load_png 7866:tt_sbit_decoder_load_compound 7867:tt_sbit_decoder_load_byte_aligned 7868:tt_sbit_decoder_load_bit_aligned 7869:tt_property_set 7870:tt_property_get 7871:tt_name_ascii_from_utf16 7872:tt_name_ascii_from_other 7873:tt_hadvance_adjust 7874:tt_glyph_load 7875:tt_get_var_blend 7876:tt_get_interface 7877:tt_get_glyph_name 7878:tt_get_cmap_info 7879:tt_get_advances 7880:tt_face_set_sbit_strike 7881:tt_face_load_strike_metrics 7882:tt_face_load_sbit_image 7883:tt_face_load_sbit 7884:tt_face_load_post 7885:tt_face_load_pclt 7886:tt_face_load_os2 7887:tt_face_load_name 7888:tt_face_load_maxp 7889:tt_face_load_kern 7890:tt_face_load_hmtx 7891:tt_face_load_hhea 7892:tt_face_load_head 7893:tt_face_load_gasp 7894:tt_face_load_font_dir 7895:tt_face_load_cpal 7896:tt_face_load_colr 7897:tt_face_load_cmap 7898:tt_face_load_bhed 7899:tt_face_load_any 7900:tt_face_init 7901:tt_face_get_paint_layers 7902:tt_face_get_paint 7903:tt_face_get_kerning 7904:tt_face_get_colr_layer 7905:tt_face_get_colr_glyph_paint 7906:tt_face_get_colorline_stops 7907:tt_face_get_color_glyph_clipbox 7908:tt_face_free_sbit 7909:tt_face_free_ps_names 7910:tt_face_free_name 7911:tt_face_free_cpal 7912:tt_face_free_colr 7913:tt_face_done 7914:tt_face_colr_blend_layer 7915:tt_driver_init 7916:tt_cmap_unicode_init 7917:tt_cmap_unicode_char_next 7918:tt_cmap_unicode_char_index 7919:tt_cmap_init 7920:tt_cmap8_validate 7921:tt_cmap8_get_info 7922:tt_cmap8_char_next 7923:tt_cmap8_char_index 7924:tt_cmap6_validate 7925:tt_cmap6_get_info 7926:tt_cmap6_char_next 7927:tt_cmap6_char_index 7928:tt_cmap4_validate 7929:tt_cmap4_init 7930:tt_cmap4_get_info 7931:tt_cmap4_char_next 7932:tt_cmap4_char_index 7933:tt_cmap2_validate 7934:tt_cmap2_get_info 7935:tt_cmap2_char_next 7936:tt_cmap2_char_index 7937:tt_cmap14_variants 7938:tt_cmap14_variant_chars 7939:tt_cmap14_validate 7940:tt_cmap14_init 7941:tt_cmap14_get_info 7942:tt_cmap14_done 7943:tt_cmap14_char_variants 7944:tt_cmap14_char_var_isdefault 7945:tt_cmap14_char_var_index 7946:tt_cmap14_char_next 7947:tt_cmap13_validate 7948:tt_cmap13_get_info 7949:tt_cmap13_char_next 7950:tt_cmap13_char_index 7951:tt_cmap12_validate 7952:tt_cmap12_get_info 7953:tt_cmap12_char_next 7954:tt_cmap12_char_index 7955:tt_cmap10_validate 7956:tt_cmap10_get_info 7957:tt_cmap10_char_next 7958:tt_cmap10_char_index 7959:tt_cmap0_validate 7960:tt_cmap0_get_info 7961:tt_cmap0_char_next 7962:tt_cmap0_char_index 7963:textStyle_setWordSpacing 7964:textStyle_setTextBaseline 7965:textStyle_setLocale 7966:textStyle_setLetterSpacing 7967:textStyle_setHeight 7968:textStyle_setHalfLeading 7969:textStyle_setForeground 7970:textStyle_setFontVariations 7971:textStyle_setFontStyle 7972:textStyle_setFontSize 7973:textStyle_setDecorationColor 7974:textStyle_setColor 7975:textStyle_setBackground 7976:textStyle_dispose 7977:textStyle_create 7978:textStyle_copy 7979:textStyle_clearFontFamilies 7980:textStyle_addShadow 7981:textStyle_addFontFeature 7982:textStyle_addFontFamilies 7983:textBoxList_getLength 7984:textBoxList_getBoxAtIndex 7985:textBoxList_dispose 7986:t2_hints_stems 7987:t2_hints_open 7988:t1_make_subfont 7989:t1_hints_stem 7990:t1_hints_open 7991:t1_decrypt 7992:t1_decoder_parse_metrics 7993:t1_decoder_init 7994:t1_decoder_done 7995:t1_cmap_unicode_init 7996:t1_cmap_unicode_char_next 7997:t1_cmap_unicode_char_index 7998:t1_cmap_std_done 7999:t1_cmap_std_char_next 8000:t1_cmap_standard_init 8001:t1_cmap_expert_init 8002:t1_cmap_custom_init 8003:t1_cmap_custom_done 8004:t1_cmap_custom_char_next 8005:t1_cmap_custom_char_index 8006:t1_builder_start_point 8007:swizzle_or_premul\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkImageInfo\20const&\2c\20void\20const*\2c\20unsigned\20long\2c\20SkColorSpaceXformSteps\20const&\29 8008:surface_renderPicturesOnWorker 8009:surface_renderPictures 8010:surface_rasterizeImage 8011:surface_onRenderComplete 8012:surface_destroy 8013:surface_create 8014:strutStyle_setLeading 8015:strutStyle_setHeight 8016:strutStyle_setHalfLeading 8017:strutStyle_setForceStrutHeight 8018:strutStyle_setFontStyle 8019:strutStyle_setFontFamilies 8020:strutStyle_dispose 8021:strutStyle_create 8022:string_read 8023:std::exception::what\28\29\20const 8024:std::bad_variant_access::what\28\29\20const 8025:std::bad_optional_access::what\28\29\20const 8026:std::bad_array_new_length::what\28\29\20const 8027:std::bad_alloc::what\28\29\20const 8028:std::__2::time_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20tm\20const*\2c\20char\2c\20char\29\20const 8029:std::__2::time_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20tm\20const*\2c\20char\2c\20char\29\20const 8030:std::__2::time_get>>::do_get_year\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 8031:std::__2::time_get>>::do_get_weekday\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 8032:std::__2::time_get>>::do_get_time\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 8033:std::__2::time_get>>::do_get_monthname\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 8034:std::__2::time_get>>::do_get_date\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 8035:std::__2::time_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\2c\20char\2c\20char\29\20const 8036:std::__2::time_get>>::do_get_year\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 8037:std::__2::time_get>>::do_get_weekday\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 8038:std::__2::time_get>>::do_get_time\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 8039:std::__2::time_get>>::do_get_monthname\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 8040:std::__2::time_get>>::do_get_date\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const 8041:std::__2::time_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\2c\20char\2c\20char\29\20const 8042:std::__2::numpunct::~numpunct\28\29 8043:std::__2::numpunct::do_truename\28\29\20const 8044:std::__2::numpunct::do_grouping\28\29\20const 8045:std::__2::numpunct::do_falsename\28\29\20const 8046:std::__2::numpunct::~numpunct\28\29 8047:std::__2::numpunct::do_truename\28\29\20const 8048:std::__2::numpunct::do_thousands_sep\28\29\20const 8049:std::__2::numpunct::do_grouping\28\29\20const 8050:std::__2::numpunct::do_falsename\28\29\20const 8051:std::__2::numpunct::do_decimal_point\28\29\20const 8052:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20void\20const*\29\20const 8053:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20unsigned\20long\29\20const 8054:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20unsigned\20long\20long\29\20const 8055:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\29\20const 8056:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\20long\29\20const 8057:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\20double\29\20const 8058:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20double\29\20const 8059:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20bool\29\20const 8060:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20void\20const*\29\20const 8061:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20unsigned\20long\29\20const 8062:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20unsigned\20long\20long\29\20const 8063:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20long\29\20const 8064:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20long\20long\29\20const 8065:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20long\20double\29\20const 8066:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20double\29\20const 8067:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20bool\29\20const 8068:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20void*&\29\20const 8069:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20short&\29\20const 8070:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20long\20long&\29\20const 8071:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20long&\29\20const 8072:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20double&\29\20const 8073:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long&\29\20const 8074:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20float&\29\20const 8075:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20double&\29\20const 8076:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20bool&\29\20const 8077:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20void*&\29\20const 8078:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20short&\29\20const 8079:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20long\20long&\29\20const 8080:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20long&\29\20const 8081:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20double&\29\20const 8082:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long&\29\20const 8083:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20float&\29\20const 8084:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20double&\29\20const 8085:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20bool&\29\20const 8086:std::__2::money_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29\20const 8087:std::__2::money_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\20double\29\20const 8088:std::__2::money_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20char\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29\20const 8089:std::__2::money_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20char\2c\20long\20double\29\20const 8090:std::__2::money_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\29\20const 8091:std::__2::money_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20double&\29\20const 8092:std::__2::money_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\29\20const 8093:std::__2::money_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20double&\29\20const 8094:std::__2::messages::do_get\28long\2c\20int\2c\20int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29\20const 8095:std::__2::messages::do_get\28long\2c\20int\2c\20int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29\20const 8096:std::__2::locale::id::__init\28\29 8097:std::__2::locale::__imp::~__imp\28\29 8098:std::__2::ios_base::~ios_base\28\29.1 8099:std::__2::ctype::do_widen\28char\20const*\2c\20char\20const*\2c\20wchar_t*\29\20const 8100:std::__2::ctype::do_toupper\28wchar_t\29\20const 8101:std::__2::ctype::do_toupper\28wchar_t*\2c\20wchar_t\20const*\29\20const 8102:std::__2::ctype::do_tolower\28wchar_t\29\20const 8103:std::__2::ctype::do_tolower\28wchar_t*\2c\20wchar_t\20const*\29\20const 8104:std::__2::ctype::do_scan_not\28unsigned\20long\2c\20wchar_t\20const*\2c\20wchar_t\20const*\29\20const 8105:std::__2::ctype::do_scan_is\28unsigned\20long\2c\20wchar_t\20const*\2c\20wchar_t\20const*\29\20const 8106:std::__2::ctype::do_narrow\28wchar_t\2c\20char\29\20const 8107:std::__2::ctype::do_narrow\28wchar_t\20const*\2c\20wchar_t\20const*\2c\20char\2c\20char*\29\20const 8108:std::__2::ctype::do_is\28wchar_t\20const*\2c\20wchar_t\20const*\2c\20unsigned\20long*\29\20const 8109:std::__2::ctype::do_is\28unsigned\20long\2c\20wchar_t\29\20const 8110:std::__2::ctype::~ctype\28\29 8111:std::__2::ctype::do_widen\28char\20const*\2c\20char\20const*\2c\20char*\29\20const 8112:std::__2::ctype::do_toupper\28char\29\20const 8113:std::__2::ctype::do_toupper\28char*\2c\20char\20const*\29\20const 8114:std::__2::ctype::do_tolower\28char\29\20const 8115:std::__2::ctype::do_tolower\28char*\2c\20char\20const*\29\20const 8116:std::__2::ctype::do_narrow\28char\2c\20char\29\20const 8117:std::__2::ctype::do_narrow\28char\20const*\2c\20char\20const*\2c\20char\2c\20char*\29\20const 8118:std::__2::collate::do_transform\28wchar_t\20const*\2c\20wchar_t\20const*\29\20const 8119:std::__2::collate::do_hash\28wchar_t\20const*\2c\20wchar_t\20const*\29\20const 8120:std::__2::collate::do_compare\28wchar_t\20const*\2c\20wchar_t\20const*\2c\20wchar_t\20const*\2c\20wchar_t\20const*\29\20const 8121:std::__2::collate::do_transform\28char\20const*\2c\20char\20const*\29\20const 8122:std::__2::collate::do_hash\28char\20const*\2c\20char\20const*\29\20const 8123:std::__2::collate::do_compare\28char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\29\20const 8124:std::__2::codecvt::~codecvt\28\29 8125:std::__2::codecvt::do_unshift\28__mbstate_t&\2c\20char*\2c\20char*\2c\20char*&\29\20const 8126:std::__2::codecvt::do_out\28__mbstate_t&\2c\20wchar_t\20const*\2c\20wchar_t\20const*\2c\20wchar_t\20const*&\2c\20char*\2c\20char*\2c\20char*&\29\20const 8127:std::__2::codecvt::do_max_length\28\29\20const 8128:std::__2::codecvt::do_length\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20unsigned\20long\29\20const 8129:std::__2::codecvt::do_in\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*&\2c\20wchar_t*\2c\20wchar_t*\2c\20wchar_t*&\29\20const 8130:std::__2::codecvt::do_encoding\28\29\20const 8131:std::__2::codecvt::do_length\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20unsigned\20long\29\20const 8132:std::__2::basic_stringbuf\2c\20std::__2::allocator>::~basic_stringbuf\28\29.1 8133:std::__2::basic_stringbuf\2c\20std::__2::allocator>::underflow\28\29 8134:std::__2::basic_stringbuf\2c\20std::__2::allocator>::seekpos\28std::__2::fpos<__mbstate_t>\2c\20unsigned\20int\29 8135:std::__2::basic_stringbuf\2c\20std::__2::allocator>::seekoff\28long\20long\2c\20std::__2::ios_base::seekdir\2c\20unsigned\20int\29 8136:std::__2::basic_stringbuf\2c\20std::__2::allocator>::pbackfail\28int\29 8137:std::__2::basic_stringbuf\2c\20std::__2::allocator>::overflow\28int\29 8138:std::__2::basic_streambuf>::~basic_streambuf\28\29.1 8139:std::__2::basic_streambuf>::xsputn\28char\20const*\2c\20long\29 8140:std::__2::basic_streambuf>::xsgetn\28char*\2c\20long\29 8141:std::__2::basic_streambuf>::uflow\28\29 8142:std::__2::basic_streambuf>::setbuf\28char*\2c\20long\29 8143:std::__2::basic_streambuf>::seekpos\28std::__2::fpos<__mbstate_t>\2c\20unsigned\20int\29 8144:std::__2::basic_streambuf>::seekoff\28long\20long\2c\20std::__2::ios_base::seekdir\2c\20unsigned\20int\29 8145:std::__2::bad_function_call::what\28\29\20const 8146:std::__2::__time_get_c_storage::__x\28\29\20const 8147:std::__2::__time_get_c_storage::__weeks\28\29\20const 8148:std::__2::__time_get_c_storage::__r\28\29\20const 8149:std::__2::__time_get_c_storage::__months\28\29\20const 8150:std::__2::__time_get_c_storage::__c\28\29\20const 8151:std::__2::__time_get_c_storage::__am_pm\28\29\20const 8152:std::__2::__time_get_c_storage::__X\28\29\20const 8153:std::__2::__time_get_c_storage::__x\28\29\20const 8154:std::__2::__time_get_c_storage::__weeks\28\29\20const 8155:std::__2::__time_get_c_storage::__r\28\29\20const 8156:std::__2::__time_get_c_storage::__months\28\29\20const 8157:std::__2::__time_get_c_storage::__c\28\29\20const 8158:std::__2::__time_get_c_storage::__am_pm\28\29\20const 8159:std::__2::__time_get_c_storage::__X\28\29\20const 8160:std::__2::__shared_ptr_pointer<_IO_FILE*\2c\20void\20\28*\29\28_IO_FILE*\29\2c\20std::__2::allocator<_IO_FILE>>::__on_zero_shared\28\29 8161:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 8162:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 8163:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 8164:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 8165:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 8166:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 8167:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 8168:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 8169:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 8170:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 8171:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 8172:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 8173:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 8174:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 8175:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 8176:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 8177:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 8178:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 8179:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 8180:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 8181:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 8182:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 8183:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 8184:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 8185:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 8186:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::operator\28\29\28skia::textlayout::Cluster\20const*&&\2c\20unsigned\20long&&\2c\20bool&&\29 8187:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::__clone\28std::__2::__function::__base*\29\20const 8188:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::__clone\28\29\20const 8189:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::operator\28\29\28skia::textlayout::Cluster\20const*&&\2c\20unsigned\20long&&\2c\20bool&&\29 8190:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::__clone\28std::__2::__function::__base*\29\20const 8191:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Cluster\20const*\2c\20unsigned\20long\2c\20bool\29>::__clone\28\29\20const 8192:std::__2::__function::__func\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0\2c\20std::__2::allocator\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 8193:std::__2::__function::__func\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0\2c\20std::__2::allocator\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 8194:std::__2::__function::__func\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0\2c\20std::__2::allocator\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 8195:std::__2::__function::__func\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 8196:std::__2::__function::__func\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 8197:std::__2::__function::__func\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\2c\20std::__2::vector>&\29\20const::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 8198:std::__2::__function::__func>&\29::$_0\2c\20std::__2::allocator>&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 8199:std::__2::__function::__func>&\29::$_0\2c\20std::__2::allocator>&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 8200:std::__2::__function::__func>&\29::$_0\2c\20std::__2::allocator>&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 8201:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 8202:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 8203:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 8204:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 8205:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 8206:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 8207:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 8208:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 8209:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 8210:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 8211:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 8212:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 8213:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 8214:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 8215:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 8216:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 8217:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 8218:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 8219:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 8220:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 8221:std::__2::__function::__func\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 8222:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 8223:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 8224:std::__2::__function::__func\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 8225:std::__2::__function::__func\20const&\29::$_0\2c\20std::__2::allocator\20const&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::operator\28\29\28skia::textlayout::Run\20const*&&\2c\20float&&\2c\20skia::textlayout::SkRange&&\2c\20float*&&\29 8226:std::__2::__function::__func\20const&\29::$_0\2c\20std::__2::allocator\20const&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28std::__2::__function::__base\2c\20float*\29>*\29\20const 8227:std::__2::__function::__func\20const&\29::$_0\2c\20std::__2::allocator\20const&\29::$_0>\2c\20bool\20\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29>::__clone\28\29\20const 8228:std::__2::__function::__func\20const&\29::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\20const&\29::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29 8229:std::__2::__function::__func\20const&\29::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\20const&\29::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>*\29\20const 8230:std::__2::__function::__func\20const&\29::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\2c\20std::__2::allocator\20const&\29::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29>::__clone\28\29\20const 8231:std::__2::__function::__func\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkPoint\2c\20SkPoint\2c\20skia::textlayout::InternalLineMetrics\2c\20bool\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20skia::textlayout::SkRange&&\2c\20skia::textlayout::SkRange&&\2c\20skia::textlayout::SkRange&&\2c\20skia::textlayout::SkRange&&\2c\20float&&\2c\20unsigned\20long&&\2c\20unsigned\20long&&\2c\20SkPoint&&\2c\20SkPoint&&\2c\20skia::textlayout::InternalLineMetrics&&\2c\20bool&&\29 8232:std::__2::__function::__func\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkPoint\2c\20SkPoint\2c\20skia::textlayout::InternalLineMetrics\2c\20bool\29>::__clone\28std::__2::__function::__base\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkPoint\2c\20SkPoint\2c\20skia::textlayout::InternalLineMetrics\2c\20bool\29>*\29\20const 8233:std::__2::__function::__func\2c\20void\20\28skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20skia::textlayout::SkRange\2c\20float\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkPoint\2c\20SkPoint\2c\20skia::textlayout::InternalLineMetrics\2c\20bool\29>::__clone\28\29\20const 8234:std::__2::__function::__func\2c\20void\20\28skia::textlayout::Cluster*\29>::operator\28\29\28skia::textlayout::Cluster*&&\29 8235:std::__2::__function::__func\2c\20void\20\28skia::textlayout::Cluster*\29>::__clone\28std::__2::__function::__base*\29\20const 8236:std::__2::__function::__func\2c\20void\20\28skia::textlayout::Cluster*\29>::__clone\28\29\20const 8237:std::__2::__function::__func\2c\20void\20\28skia::textlayout::ParagraphImpl*\2c\20char\20const*\2c\20bool\29>::__clone\28std::__2::__function::__base*\29\20const 8238:std::__2::__function::__func\2c\20void\20\28skia::textlayout::ParagraphImpl*\2c\20char\20const*\2c\20bool\29>::__clone\28\29\20const 8239:std::__2::__function::__func\2c\20float\20\28skia::textlayout::SkRange\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29>::operator\28\29\28skia::textlayout::SkRange&&\2c\20SkSpan&&\2c\20float&\2c\20unsigned\20long&&\2c\20unsigned\20char&&\29 8240:std::__2::__function::__func\2c\20float\20\28skia::textlayout::SkRange\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29>::__clone\28std::__2::__function::__base\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29>*\29\20const 8241:std::__2::__function::__func\2c\20float\20\28skia::textlayout::SkRange\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29>::__clone\28\29\20const 8242:std::__2::__function::__func\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29\2c\20std::__2::allocator\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29>\2c\20void\20\28skia::textlayout::Block\2c\20skia_private::TArray\29>::operator\28\29\28skia::textlayout::Block&&\2c\20skia_private::TArray&&\29 8243:std::__2::__function::__func\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29\2c\20std::__2::allocator\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29>\2c\20void\20\28skia::textlayout::Block\2c\20skia_private::TArray\29>::__clone\28std::__2::__function::__base\29>*\29\20const 8244:std::__2::__function::__func\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29\2c\20std::__2::allocator\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29>\2c\20void\20\28skia::textlayout::Block\2c\20skia_private::TArray\29>::__clone\28\29\20const 8245:std::__2::__function::__func\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29::operator\28\29\28skia::textlayout::Block\2c\20skia_private::TArray\29\20const::'lambda'\28sk_sp\29\2c\20std::__2::allocator\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29::operator\28\29\28skia::textlayout::Block\2c\20skia_private::TArray\29\20const::'lambda'\28sk_sp\29>\2c\20skia::textlayout::OneLineShaper::Resolved\20\28sk_sp\29>::operator\28\29\28sk_sp&&\29 8246:std::__2::__function::__func\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29::operator\28\29\28skia::textlayout::Block\2c\20skia_private::TArray\29\20const::'lambda'\28sk_sp\29\2c\20std::__2::allocator\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29::operator\28\29\28skia::textlayout::Block\2c\20skia_private::TArray\29\20const::'lambda'\28sk_sp\29>\2c\20skia::textlayout::OneLineShaper::Resolved\20\28sk_sp\29>::__clone\28std::__2::__function::__base\29>*\29\20const 8247:std::__2::__function::__func\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29::operator\28\29\28skia::textlayout::Block\2c\20skia_private::TArray\29\20const::'lambda'\28sk_sp\29\2c\20std::__2::allocator\2c\20SkSpan\2c\20float&\2c\20unsigned\20long\2c\20unsigned\20char\29\20const::'lambda'\28skia::textlayout::Block\2c\20skia_private::TArray\29::operator\28\29\28skia::textlayout::Block\2c\20skia_private::TArray\29\20const::'lambda'\28sk_sp\29>\2c\20skia::textlayout::OneLineShaper::Resolved\20\28sk_sp\29>::__clone\28\29\20const 8248:std::__2::__function::__func\2c\20void\20\28skia::textlayout::SkRange\29>::operator\28\29\28skia::textlayout::SkRange&&\29 8249:std::__2::__function::__func\2c\20void\20\28skia::textlayout::SkRange\29>::__clone\28std::__2::__function::__base\29>*\29\20const 8250:std::__2::__function::__func\2c\20void\20\28skia::textlayout::SkRange\29>::__clone\28\29\20const 8251:std::__2::__function::__func\2c\20void\20\28sktext::gpu::AtlasSubRun\20const*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20sktext::gpu::RendererData\29>::operator\28\29\28sktext::gpu::AtlasSubRun\20const*&&\2c\20SkPoint&&\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20sktext::gpu::RendererData&&\29 8252:std::__2::__function::__func\2c\20void\20\28sktext::gpu::AtlasSubRun\20const*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20sktext::gpu::RendererData\29>::__clone\28std::__2::__function::__base\2c\20sktext::gpu::RendererData\29>*\29\20const 8253:std::__2::__function::__func\2c\20void\20\28sktext::gpu::AtlasSubRun\20const*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20sktext::gpu::RendererData\29>::__clone\28\29\20const 8254:std::__2::__function::__func\2c\20void\20\28void*\2c\20void\20const*\29>::~__func\28\29.1 8255:std::__2::__function::__func\2c\20void\20\28void*\2c\20void\20const*\29>::operator\28\29\28void*&&\2c\20void\20const*&&\29 8256:std::__2::__function::__func\2c\20void\20\28void*\2c\20void\20const*\29>::destroy_deallocate\28\29 8257:std::__2::__function::__func\2c\20void\20\28void*\2c\20void\20const*\29>::destroy\28\29 8258:std::__2::__function::__func\2c\20void\20\28void*\2c\20void\20const*\29>::__clone\28std::__2::__function::__base*\29\20const 8259:std::__2::__function::__func\2c\20void\20\28void*\2c\20void\20const*\29>::__clone\28\29\20const 8260:std::__2::__function::__func\2c\20void\20\28\29>::operator\28\29\28\29 8261:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 8262:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28\29\20const 8263:std::__2::__function::__func\2c\20void\20\28\29>::operator\28\29\28\29 8264:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 8265:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28\29\20const 8266:std::__2::__function::__func\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::operator\28\29\28GrSurfaceProxy*&&\2c\20skgpu::Mipmapped&&\29 8267:std::__2::__function::__func\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28std::__2::__function::__base*\29\20const 8268:std::__2::__function::__func\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28\29\20const 8269:std::__2::__function::__func>\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0\2c\20std::__2::allocator>\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::operator\28\29\28GrSurfaceProxy*&&\2c\20skgpu::Mipmapped&&\29 8270:std::__2::__function::__func>\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0\2c\20std::__2::allocator>\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28std::__2::__function::__base*\29\20const 8271:std::__2::__function::__func>\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0\2c\20std::__2::allocator>\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28\29\20const 8272:std::__2::__function::__func>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0\2c\20std::__2::allocator>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::operator\28\29\28GrSurfaceProxy*&&\2c\20skgpu::Mipmapped&&\29 8273:std::__2::__function::__func>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0\2c\20std::__2::allocator>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28std::__2::__function::__base*\29\20const 8274:std::__2::__function::__func>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0\2c\20std::__2::allocator>\2c\20bool\2c\20GrProcessorSet::Analysis\20const&\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrTextureResolveManager\2c\20GrCaps\20const&\29::$_0>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28\29\20const 8275:std::__2::__function::__func\2c\20void\20\28sktext::gpu::AtlasSubRun\20const*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20sktext::gpu::RendererData\29>::operator\28\29\28sktext::gpu::AtlasSubRun\20const*&&\2c\20SkPoint&&\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20sktext::gpu::RendererData&&\29 8276:std::__2::__function::__func\2c\20void\20\28sktext::gpu::AtlasSubRun\20const*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20sktext::gpu::RendererData\29>::__clone\28std::__2::__function::__base\2c\20sktext::gpu::RendererData\29>*\29\20const 8277:std::__2::__function::__func\2c\20void\20\28sktext::gpu::AtlasSubRun\20const*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20sktext::gpu::RendererData\29>::__clone\28\29\20const 8278:std::__2::__function::__func\2c\20std::__2::tuple\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>::operator\28\29\28sktext::gpu::GlyphVector*&&\2c\20int&&\2c\20int&&\2c\20skgpu::MaskFormat&&\2c\20int&&\29 8279:std::__2::__function::__func\2c\20std::__2::tuple\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>::__clone\28std::__2::__function::__base\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>*\29\20const 8280:std::__2::__function::__func\2c\20std::__2::tuple\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>::__clone\28\29\20const 8281:std::__2::__function::__func>\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\29::$_0\2c\20std::__2::allocator>\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\29::$_0>\2c\20bool\20\28GrSurfaceProxy\20const*\29>::operator\28\29\28GrSurfaceProxy\20const*&&\29 8282:std::__2::__function::__func>\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\29::$_0\2c\20std::__2::allocator>\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\29::$_0>\2c\20bool\20\28GrSurfaceProxy\20const*\29>::__clone\28std::__2::__function::__base*\29\20const 8283:std::__2::__function::__func>\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\29::$_0\2c\20std::__2::allocator>\2c\20SkIRect\20const&\2c\20SkMatrix\20const&\2c\20SkPath\20const&\29::$_0>\2c\20bool\20\28GrSurfaceProxy\20const*\29>::__clone\28\29\20const 8284:std::__2::__function::__func\2c\20void\20\28int\2c\20char\20const*\29>::operator\28\29\28int&&\2c\20char\20const*&&\29 8285:std::__2::__function::__func\2c\20void\20\28int\2c\20char\20const*\29>::__clone\28std::__2::__function::__base*\29\20const 8286:std::__2::__function::__func\2c\20void\20\28int\2c\20char\20const*\29>::__clone\28\29\20const 8287:std::__2::__function::__func\28GrOp\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29\2c\20std::__2::allocator\28GrOp\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28std::__2::__function::__base*\29\20const 8288:std::__2::__function::__func\28GrOp\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29\2c\20std::__2::allocator\28GrOp\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28\29\20const 8289:std::__2::__function::__func\28GrFragmentProcessor\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29\2c\20std::__2::allocator\28GrFragmentProcessor\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28std::__2::__function::__base*\29\20const 8290:std::__2::__function::__func\28GrFragmentProcessor\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29\2c\20std::__2::allocator\28GrFragmentProcessor\20const*\2c\20GrSurfaceProxy\20const*\29::'lambda'\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>\2c\20void\20\28GrSurfaceProxy*\2c\20skgpu::Mipmapped\29>::__clone\28\29\20const 8291:std::__2::__function::__func<\28anonymous\20namespace\29::render_sw_mask\28GrRecordingContext*\2c\20SkIRect\20const&\2c\20skgpu::ganesh::ClipStack::Element\20const**\2c\20int\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::render_sw_mask\28GrRecordingContext*\2c\20SkIRect\20const&\2c\20skgpu::ganesh::ClipStack::Element\20const**\2c\20int\29::$_0>\2c\20void\20\28\29>::operator\28\29\28\29 8292:std::__2::__function::__func<\28anonymous\20namespace\29::render_sw_mask\28GrRecordingContext*\2c\20SkIRect\20const&\2c\20skgpu::ganesh::ClipStack::Element\20const**\2c\20int\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::render_sw_mask\28GrRecordingContext*\2c\20SkIRect\20const&\2c\20skgpu::ganesh::ClipStack::Element\20const**\2c\20int\29::$_0>\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 8293:std::__2::__function::__func<\28anonymous\20namespace\29::render_sw_mask\28GrRecordingContext*\2c\20SkIRect\20const&\2c\20skgpu::ganesh::ClipStack::Element\20const**\2c\20int\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::render_sw_mask\28GrRecordingContext*\2c\20SkIRect\20const&\2c\20skgpu::ganesh::ClipStack::Element\20const**\2c\20int\29::$_0>\2c\20void\20\28\29>::__clone\28\29\20const 8294:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_1\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_1>\2c\20void\20\28\29>::operator\28\29\28\29 8295:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_1\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_1>\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 8296:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_1\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_1>\2c\20void\20\28\29>::__clone\28\29\20const 8297:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0>\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 8298:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint_bounds\28SkMatrix*\2c\20SkRect*\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0>\2c\20void\20\28\29>::__clone\28\29\20const 8299:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0>\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 8300:std::__2::__function::__func<\28anonymous\20namespace\29::colrv1_traverse_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::colrv1_traverse_paint\28SkCanvas*\2c\20SkSpan\20const&\2c\20unsigned\20int\2c\20FT_FaceRec_*\2c\20FT_Opaque_Paint_\2c\20skia_private::THashSet*\29::$_0>\2c\20void\20\28\29>::__clone\28\29\20const 8301:std::__2::__function::__func<\28anonymous\20namespace\29::MeshOp::visitProxies\28std::__2::function\20const&\29\20const::'lambda'\28GrTextureEffect\20const&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshOp::visitProxies\28std::__2::function\20const&\29\20const::'lambda'\28GrTextureEffect\20const&\29>\2c\20void\20\28GrTextureEffect\20const&\29>::operator\28\29\28GrTextureEffect\20const&\29 8302:std::__2::__function::__func<\28anonymous\20namespace\29::MeshOp::visitProxies\28std::__2::function\20const&\29\20const::'lambda'\28GrTextureEffect\20const&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshOp::visitProxies\28std::__2::function\20const&\29\20const::'lambda'\28GrTextureEffect\20const&\29>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 8303:std::__2::__function::__func<\28anonymous\20namespace\29::MeshOp::visitProxies\28std::__2::function\20const&\29\20const::'lambda'\28GrTextureEffect\20const&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshOp::visitProxies\28std::__2::function\20const&\29\20const::'lambda'\28GrTextureEffect\20const&\29>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28\29\20const 8304:std::__2::__function::__func<\28anonymous\20namespace\29::MeshOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29::$_0>\2c\20void\20\28GrTextureEffect\20const&\29>::operator\28\29\28GrTextureEffect\20const&\29 8305:std::__2::__function::__func<\28anonymous\20namespace\29::MeshOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29::$_0>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 8306:std::__2::__function::__func<\28anonymous\20namespace\29::MeshOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29::$_0\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29::$_0>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28\29\20const 8307:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::MeshGP\28sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28GrTextureEffect\20const&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::MeshGP\28sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28GrTextureEffect\20const&\29>\2c\20void\20\28GrTextureEffect\20const&\29>::operator\28\29\28GrTextureEffect\20const&\29 8308:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::MeshGP\28sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28GrTextureEffect\20const&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::MeshGP\28sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28GrTextureEffect\20const&\29>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 8309:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::MeshGP\28sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28GrTextureEffect\20const&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::MeshGP\28sk_sp\2c\20sk_sp\2c\20SkMatrix\20const&\2c\20std::__2::optional>\20const&\2c\20bool\2c\20sk_sp\2c\20SkSpan>>\29::'lambda'\28GrTextureEffect\20const&\29>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28\29\20const 8310:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::operator\28\29\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29 8311:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28std::__2::__function::__base*\29\20const 8312:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28\29\20const 8313:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::operator\28\29\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29 8314:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28std::__2::__function::__base*\29\20const 8315:std::__2::__function::__func<\28anonymous\20namespace\29::MeshGP::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29\2c\20std::__2::allocator<\28anonymous\20namespace\29::MeshGP::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29::'lambda'\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28\29\20const 8316:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28\29>::~__func\28\29.1 8317:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28\29>::operator\28\29\28\29 8318:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28\29>::destroy_deallocate\28\29 8319:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28\29>::destroy\28\29 8320:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 8321:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28\29>::__clone\28\29\20const 8322:std::__2::__function::__func\2c\20void\20\28int\2c\20char\20const*\29>::operator\28\29\28int&&\2c\20char\20const*&&\29 8323:std::__2::__function::__func\2c\20void\20\28int\2c\20char\20const*\29>::__clone\28std::__2::__function::__base*\29\20const 8324:std::__2::__function::__func\2c\20void\20\28int\2c\20char\20const*\29>::__clone\28\29\20const 8325:std::__2::__function::__func\2c\20void\20\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29>::operator\28\29\28unsigned\20long&&\2c\20unsigned\20long&&\2c\20unsigned\20long&&\2c\20unsigned\20long&&\29 8326:std::__2::__function::__func\2c\20void\20\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29>::__clone\28std::__2::__function::__base*\29\20const 8327:std::__2::__function::__func\2c\20void\20\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29>::__clone\28\29\20const 8328:std::__2::__function::__func\2c\20void\20\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29>::__clone\28std::__2::__function::__base*\29\20const 8329:std::__2::__function::__func\2c\20void\20\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29>::__clone\28\29\20const 8330:std::__2::__function::__func\2c\20void\20\28SkVertices\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\2c\20float\2c\20float\2c\20bool\29>::operator\28\29\28SkVertices\20const*&&\2c\20SkBlendMode&&\2c\20SkPaint\20const&\2c\20float&&\2c\20float&&\2c\20bool&&\29 8331:std::__2::__function::__func\2c\20void\20\28SkVertices\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\2c\20float\2c\20float\2c\20bool\29>::__clone\28std::__2::__function::__base*\29\20const 8332:std::__2::__function::__func\2c\20void\20\28SkVertices\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\2c\20float\2c\20float\2c\20bool\29>::__clone\28\29\20const 8333:std::__2::__function::__func\2c\20void\20\28SkIRect\20const&\29>::operator\28\29\28SkIRect\20const&\29 8334:std::__2::__function::__func\2c\20void\20\28SkIRect\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 8335:std::__2::__function::__func\2c\20void\20\28SkIRect\20const&\29>::__clone\28\29\20const 8336:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::~__func\28\29.1 8337:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::operator\28\29\28GrResourceProvider*&&\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29 8338:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::destroy_deallocate\28\29 8339:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::destroy\28\29 8340:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 8341:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28\29\20const 8342:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::~__func\28\29.1 8343:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::operator\28\29\28GrResourceProvider*&&\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29 8344:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::destroy_deallocate\28\29 8345:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::destroy\28\29 8346:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 8347:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28\29\20const 8348:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::~__func\28\29.1 8349:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::operator\28\29\28GrResourceProvider*&&\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29 8350:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::destroy_deallocate\28\29 8351:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::destroy\28\29 8352:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 8353:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28\29\20const 8354:std::__2::__function::__func&\29>&\2c\20bool\29::$_0\2c\20std::__2::allocator&\29>&\2c\20bool\29::$_0>\2c\20bool\20\28GrTextureProxy*\2c\20SkIRect\2c\20GrColorType\2c\20void\20const*\2c\20unsigned\20long\29>::operator\28\29\28GrTextureProxy*&&\2c\20SkIRect&&\2c\20GrColorType&&\2c\20void\20const*&&\2c\20unsigned\20long&&\29 8355:std::__2::__function::__func&\29>&\2c\20bool\29::$_0\2c\20std::__2::allocator&\29>&\2c\20bool\29::$_0>\2c\20bool\20\28GrTextureProxy*\2c\20SkIRect\2c\20GrColorType\2c\20void\20const*\2c\20unsigned\20long\29>::__clone\28std::__2::__function::__base*\29\20const 8356:std::__2::__function::__func&\29>&\2c\20bool\29::$_0\2c\20std::__2::allocator&\29>&\2c\20bool\29::$_0>\2c\20bool\20\28GrTextureProxy*\2c\20SkIRect\2c\20GrColorType\2c\20void\20const*\2c\20unsigned\20long\29>::__clone\28\29\20const 8357:std::__2::__function::__func*\29::$_0\2c\20std::__2::allocator*\29::$_0>\2c\20void\20\28GrBackendTexture\29>::operator\28\29\28GrBackendTexture&&\29 8358:std::__2::__function::__func*\29::$_0\2c\20std::__2::allocator*\29::$_0>\2c\20void\20\28GrBackendTexture\29>::__clone\28\29\20const 8359:std::__2::__function::__func\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::operator\28\29\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29 8360:std::__2::__function::__func\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28std::__2::__function::__base*\29\20const 8361:std::__2::__function::__func\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28\29\20const 8362:std::__2::__function::__func\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::operator\28\29\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29 8363:std::__2::__function::__func\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28std::__2::__function::__base*\29\20const 8364:std::__2::__function::__func\2c\20void\20\28GrFragmentProcessor\20const&\2c\20GrFragmentProcessor::ProgramImpl&\29>::__clone\28\29\20const 8365:std::__2::__function::__func\2c\20void\20\28GrTextureEffect\20const&\29>::operator\28\29\28GrTextureEffect\20const&\29 8366:std::__2::__function::__func\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 8367:std::__2::__function::__func\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28\29\20const 8368:std::__2::__function::__func\2c\20void\20\28\29>::operator\28\29\28\29 8369:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const 8370:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28\29\20const 8371:std::__2::__function::__func\20const&\29\20const::$_0\2c\20std::__2::allocator\20const&\29\20const::$_0>\2c\20void\20\28GrTextureEffect\20const&\29>::operator\28\29\28GrTextureEffect\20const&\29 8372:std::__2::__function::__func\20const&\29\20const::$_0\2c\20std::__2::allocator\20const&\29\20const::$_0>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 8373:std::__2::__function::__func\20const&\29\20const::$_0\2c\20std::__2::allocator\20const&\29\20const::$_0>\2c\20void\20\28GrTextureEffect\20const&\29>::__clone\28\29\20const 8374:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::operator\28\29\28GrResourceProvider*&&\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29 8375:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28std::__2::__function::__base*\29\20const 8376:std::__2::__function::__func\2c\20GrSurfaceProxy::LazyCallbackResult\20\28GrResourceProvider*\2c\20GrSurfaceProxy::LazySurfaceDesc\20const&\29>::__clone\28\29\20const 8377:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::~__func\28\29.1 8378:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::__clone\28std::__2::__function::__base&\29>*\29\20const 8379:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::__clone\28\29\20const 8380:std::__2::__function::__func\2c\20void\20\28std::__2::function&\29>::~__func\28\29.1 8381:std::__2::__function::__func\2c\20void\20\28std::__2::function&\29>::__clone\28std::__2::__function::__base&\29>*\29\20const 8382:std::__2::__function::__func\2c\20void\20\28std::__2::function&\29>::__clone\28\29\20const 8383:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::operator\28\29\28std::__2::function&\29 8384:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::__clone\28std::__2::__function::__base&\29>*\29\20const 8385:std::__2::__function::__func&\29\2c\20std::__2::allocator&\29>\2c\20void\20\28std::__2::function&\29>::__clone\28\29\20const 8386:stackSave 8387:stackRestore 8388:stackAlloc 8389:srgb_to_hwb\28SkRGBA4f<\28SkAlphaType\292>\2c\20bool*\29 8390:srcover_p\28unsigned\20char\2c\20unsigned\20char\29 8391:sn_write 8392:sktext::gpu::post_purge_blob_message\28unsigned\20int\2c\20unsigned\20int\29 8393:sktext::gpu::TextBlob::~TextBlob\28\29.1 8394:sktext::gpu::SlugImpl::~SlugImpl\28\29.1 8395:sktext::gpu::SlugImpl::sourceBounds\28\29\20const 8396:sktext::gpu::SlugImpl::sourceBoundsWithOrigin\28\29\20const 8397:sktext::gpu::SlugImpl::doFlatten\28SkWriteBuffer&\29\20const 8398:sktext::gpu::SDFMaskFilterImpl::getTypeName\28\29\20const 8399:sktext::gpu::SDFMaskFilterImpl::filterMask\28SkMaskBuilder*\2c\20SkMask\20const&\2c\20SkMatrix\20const&\2c\20SkIPoint*\29\20const 8400:sktext::gpu::SDFMaskFilterImpl::computeFastBounds\28SkRect\20const&\2c\20SkRect*\29\20const 8401:skif::\28anonymous\20namespace\29::RasterBackend::~RasterBackend\28\29 8402:skif::\28anonymous\20namespace\29::RasterBackend::makeImage\28SkIRect\20const&\2c\20sk_sp\29\20const 8403:skif::\28anonymous\20namespace\29::RasterBackend::makeDevice\28SkISize\2c\20sk_sp\2c\20SkSurfaceProps\20const*\29\20const 8404:skif::\28anonymous\20namespace\29::RasterBackend::getCachedBitmap\28SkBitmap\20const&\29\20const 8405:skif::\28anonymous\20namespace\29::GaneshBackend::makeImage\28SkIRect\20const&\2c\20sk_sp\29\20const 8406:skif::\28anonymous\20namespace\29::GaneshBackend::makeDevice\28SkISize\2c\20sk_sp\2c\20SkSurfaceProps\20const*\29\20const 8407:skif::\28anonymous\20namespace\29::GaneshBackend::getCachedBitmap\28SkBitmap\20const&\29\20const 8408:skif::\28anonymous\20namespace\29::GaneshBackend::getBlurEngine\28\29\20const 8409:skif::\28anonymous\20namespace\29::GaneshBackend::findAlgorithm\28SkSize\2c\20SkColorType\29\20const 8410:skia_png_zfree 8411:skia_png_zalloc 8412:skia_png_set_read_fn 8413:skia_png_set_expand_gray_1_2_4_to_8 8414:skia_png_read_start_row 8415:skia_png_read_finish_row 8416:skia_png_handle_zTXt 8417:skia_png_handle_unknown 8418:skia_png_handle_tRNS 8419:skia_png_handle_tIME 8420:skia_png_handle_tEXt 8421:skia_png_handle_sRGB 8422:skia_png_handle_sPLT 8423:skia_png_handle_sCAL 8424:skia_png_handle_sBIT 8425:skia_png_handle_pHYs 8426:skia_png_handle_pCAL 8427:skia_png_handle_oFFs 8428:skia_png_handle_iTXt 8429:skia_png_handle_iCCP 8430:skia_png_handle_hIST 8431:skia_png_handle_gAMA 8432:skia_png_handle_cHRM 8433:skia_png_handle_bKGD 8434:skia_png_handle_PLTE 8435:skia_png_handle_IHDR 8436:skia_png_handle_IEND 8437:skia_png_get_IHDR 8438:skia_png_do_read_transformations 8439:skia_png_destroy_read_struct 8440:skia_png_default_read_data 8441:skia_png_create_png_struct 8442:skia_png_combine_row 8443:skia::textlayout::TypefaceFontStyleSet::~TypefaceFontStyleSet\28\29.1 8444:skia::textlayout::TypefaceFontStyleSet::getStyle\28int\2c\20SkFontStyle*\2c\20SkString*\29 8445:skia::textlayout::TypefaceFontProvider::~TypefaceFontProvider\28\29.1 8446:skia::textlayout::TypefaceFontProvider::onMatchFamily\28char\20const*\29\20const 8447:skia::textlayout::TypefaceFontProvider::onMatchFamilyStyle\28char\20const*\2c\20SkFontStyle\20const&\29\20const 8448:skia::textlayout::TypefaceFontProvider::onGetFamilyName\28int\2c\20SkString*\29\20const 8449:skia::textlayout::TextLine::shapeEllipsis\28SkString\20const&\2c\20skia::textlayout::Cluster\20const*\29::ShapeHandler::~ShapeHandler\28\29.1 8450:skia::textlayout::TextLine::shapeEllipsis\28SkString\20const&\2c\20skia::textlayout::Cluster\20const*\29::ShapeHandler::runBuffer\28SkShaper::RunHandler::RunInfo\20const&\29 8451:skia::textlayout::TextLine::shapeEllipsis\28SkString\20const&\2c\20skia::textlayout::Cluster\20const*\29::ShapeHandler::commitRunBuffer\28SkShaper::RunHandler::RunInfo\20const&\29 8452:skia::textlayout::ParagraphImpl::~ParagraphImpl\28\29.1 8453:skia::textlayout::ParagraphImpl::visit\28std::__2::function\20const&\29 8454:skia::textlayout::ParagraphImpl::updateTextAlign\28skia::textlayout::TextAlign\29 8455:skia::textlayout::ParagraphImpl::updateForegroundPaint\28unsigned\20long\2c\20unsigned\20long\2c\20SkPaint\29 8456:skia::textlayout::ParagraphImpl::updateFontSize\28unsigned\20long\2c\20unsigned\20long\2c\20float\29 8457:skia::textlayout::ParagraphImpl::updateBackgroundPaint\28unsigned\20long\2c\20unsigned\20long\2c\20SkPaint\29 8458:skia::textlayout::ParagraphImpl::unresolvedGlyphs\28\29 8459:skia::textlayout::ParagraphImpl::unresolvedCodepoints\28\29 8460:skia::textlayout::ParagraphImpl::paint\28SkCanvas*\2c\20float\2c\20float\29 8461:skia::textlayout::ParagraphImpl::markDirty\28\29 8462:skia::textlayout::ParagraphImpl::lineNumber\28\29 8463:skia::textlayout::ParagraphImpl::layout\28float\29 8464:skia::textlayout::ParagraphImpl::getWordBoundary\28unsigned\20int\29 8465:skia::textlayout::ParagraphImpl::getRectsForRange\28unsigned\20int\2c\20unsigned\20int\2c\20skia::textlayout::RectHeightStyle\2c\20skia::textlayout::RectWidthStyle\29 8466:skia::textlayout::ParagraphImpl::getRectsForPlaceholders\28\29 8467:skia::textlayout::ParagraphImpl::getPath\28int\2c\20SkPath*\29::$_0::operator\28\29\28skia::textlayout::Run\20const*\2c\20float\2c\20skia::textlayout::SkRange\2c\20float*\29\20const::'lambda'\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29::operator\28\29\28skia::textlayout::SkRange\2c\20skia::textlayout::TextStyle\20const&\2c\20skia::textlayout::TextLine::ClipContext\20const&\29\20const::'lambda'\28SkPath\20const*\2c\20SkMatrix\20const&\2c\20void*\29::__invoke\28SkPath\20const*\2c\20SkMatrix\20const&\2c\20void*\29 8468:skia::textlayout::ParagraphImpl::getPath\28int\2c\20SkPath*\29 8469:skia::textlayout::ParagraphImpl::getLineNumberAtUTF16Offset\28unsigned\20long\29 8470:skia::textlayout::ParagraphImpl::getLineMetrics\28std::__2::vector>&\29 8471:skia::textlayout::ParagraphImpl::getLineMetricsAt\28int\2c\20skia::textlayout::LineMetrics*\29\20const 8472:skia::textlayout::ParagraphImpl::getFonts\28\29\20const 8473:skia::textlayout::ParagraphImpl::getFontAt\28unsigned\20long\29\20const 8474:skia::textlayout::ParagraphImpl::getFontAtUTF16Offset\28unsigned\20long\29 8475:skia::textlayout::ParagraphImpl::getClosestUTF16GlyphInfoAt\28float\2c\20float\2c\20skia::textlayout::Paragraph::GlyphInfo*\29 8476:skia::textlayout::ParagraphImpl::getClosestGlyphClusterAt\28float\2c\20float\2c\20skia::textlayout::Paragraph::GlyphClusterInfo*\29 8477:skia::textlayout::ParagraphImpl::getActualTextRange\28int\2c\20bool\29\20const 8478:skia::textlayout::ParagraphImpl::extendedVisit\28std::__2::function\20const&\29 8479:skia::textlayout::ParagraphImpl::containsEmoji\28SkTextBlob*\29 8480:skia::textlayout::ParagraphImpl::containsColorFontOrBitmap\28SkTextBlob*\29::$_0::__invoke\28SkPath\20const*\2c\20SkMatrix\20const&\2c\20void*\29 8481:skia::textlayout::ParagraphImpl::containsColorFontOrBitmap\28SkTextBlob*\29 8482:skia::textlayout::ParagraphBuilderImpl::~ParagraphBuilderImpl\28\29.1 8483:skia::textlayout::ParagraphBuilderImpl::setWordsUtf8\28std::__2::vector>\29 8484:skia::textlayout::ParagraphBuilderImpl::setWordsUtf16\28std::__2::vector>\29 8485:skia::textlayout::ParagraphBuilderImpl::setLineBreaksUtf8\28std::__2::vector>\29 8486:skia::textlayout::ParagraphBuilderImpl::setLineBreaksUtf16\28std::__2::vector>\29 8487:skia::textlayout::ParagraphBuilderImpl::setGraphemeBreaksUtf8\28std::__2::vector>\29 8488:skia::textlayout::ParagraphBuilderImpl::setGraphemeBreaksUtf16\28std::__2::vector>\29 8489:skia::textlayout::ParagraphBuilderImpl::pushStyle\28skia::textlayout::TextStyle\20const&\29 8490:skia::textlayout::ParagraphBuilderImpl::pop\28\29 8491:skia::textlayout::ParagraphBuilderImpl::peekStyle\28\29 8492:skia::textlayout::ParagraphBuilderImpl::getText\28\29 8493:skia::textlayout::ParagraphBuilderImpl::getParagraphStyle\28\29\20const 8494:skia::textlayout::ParagraphBuilderImpl::addText\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 8495:skia::textlayout::ParagraphBuilderImpl::addText\28char\20const*\2c\20unsigned\20long\29 8496:skia::textlayout::ParagraphBuilderImpl::addText\28char\20const*\29 8497:skia::textlayout::ParagraphBuilderImpl::addPlaceholder\28skia::textlayout::PlaceholderStyle\20const&\29 8498:skia::textlayout::ParagraphBuilderImpl::SetUnicode\28sk_sp\29 8499:skia::textlayout::ParagraphBuilderImpl::Reset\28\29 8500:skia::textlayout::ParagraphBuilderImpl::Build\28\29 8501:skia::textlayout::Paragraph::FontInfo::~FontInfo\28\29.1 8502:skia::textlayout::OneLineShaper::~OneLineShaper\28\29.1 8503:skia::textlayout::OneLineShaper::runBuffer\28SkShaper::RunHandler::RunInfo\20const&\29 8504:skia::textlayout::OneLineShaper::commitRunBuffer\28SkShaper::RunHandler::RunInfo\20const&\29 8505:skia::textlayout::LangIterator::~LangIterator\28\29.1 8506:skia::textlayout::LangIterator::~LangIterator\28\29 8507:skia::textlayout::LangIterator::endOfCurrentRun\28\29\20const 8508:skia::textlayout::LangIterator::currentLanguage\28\29\20const 8509:skia::textlayout::LangIterator::consume\28\29 8510:skia::textlayout::LangIterator::atEnd\28\29\20const 8511:skia::textlayout::FontCollection::~FontCollection\28\29.1 8512:skia::textlayout::CanvasParagraphPainter::translate\28float\2c\20float\29 8513:skia::textlayout::CanvasParagraphPainter::save\28\29 8514:skia::textlayout::CanvasParagraphPainter::restore\28\29 8515:skia::textlayout::CanvasParagraphPainter::drawTextShadow\28sk_sp\20const&\2c\20float\2c\20float\2c\20unsigned\20int\2c\20float\29 8516:skia::textlayout::CanvasParagraphPainter::drawTextBlob\28sk_sp\20const&\2c\20float\2c\20float\2c\20std::__2::variant\20const&\29 8517:skia::textlayout::CanvasParagraphPainter::drawRect\28SkRect\20const&\2c\20std::__2::variant\20const&\29 8518:skia::textlayout::CanvasParagraphPainter::drawPath\28SkPath\20const&\2c\20skia::textlayout::ParagraphPainter::DecorationStyle\20const&\29 8519:skia::textlayout::CanvasParagraphPainter::drawLine\28float\2c\20float\2c\20float\2c\20float\2c\20skia::textlayout::ParagraphPainter::DecorationStyle\20const&\29 8520:skia::textlayout::CanvasParagraphPainter::drawFilledRect\28SkRect\20const&\2c\20skia::textlayout::ParagraphPainter::DecorationStyle\20const&\29 8521:skia::textlayout::CanvasParagraphPainter::clipRect\28SkRect\20const&\29 8522:skgpu::tess::FixedCountWedges::WriteVertexBuffer\28skgpu::VertexWriter\2c\20unsigned\20long\29 8523:skgpu::tess::FixedCountWedges::WriteIndexBuffer\28skgpu::VertexWriter\2c\20unsigned\20long\29 8524:skgpu::tess::FixedCountStrokes::WriteVertexBuffer\28skgpu::VertexWriter\2c\20unsigned\20long\29 8525:skgpu::tess::FixedCountCurves::WriteIndexBuffer\28skgpu::VertexWriter\2c\20unsigned\20long\29 8526:skgpu::ganesh::texture_proxy_view_from_planes\28GrRecordingContext*\2c\20SkImage_Lazy\20const*\2c\20skgpu::Budgeted\29::$_0::__invoke\28void*\2c\20void*\29 8527:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::~SmallPathOp\28\29.1 8528:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::visitProxies\28std::__2::function\20const&\29\20const 8529:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::onPrepareDraws\28GrMeshDrawTarget*\29 8530:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8531:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 8532:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::name\28\29\20const 8533:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::fixedFunctionFlags\28\29\20const 8534:skgpu::ganesh::\28anonymous\20namespace\29::SmallPathOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8535:skgpu::ganesh::\28anonymous\20namespace\29::QuadEdgeEffect::name\28\29\20const 8536:skgpu::ganesh::\28anonymous\20namespace\29::QuadEdgeEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 8537:skgpu::ganesh::\28anonymous\20namespace\29::QuadEdgeEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 8538:skgpu::ganesh::\28anonymous\20namespace\29::QuadEdgeEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const 8539:skgpu::ganesh::\28anonymous\20namespace\29::QuadEdgeEffect::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 8540:skgpu::ganesh::\28anonymous\20namespace\29::HullShader::~HullShader\28\29.1 8541:skgpu::ganesh::\28anonymous\20namespace\29::HullShader::name\28\29\20const 8542:skgpu::ganesh::\28anonymous\20namespace\29::HullShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::emitVertexCode\28GrShaderCaps\20const&\2c\20GrPathTessellationShader\20const&\2c\20GrGLSLVertexBuilder*\2c\20GrGLSLVaryingHandler*\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 8543:skgpu::ganesh::\28anonymous\20namespace\29::HullShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 8544:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::~AAFlatteningConvexPathOp\28\29.1 8545:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::visitProxies\28std::__2::function\20const&\29\20const 8546:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::onPrepareDraws\28GrMeshDrawTarget*\29 8547:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8548:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8549:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 8550:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::name\28\29\20const 8551:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::fixedFunctionFlags\28\29\20const 8552:skgpu::ganesh::\28anonymous\20namespace\29::AAFlatteningConvexPathOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8553:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::~AAConvexPathOp\28\29.1 8554:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::visitProxies\28std::__2::function\20const&\29\20const 8555:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::onPrepareDraws\28GrMeshDrawTarget*\29 8556:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8557:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8558:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 8559:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::name\28\29\20const 8560:skgpu::ganesh::\28anonymous\20namespace\29::AAConvexPathOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8561:skgpu::ganesh::TriangulatingPathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 8562:skgpu::ganesh::TriangulatingPathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 8563:skgpu::ganesh::TriangulatingPathRenderer::name\28\29\20const 8564:skgpu::ganesh::TessellationPathRenderer::onStencilPath\28skgpu::ganesh::PathRenderer::StencilPathArgs\20const&\29 8565:skgpu::ganesh::TessellationPathRenderer::onGetStencilSupport\28GrStyledShape\20const&\29\20const 8566:skgpu::ganesh::TessellationPathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 8567:skgpu::ganesh::TessellationPathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 8568:skgpu::ganesh::TessellationPathRenderer::name\28\29\20const 8569:skgpu::ganesh::SurfaceDrawContext::~SurfaceDrawContext\28\29 8570:skgpu::ganesh::SurfaceDrawContext::willReplaceOpsTask\28skgpu::ganesh::OpsTask*\2c\20skgpu::ganesh::OpsTask*\29 8571:skgpu::ganesh::SurfaceDrawContext::canDiscardPreviousOpsOnFullClear\28\29\20const 8572:skgpu::ganesh::SurfaceContext::~SurfaceContext\28\29.1 8573:skgpu::ganesh::SurfaceContext::asyncRescaleAndReadPixelsYUV420\28GrDirectContext*\2c\20SkYUVColorSpace\2c\20bool\2c\20sk_sp\2c\20SkIRect\20const&\2c\20SkISize\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29::$_0::__invoke\28void*\29 8574:skgpu::ganesh::SurfaceContext::asyncReadPixels\28GrDirectContext*\2c\20SkIRect\20const&\2c\20SkColorType\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29::$_0::__invoke\28void*\29 8575:skgpu::ganesh::StrokeTessellateOp::~StrokeTessellateOp\28\29.1 8576:skgpu::ganesh::StrokeTessellateOp::visitProxies\28std::__2::function\20const&\29\20const 8577:skgpu::ganesh::StrokeTessellateOp::usesStencil\28\29\20const 8578:skgpu::ganesh::StrokeTessellateOp::onPrepare\28GrOpFlushState*\29 8579:skgpu::ganesh::StrokeTessellateOp::onPrePrepare\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8580:skgpu::ganesh::StrokeTessellateOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8581:skgpu::ganesh::StrokeTessellateOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 8582:skgpu::ganesh::StrokeTessellateOp::name\28\29\20const 8583:skgpu::ganesh::StrokeTessellateOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8584:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::~NonAAStrokeRectOp\28\29.1 8585:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::visitProxies\28std::__2::function\20const&\29\20const 8586:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::programInfo\28\29 8587:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::onPrepareDraws\28GrMeshDrawTarget*\29 8588:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8589:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8590:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::name\28\29\20const 8591:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::NonAAStrokeRectOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8592:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::~AAStrokeRectOp\28\29.1 8593:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::visitProxies\28std::__2::function\20const&\29\20const 8594:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::programInfo\28\29 8595:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::onPrepareDraws\28GrMeshDrawTarget*\29 8596:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8597:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8598:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 8599:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::name\28\29\20const 8600:skgpu::ganesh::StrokeRectOp::\28anonymous\20namespace\29::AAStrokeRectOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8601:skgpu::ganesh::StencilClip::~StencilClip\28\29.1 8602:skgpu::ganesh::StencilClip::~StencilClip\28\29 8603:skgpu::ganesh::StencilClip::preApply\28SkRect\20const&\2c\20GrAA\29\20const 8604:skgpu::ganesh::StencilClip::getConservativeBounds\28\29\20const 8605:skgpu::ganesh::StencilClip::apply\28GrAppliedHardClip*\2c\20SkIRect*\29\20const 8606:skgpu::ganesh::SoftwarePathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 8607:skgpu::ganesh::SoftwarePathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 8608:skgpu::ganesh::SoftwarePathRenderer::name\28\29\20const 8609:skgpu::ganesh::SmallPathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 8610:skgpu::ganesh::SmallPathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 8611:skgpu::ganesh::SmallPathRenderer::name\28\29\20const 8612:skgpu::ganesh::SmallPathAtlasMgr::postFlush\28skgpu::AtlasToken\29 8613:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::~RegionOpImpl\28\29.1 8614:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::visitProxies\28std::__2::function\20const&\29\20const 8615:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::programInfo\28\29 8616:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::onPrepareDraws\28GrMeshDrawTarget*\29 8617:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8618:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8619:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 8620:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::name\28\29\20const 8621:skgpu::ganesh::RegionOp::\28anonymous\20namespace\29::RegionOpImpl::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8622:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_quad_generic\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 8623:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_2d_uv_strict\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 8624:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_2d_uv\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 8625:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_2d_cov_uv_strict\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 8626:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_2d_cov_uv\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 8627:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_2d_color_uv_strict\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 8628:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_2d_color_uv\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 8629:skgpu::ganesh::QuadPerEdgeAA::\28anonymous\20namespace\29::write_2d_color\28skgpu::VertexWriter*\2c\20skgpu::ganesh::QuadPerEdgeAA::VertexSpec\20const&\2c\20GrQuad\20const*\2c\20GrQuad\20const*\2c\20float\20const*\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkRect\20const&\2c\20SkRect\20const&\29 8630:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::~QuadPerEdgeAAGeometryProcessor\28\29.1 8631:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::onTextureSampler\28int\29\20const 8632:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::name\28\29\20const 8633:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 8634:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 8635:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::makeProgramImpl\28GrShaderCaps\20const&\29\20const 8636:skgpu::ganesh::QuadPerEdgeAA::QuadPerEdgeAAGeometryProcessor::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 8637:skgpu::ganesh::PathWedgeTessellator::prepare\28GrMeshDrawTarget*\2c\20SkMatrix\20const&\2c\20skgpu::ganesh::PathTessellator::PathDrawList\20const&\2c\20int\29 8638:skgpu::ganesh::PathTessellateOp::~PathTessellateOp\28\29.1 8639:skgpu::ganesh::PathTessellateOp::visitProxies\28std::__2::function\20const&\29\20const 8640:skgpu::ganesh::PathTessellateOp::usesStencil\28\29\20const 8641:skgpu::ganesh::PathTessellateOp::onPrepare\28GrOpFlushState*\29 8642:skgpu::ganesh::PathTessellateOp::onPrePrepare\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8643:skgpu::ganesh::PathTessellateOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8644:skgpu::ganesh::PathTessellateOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 8645:skgpu::ganesh::PathTessellateOp::name\28\29\20const 8646:skgpu::ganesh::PathTessellateOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8647:skgpu::ganesh::PathStencilCoverOp::~PathStencilCoverOp\28\29.1 8648:skgpu::ganesh::PathStencilCoverOp::visitProxies\28std::__2::function\20const&\29\20const 8649:skgpu::ganesh::PathStencilCoverOp::onPrepare\28GrOpFlushState*\29 8650:skgpu::ganesh::PathStencilCoverOp::onPrePrepare\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8651:skgpu::ganesh::PathStencilCoverOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8652:skgpu::ganesh::PathStencilCoverOp::name\28\29\20const 8653:skgpu::ganesh::PathStencilCoverOp::fixedFunctionFlags\28\29\20const 8654:skgpu::ganesh::PathStencilCoverOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8655:skgpu::ganesh::PathRenderer::onStencilPath\28skgpu::ganesh::PathRenderer::StencilPathArgs\20const&\29 8656:skgpu::ganesh::PathRenderer::onGetStencilSupport\28GrStyledShape\20const&\29\20const 8657:skgpu::ganesh::PathInnerTriangulateOp::~PathInnerTriangulateOp\28\29.1 8658:skgpu::ganesh::PathInnerTriangulateOp::visitProxies\28std::__2::function\20const&\29\20const 8659:skgpu::ganesh::PathInnerTriangulateOp::onPrepare\28GrOpFlushState*\29 8660:skgpu::ganesh::PathInnerTriangulateOp::onPrePrepare\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8661:skgpu::ganesh::PathInnerTriangulateOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8662:skgpu::ganesh::PathInnerTriangulateOp::name\28\29\20const 8663:skgpu::ganesh::PathInnerTriangulateOp::fixedFunctionFlags\28\29\20const 8664:skgpu::ganesh::PathInnerTriangulateOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8665:skgpu::ganesh::PathCurveTessellator::prepare\28GrMeshDrawTarget*\2c\20SkMatrix\20const&\2c\20skgpu::ganesh::PathTessellator::PathDrawList\20const&\2c\20int\29 8666:skgpu::ganesh::OpsTask::~OpsTask\28\29.1 8667:skgpu::ganesh::OpsTask::onPrepare\28GrOpFlushState*\29 8668:skgpu::ganesh::OpsTask::onPrePrepare\28GrRecordingContext*\29 8669:skgpu::ganesh::OpsTask::onMakeSkippable\28\29 8670:skgpu::ganesh::OpsTask::onIsUsed\28GrSurfaceProxy*\29\20const 8671:skgpu::ganesh::OpsTask::gatherProxyIntervals\28GrResourceAllocator*\29\20const 8672:skgpu::ganesh::OpsTask::endFlush\28GrDrawingManager*\29 8673:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::~NonAALatticeOp\28\29.1 8674:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::visitProxies\28std::__2::function\20const&\29\20const 8675:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::onPrepareDraws\28GrMeshDrawTarget*\29 8676:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8677:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8678:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 8679:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::name\28\29\20const 8680:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::NonAALatticeOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8681:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::~LatticeGP\28\29.1 8682:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::onTextureSampler\28int\29\20const 8683:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::name\28\29\20const 8684:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 8685:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 8686:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::makeProgramImpl\28GrShaderCaps\20const&\29\20const 8687:skgpu::ganesh::LatticeOp::\28anonymous\20namespace\29::LatticeGP::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 8688:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::~FillRRectOpImpl\28\29.1 8689:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::visitProxies\28std::__2::function\20const&\29\20const 8690:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::programInfo\28\29 8691:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::onPrepareDraws\28GrMeshDrawTarget*\29 8692:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8693:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8694:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 8695:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::name\28\29\20const 8696:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8697:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::clipToShape\28skgpu::ganesh::SurfaceDrawContext*\2c\20SkClipOp\2c\20SkMatrix\20const&\2c\20GrShape\20const&\2c\20GrAA\29 8698:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Processor::~Processor\28\29.1 8699:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Processor::~Processor\28\29 8700:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Processor::name\28\29\20const 8701:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Processor::makeProgramImpl\28GrShaderCaps\20const&\29\20const 8702:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Processor::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 8703:skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Processor::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 8704:skgpu::ganesh::DrawableOp::~DrawableOp\28\29.1 8705:skgpu::ganesh::DrawableOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8706:skgpu::ganesh::DrawableOp::name\28\29\20const 8707:skgpu::ganesh::DrawAtlasPathOp::~DrawAtlasPathOp\28\29.1 8708:skgpu::ganesh::DrawAtlasPathOp::visitProxies\28std::__2::function\20const&\29\20const 8709:skgpu::ganesh::DrawAtlasPathOp::onPrepare\28GrOpFlushState*\29 8710:skgpu::ganesh::DrawAtlasPathOp::onPrePrepare\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8711:skgpu::ganesh::DrawAtlasPathOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8712:skgpu::ganesh::DrawAtlasPathOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 8713:skgpu::ganesh::DrawAtlasPathOp::name\28\29\20const 8714:skgpu::ganesh::DrawAtlasPathOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8715:skgpu::ganesh::Device::~Device\28\29.1 8716:skgpu::ganesh::Device::strikeDeviceInfo\28\29\20const 8717:skgpu::ganesh::Device::snapSpecial\28SkIRect\20const&\2c\20bool\29 8718:skgpu::ganesh::Device::snapSpecialScaled\28SkIRect\20const&\2c\20SkISize\20const&\29 8719:skgpu::ganesh::Device::replaceClip\28SkIRect\20const&\29 8720:skgpu::ganesh::Device::recordingContext\28\29\20const 8721:skgpu::ganesh::Device::pushClipStack\28\29 8722:skgpu::ganesh::Device::popClipStack\28\29 8723:skgpu::ganesh::Device::onWritePixels\28SkPixmap\20const&\2c\20int\2c\20int\29 8724:skgpu::ganesh::Device::onReadPixels\28SkPixmap\20const&\2c\20int\2c\20int\29 8725:skgpu::ganesh::Device::onDrawGlyphRunList\28SkCanvas*\2c\20sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\29 8726:skgpu::ganesh::Device::onClipShader\28sk_sp\29 8727:skgpu::ganesh::Device::makeSurface\28SkImageInfo\20const&\2c\20SkSurfaceProps\20const&\29 8728:skgpu::ganesh::Device::makeSpecial\28SkImage\20const*\29 8729:skgpu::ganesh::Device::isClipWideOpen\28\29\20const 8730:skgpu::ganesh::Device::isClipRect\28\29\20const 8731:skgpu::ganesh::Device::isClipEmpty\28\29\20const 8732:skgpu::ganesh::Device::isClipAntiAliased\28\29\20const 8733:skgpu::ganesh::Device::drawVertices\28SkVertices\20const*\2c\20sk_sp\2c\20SkPaint\20const&\2c\20bool\29 8734:skgpu::ganesh::Device::drawSpecial\28SkSpecialImage*\2c\20SkMatrix\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 8735:skgpu::ganesh::Device::drawShadow\28SkPath\20const&\2c\20SkDrawShadowRec\20const&\29 8736:skgpu::ganesh::Device::drawRegion\28SkRegion\20const&\2c\20SkPaint\20const&\29 8737:skgpu::ganesh::Device::drawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 8738:skgpu::ganesh::Device::drawPoints\28SkCanvas::PointMode\2c\20unsigned\20long\2c\20SkPoint\20const*\2c\20SkPaint\20const&\29 8739:skgpu::ganesh::Device::drawPaint\28SkPaint\20const&\29 8740:skgpu::ganesh::Device::drawOval\28SkRect\20const&\2c\20SkPaint\20const&\29 8741:skgpu::ganesh::Device::drawMesh\28SkMesh\20const&\2c\20sk_sp\2c\20SkPaint\20const&\29 8742:skgpu::ganesh::Device::drawImageRect\28SkImage\20const*\2c\20SkRect\20const*\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 8743:skgpu::ganesh::Device::drawImageLattice\28SkImage\20const*\2c\20SkCanvas::Lattice\20const&\2c\20SkRect\20const&\2c\20SkFilterMode\2c\20SkPaint\20const&\29 8744:skgpu::ganesh::Device::drawEdgeAAQuad\28SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkBlendMode\29 8745:skgpu::ganesh::Device::drawEdgeAAImageSet\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 8746:skgpu::ganesh::Device::drawDrawable\28SkCanvas*\2c\20SkDrawable*\2c\20SkMatrix\20const*\29 8747:skgpu::ganesh::Device::drawDevice\28SkDevice*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\29 8748:skgpu::ganesh::Device::drawDRRect\28SkRRect\20const&\2c\20SkRRect\20const&\2c\20SkPaint\20const&\29 8749:skgpu::ganesh::Device::drawAtlas\28SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20sk_sp\2c\20SkPaint\20const&\29 8750:skgpu::ganesh::Device::drawAsTiledImageRect\28SkCanvas*\2c\20SkImage\20const*\2c\20SkRect\20const*\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 8751:skgpu::ganesh::Device::drawArc\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 8752:skgpu::ganesh::Device::devClipBounds\28\29\20const 8753:skgpu::ganesh::Device::createImageFilteringBackend\28SkSurfaceProps\20const&\2c\20SkColorType\29\20const 8754:skgpu::ganesh::Device::createDevice\28SkDevice::CreateInfo\20const&\2c\20SkPaint\20const*\29 8755:skgpu::ganesh::Device::clipRegion\28SkRegion\20const&\2c\20SkClipOp\29 8756:skgpu::ganesh::Device::clipRect\28SkRect\20const&\2c\20SkClipOp\2c\20bool\29 8757:skgpu::ganesh::Device::clipRRect\28SkRRect\20const&\2c\20SkClipOp\2c\20bool\29 8758:skgpu::ganesh::Device::clipPath\28SkPath\20const&\2c\20SkClipOp\2c\20bool\29 8759:skgpu::ganesh::Device::android_utils_clipWithStencil\28\29 8760:skgpu::ganesh::DefaultPathRenderer::onStencilPath\28skgpu::ganesh::PathRenderer::StencilPathArgs\20const&\29 8761:skgpu::ganesh::DefaultPathRenderer::onGetStencilSupport\28GrStyledShape\20const&\29\20const 8762:skgpu::ganesh::DefaultPathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 8763:skgpu::ganesh::DefaultPathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 8764:skgpu::ganesh::DefaultPathRenderer::name\28\29\20const 8765:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingLineEffect::name\28\29\20const 8766:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingLineEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const 8767:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingLineEffect::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 8768:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingLineEffect::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 8769:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingCircleEffect::name\28\29\20const 8770:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingCircleEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const 8771:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingCircleEffect::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 8772:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashingCircleEffect::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 8773:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::~DashOpImpl\28\29.1 8774:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::visitProxies\28std::__2::function\20const&\29\20const 8775:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::programInfo\28\29 8776:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::onPrepareDraws\28GrMeshDrawTarget*\29 8777:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8778:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 8779:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 8780:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::name\28\29\20const 8781:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::fixedFunctionFlags\28\29\20const 8782:skgpu::ganesh::DashOp::\28anonymous\20namespace\29::DashOpImpl::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8783:skgpu::ganesh::DashLinePathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 8784:skgpu::ganesh::DashLinePathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 8785:skgpu::ganesh::DashLinePathRenderer::name\28\29\20const 8786:skgpu::ganesh::ClipStack::~ClipStack\28\29.1 8787:skgpu::ganesh::ClipStack::preApply\28SkRect\20const&\2c\20GrAA\29\20const 8788:skgpu::ganesh::ClipStack::apply\28GrRecordingContext*\2c\20skgpu::ganesh::SurfaceDrawContext*\2c\20GrDrawOp*\2c\20GrAAType\2c\20GrAppliedClip*\2c\20SkRect*\29\20const 8789:skgpu::ganesh::ClearOp::~ClearOp\28\29 8790:skgpu::ganesh::ClearOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8791:skgpu::ganesh::ClearOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 8792:skgpu::ganesh::ClearOp::name\28\29\20const 8793:skgpu::ganesh::AtlasTextOp::~AtlasTextOp\28\29.1 8794:skgpu::ganesh::AtlasTextOp::visitProxies\28std::__2::function\20const&\29\20const 8795:skgpu::ganesh::AtlasTextOp::onPrepareDraws\28GrMeshDrawTarget*\29 8796:skgpu::ganesh::AtlasTextOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 8797:skgpu::ganesh::AtlasTextOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 8798:skgpu::ganesh::AtlasTextOp::name\28\29\20const 8799:skgpu::ganesh::AtlasTextOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 8800:skgpu::ganesh::AtlasRenderTask::~AtlasRenderTask\28\29.1 8801:skgpu::ganesh::AtlasRenderTask::onMakeClosed\28GrRecordingContext*\2c\20SkIRect*\29 8802:skgpu::ganesh::AtlasRenderTask::onExecute\28GrOpFlushState*\29 8803:skgpu::ganesh::AtlasPathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 8804:skgpu::ganesh::AtlasPathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 8805:skgpu::ganesh::AtlasPathRenderer::name\28\29\20const 8806:skgpu::ganesh::AALinearizingConvexPathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 8807:skgpu::ganesh::AALinearizingConvexPathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 8808:skgpu::ganesh::AALinearizingConvexPathRenderer::name\28\29\20const 8809:skgpu::ganesh::AAHairLinePathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 8810:skgpu::ganesh::AAHairLinePathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 8811:skgpu::ganesh::AAHairLinePathRenderer::name\28\29\20const 8812:skgpu::ganesh::AAConvexPathRenderer::onDrawPath\28skgpu::ganesh::PathRenderer::DrawPathArgs\20const&\29 8813:skgpu::ganesh::AAConvexPathRenderer::onCanDrawPath\28skgpu::ganesh::PathRenderer::CanDrawPathArgs\20const&\29\20const 8814:skgpu::ganesh::AAConvexPathRenderer::name\28\29\20const 8815:skgpu::TAsyncReadResult::~TAsyncReadResult\28\29.1 8816:skgpu::TAsyncReadResult::rowBytes\28int\29\20const 8817:skgpu::TAsyncReadResult::data\28int\29\20const 8818:skgpu::StringKeyBuilder::~StringKeyBuilder\28\29.1 8819:skgpu::StringKeyBuilder::appendComment\28char\20const*\29 8820:skgpu::StringKeyBuilder::addBits\28unsigned\20int\2c\20unsigned\20int\2c\20std::__2::basic_string_view>\29 8821:skgpu::ShaderErrorHandler::compileError\28char\20const*\2c\20char\20const*\2c\20bool\29 8822:skgpu::RectanizerSkyline::~RectanizerSkyline\28\29.1 8823:skgpu::RectanizerSkyline::~RectanizerSkyline\28\29 8824:skgpu::RectanizerSkyline::percentFull\28\29\20const 8825:skgpu::RectanizerPow2::reset\28\29 8826:skgpu::RectanizerPow2::percentFull\28\29\20const 8827:skgpu::RectanizerPow2::addRect\28int\2c\20int\2c\20SkIPoint16*\29 8828:skgpu::Plot::~Plot\28\29.1 8829:skgpu::KeyBuilder::~KeyBuilder\28\29 8830:skgpu::DefaultShaderErrorHandler\28\29::DefaultShaderErrorHandler::compileError\28char\20const*\2c\20char\20const*\29 8831:sk_mmap_releaseproc\28void\20const*\2c\20void*\29 8832:sk_ft_stream_io\28FT_StreamRec_*\2c\20unsigned\20long\2c\20unsigned\20char*\2c\20unsigned\20long\29 8833:sk_ft_realloc\28FT_MemoryRec_*\2c\20long\2c\20long\2c\20void*\29 8834:sk_ft_alloc\28FT_MemoryRec_*\2c\20long\29 8835:sk_fclose\28_IO_FILE*\29 8836:skString_getData 8837:skString_free 8838:skString_allocate 8839:skString16_getData 8840:skString16_free 8841:skString16_allocate 8842:skData_dispose 8843:skData_create 8844:shader_createSweepGradient 8845:shader_createRuntimeEffectShader 8846:shader_createRadialGradient 8847:shader_createLinearGradient 8848:shader_createFromImage 8849:shader_createConicalGradient 8850:sfnt_table_info 8851:sfnt_stream_close 8852:sfnt_load_face 8853:sfnt_is_postscript 8854:sfnt_is_alphanumeric 8855:sfnt_init_face 8856:sfnt_get_ps_name 8857:sfnt_get_name_index 8858:sfnt_get_interface 8859:sfnt_get_glyph_name 8860:sfnt_get_charset_id 8861:sfnt_done_face 8862:setup_syllables_use\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 8863:setup_syllables_myanmar\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 8864:setup_syllables_khmer\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 8865:setup_syllables_indic\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 8866:setup_masks_use\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 8867:setup_masks_myanmar\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 8868:setup_masks_khmer\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 8869:setup_masks_indic\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 8870:setup_masks_hangul\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 8871:setup_masks_arabic\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 8872:runtimeEffect_getUniformSize 8873:runtimeEffect_create 8874:reverse_hit_compare_y\28SkOpRayHit\20const*\2c\20SkOpRayHit\20const*\29 8875:reverse_hit_compare_x\28SkOpRayHit\20const*\2c\20SkOpRayHit\20const*\29 8876:reorder_use\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 8877:reorder_myanmar\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 8878:reorder_marks_hebrew\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20unsigned\20int\2c\20unsigned\20int\29 8879:reorder_marks_arabic\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20unsigned\20int\2c\20unsigned\20int\29 8880:reorder_khmer\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 8881:release_data\28void*\2c\20void*\29 8882:rect_memcpy\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkImageInfo\20const&\2c\20void\20const*\2c\20unsigned\20long\2c\20SkColorSpaceXformSteps\20const&\29 8883:record_stch\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 8884:record_rphf_use\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 8885:record_pref_use\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 8886:receive_notification 8887:read_data_from_FT_Stream 8888:pthread_self 8889:psnames_get_service 8890:pshinter_get_t2_funcs 8891:pshinter_get_t1_funcs 8892:pshinter_get_globals_funcs 8893:psh_globals_new 8894:psh_globals_destroy 8895:psaux_get_glyph_name 8896:ps_table_release 8897:ps_table_new 8898:ps_table_done 8899:ps_table_add 8900:ps_property_set 8901:ps_property_get 8902:ps_parser_to_int 8903:ps_parser_to_fixed_array 8904:ps_parser_to_fixed 8905:ps_parser_to_coord_array 8906:ps_parser_to_bytes 8907:ps_parser_load_field_table 8908:ps_parser_init 8909:ps_hints_t2mask 8910:ps_hints_t2counter 8911:ps_hints_t1stem3 8912:ps_hints_t1reset 8913:ps_hints_close 8914:ps_hints_apply 8915:ps_hinter_init 8916:ps_hinter_done 8917:ps_get_standard_strings 8918:ps_get_macintosh_name 8919:ps_decoder_init 8920:preprocess_text_use\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 8921:preprocess_text_thai\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 8922:preprocess_text_indic\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 8923:preprocess_text_hangul\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 8924:premultiply_data 8925:premul_rgb\28SkRGBA4f<\28SkAlphaType\292>\29 8926:premul_polar\28SkRGBA4f<\28SkAlphaType\292>\29 8927:postprocess_glyphs_arabic\28hb_ot_shape_plan_t\20const*\2c\20hb_buffer_t*\2c\20hb_font_t*\29 8928:portable::xy_to_unit_angle\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8929:portable::xy_to_radius\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8930:portable::xy_to_2pt_conical_well_behaved\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8931:portable::xy_to_2pt_conical_strip\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8932:portable::xy_to_2pt_conical_smaller\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8933:portable::xy_to_2pt_conical_greater\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8934:portable::xy_to_2pt_conical_focal_on_circle\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8935:portable::xor_\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8936:portable::white_color\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8937:portable::unpremul_polar\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8938:portable::unpremul\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8939:portable::trace_var\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8940:portable::trace_scope\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8941:portable::trace_line\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8942:portable::trace_exit\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8943:portable::trace_enter\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8944:portable::tan_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8945:portable::swizzle_copy_to_indirect_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8946:portable::swizzle_copy_slot_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8947:portable::swizzle_copy_4_slots_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8948:portable::swizzle_copy_3_slots_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8949:portable::swizzle_copy_2_slots_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8950:portable::swizzle_4\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8951:portable::swizzle_3\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8952:portable::swizzle_2\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8953:portable::swizzle_1\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8954:portable::swizzle\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8955:portable::swap_src_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8956:portable::swap_rb_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8957:portable::swap_rb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8958:portable::sub_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8959:portable::sub_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8960:portable::sub_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8961:portable::sub_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8962:portable::sub_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8963:portable::sub_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8964:portable::sub_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8965:portable::sub_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8966:portable::sub_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8967:portable::sub_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8968:portable::store_src_rg\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8969:portable::store_src_a\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8970:portable::store_src\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8971:portable::store_rgf16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8972:portable::store_rg88\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8973:portable::store_rg1616\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8974:portable::store_return_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8975:portable::store_r8\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8976:portable::store_loop_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8977:portable::store_f32\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8978:portable::store_f16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8979:portable::store_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8980:portable::store_device_xy01\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8981:portable::store_condition_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8982:portable::store_af16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8983:portable::store_a8\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8984:portable::store_a16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8985:portable::store_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8986:portable::store_565\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8987:portable::store_4444\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8988:portable::store_16161616\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8989:portable::store_10x6\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8990:portable::store_1010102_xr\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8991:portable::store_1010102\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8992:portable::start_pipeline\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20SkRasterPipelineStage*\2c\20SkSpan\2c\20unsigned\20char*\29 8993:portable::stack_rewind\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8994:portable::stack_checkpoint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8995:portable::srcover_rgba_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8996:portable::srcover\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8997:portable::srcout\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8998:portable::srcin\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 8999:portable::srcatop\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9000:portable::sqrt_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9001:portable::splat_4_constants\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9002:portable::splat_3_constants\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9003:portable::splat_2_constants\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9004:portable::softlight\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9005:portable::smoothstep_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9006:portable::sin_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9007:portable::shuffle\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9008:portable::set_base_pointer\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9009:portable::seed_shader\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9010:portable::screen\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9011:portable::scale_u8\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9012:portable::scale_565\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9013:portable::saturation\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9014:portable::rgb_to_hsl\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9015:portable::repeat_y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9016:portable::repeat_x_1\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9017:portable::repeat_x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9018:portable::refract_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9019:portable::reenable_loop_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9020:portable::premul_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9021:portable::premul\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9022:portable::pow_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9023:portable::plus_\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9024:portable::perlin_noise\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9025:portable::parametric\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9026:portable::overlay\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9027:portable::negate_x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9028:portable::multiply\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9029:portable::mul_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9030:portable::mul_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9031:portable::mul_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9032:portable::mul_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9033:portable::mul_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9034:portable::mul_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9035:portable::mul_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9036:portable::mul_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9037:portable::mul_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9038:portable::mul_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9039:portable::mul_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9040:portable::mul_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9041:portable::move_src_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9042:portable::move_dst_src\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9043:portable::modulate\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9044:portable::mod_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9045:portable::mod_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9046:portable::mod_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9047:portable::mod_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9048:portable::mod_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9049:portable::mix_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9050:portable::mix_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9051:portable::mix_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9052:portable::mix_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9053:portable::mix_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9054:portable::mix_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9055:portable::mix_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9056:portable::mix_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9057:portable::mix_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9058:portable::mix_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9059:portable::mirror_y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9060:portable::mirror_x_1\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9061:portable::mirror_x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9062:portable::mipmap_linear_update\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9063:portable::mipmap_linear_init\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9064:portable::mipmap_linear_finish\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9065:portable::min_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9066:portable::min_n_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9067:portable::min_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9068:portable::min_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9069:portable::min_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9070:portable::min_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9071:portable::min_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9072:portable::min_4_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9073:portable::min_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9074:portable::min_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9075:portable::min_3_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9076:portable::min_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9077:portable::min_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9078:portable::min_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9079:portable::min_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9080:portable::min_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9081:portable::merge_loop_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9082:portable::merge_inv_condition_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9083:portable::merge_condition_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9084:portable::max_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9085:portable::max_n_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9086:portable::max_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9087:portable::max_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9088:portable::max_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9089:portable::max_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9090:portable::max_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9091:portable::max_4_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9092:portable::max_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9093:portable::max_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9094:portable::max_3_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9095:portable::max_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9096:portable::max_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9097:portable::max_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9098:portable::max_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9099:portable::max_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9100:portable::matrix_translate\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9101:portable::matrix_scale_translate\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9102:portable::matrix_perspective\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9103:portable::matrix_multiply_4\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9104:portable::matrix_multiply_3\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9105:portable::matrix_multiply_2\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9106:portable::matrix_4x5\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9107:portable::matrix_4x3\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9108:portable::matrix_3x4\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9109:portable::matrix_3x3\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9110:portable::matrix_2x3\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9111:portable::mask_off_return_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9112:portable::mask_off_loop_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9113:portable::mask_2pt_conical_nan\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9114:portable::mask_2pt_conical_degenerates\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9115:portable::luminosity\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9116:portable::log_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9117:portable::log2_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9118:portable::load_src_rg\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9119:portable::load_rgf16_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9120:portable::load_rgf16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9121:portable::load_rg88_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9122:portable::load_rg88\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9123:portable::load_rg1616_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9124:portable::load_rg1616\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9125:portable::load_return_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9126:portable::load_loop_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9127:portable::load_f32_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9128:portable::load_f32\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9129:portable::load_f16_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9130:portable::load_f16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9131:portable::load_condition_mask\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9132:portable::load_af16_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9133:portable::load_af16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9134:portable::load_a8_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9135:portable::load_a8\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9136:portable::load_a16_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9137:portable::load_a16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9138:portable::load_8888_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9139:portable::load_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9140:portable::load_565_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9141:portable::load_565\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9142:portable::load_4444_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9143:portable::load_4444\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9144:portable::load_16161616_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9145:portable::load_16161616\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9146:portable::load_10x6_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9147:portable::load_10x6\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9148:portable::load_1010102_xr_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9149:portable::load_1010102_xr\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9150:portable::load_1010102_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9151:portable::load_1010102\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9152:portable::lighten\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9153:portable::lerp_u8\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9154:portable::lerp_565\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9155:portable::just_return\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9156:portable::jump\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9157:portable::invsqrt_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9158:portable::invsqrt_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9159:portable::invsqrt_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9160:portable::invsqrt_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9161:portable::inverse_mat4\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9162:portable::inverse_mat3\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9163:portable::inverse_mat2\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9164:portable::init_lane_masks\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9165:portable::hue\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9166:portable::hsl_to_rgb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9167:portable::hardlight\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9168:portable::gradient\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9169:portable::gauss_a_to_rgba\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9170:portable::gather_rgf16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9171:portable::gather_rg88\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9172:portable::gather_rg1616\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9173:portable::gather_f32\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9174:portable::gather_f16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9175:portable::gather_af16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9176:portable::gather_a8\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9177:portable::gather_a16\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9178:portable::gather_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9179:portable::gather_565\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9180:portable::gather_4444\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9181:portable::gather_16161616\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9182:portable::gather_10x6\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9183:portable::gather_1010102_xr\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9184:portable::gather_1010102\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9185:portable::gamma_\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9186:portable::force_opaque_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9187:portable::force_opaque\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9188:portable::floor_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9189:portable::floor_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9190:portable::floor_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9191:portable::floor_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9192:portable::exp_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9193:portable::exp2_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9194:portable::exclusion\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9195:portable::exchange_src\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9196:portable::evenly_spaced_gradient\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9197:portable::evenly_spaced_2_stop_gradient\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9198:portable::emboss\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9199:portable::dstover\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9200:portable::dstout\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9201:portable::dstin\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9202:portable::dstatop\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9203:portable::dot_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9204:portable::dot_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9205:portable::dot_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9206:portable::div_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9207:portable::div_n_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9208:portable::div_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9209:portable::div_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9210:portable::div_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9211:portable::div_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9212:portable::div_4_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9213:portable::div_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9214:portable::div_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9215:portable::div_3_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9216:portable::div_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9217:portable::div_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9218:portable::div_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9219:portable::div_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9220:portable::div_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9221:portable::dither\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9222:portable::difference\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9223:portable::decal_y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9224:portable::decal_x_and_y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9225:portable::decal_x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9226:portable::darken\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9227:portable::css_oklab_to_linear_srgb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9228:portable::css_oklab_gamut_map_to_linear_srgb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9229:portable::css_lab_to_xyz\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9230:portable::css_hwb_to_srgb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9231:portable::css_hsl_to_srgb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9232:portable::css_hcl_to_lab\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9233:portable::cos_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9234:portable::copy_uniform\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9235:portable::copy_to_indirect_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9236:portable::copy_slot_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9237:portable::copy_slot_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9238:portable::copy_immutable_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9239:portable::copy_constant\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9240:portable::copy_4_uniforms\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9241:portable::copy_4_slots_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9242:portable::copy_4_slots_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9243:portable::copy_4_immutables_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9244:portable::copy_3_uniforms\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9245:portable::copy_3_slots_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9246:portable::copy_3_slots_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9247:portable::copy_3_immutables_unmasked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9248:portable::copy_2_uniforms\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9249:portable::copy_2_slots_masked\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9250:portable::continue_op\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9251:portable::colordodge\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9252:portable::colorburn\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9253:portable::color\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9254:portable::cmpne_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9255:portable::cmpne_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9256:portable::cmpne_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9257:portable::cmpne_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9258:portable::cmpne_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9259:portable::cmpne_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9260:portable::cmpne_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9261:portable::cmpne_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9262:portable::cmpne_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9263:portable::cmpne_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9264:portable::cmpne_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9265:portable::cmpne_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9266:portable::cmplt_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9267:portable::cmplt_n_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9268:portable::cmplt_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9269:portable::cmplt_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9270:portable::cmplt_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9271:portable::cmplt_imm_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9272:portable::cmplt_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9273:portable::cmplt_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9274:portable::cmplt_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9275:portable::cmplt_4_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9276:portable::cmplt_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9277:portable::cmplt_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9278:portable::cmplt_3_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9279:portable::cmplt_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9280:portable::cmplt_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9281:portable::cmplt_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9282:portable::cmplt_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9283:portable::cmplt_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9284:portable::cmple_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9285:portable::cmple_n_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9286:portable::cmple_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9287:portable::cmple_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9288:portable::cmple_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9289:portable::cmple_imm_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9290:portable::cmple_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9291:portable::cmple_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9292:portable::cmple_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9293:portable::cmple_4_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9294:portable::cmple_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9295:portable::cmple_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9296:portable::cmple_3_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9297:portable::cmple_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9298:portable::cmple_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9299:portable::cmple_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9300:portable::cmple_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9301:portable::cmple_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9302:portable::cmpeq_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9303:portable::cmpeq_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9304:portable::cmpeq_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9305:portable::cmpeq_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9306:portable::cmpeq_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9307:portable::cmpeq_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9308:portable::cmpeq_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9309:portable::cmpeq_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9310:portable::cmpeq_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9311:portable::cmpeq_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9312:portable::cmpeq_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9313:portable::cmpeq_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9314:portable::clear\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9315:portable::clamp_x_and_y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9316:portable::clamp_x_1\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9317:portable::clamp_gamut\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9318:portable::clamp_01\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9319:portable::ceil_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9320:portable::ceil_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9321:portable::ceil_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9322:portable::ceil_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9323:portable::cast_to_uint_from_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9324:portable::cast_to_uint_from_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9325:portable::cast_to_uint_from_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9326:portable::cast_to_uint_from_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9327:portable::cast_to_int_from_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9328:portable::cast_to_int_from_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9329:portable::cast_to_int_from_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9330:portable::cast_to_int_from_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9331:portable::cast_to_float_from_uint\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9332:portable::cast_to_float_from_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9333:portable::cast_to_float_from_4_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9334:portable::cast_to_float_from_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9335:portable::cast_to_float_from_3_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9336:portable::cast_to_float_from_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9337:portable::cast_to_float_from_2_uints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9338:portable::cast_to_float_from_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9339:portable::case_op\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9340:portable::callback\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9341:portable::byte_tables\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9342:portable::bt709_luminance_or_luma_to_rgb\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9343:portable::bt709_luminance_or_luma_to_alpha\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9344:portable::branch_if_no_lanes_active\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9345:portable::branch_if_no_active_lanes_eq\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9346:portable::branch_if_any_lanes_active\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9347:portable::branch_if_all_lanes_active\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9348:portable::blit_row_s32a_opaque\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int\29 9349:portable::black_color\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9350:portable::bitwise_xor_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9351:portable::bitwise_xor_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9352:portable::bitwise_xor_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9353:portable::bitwise_xor_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9354:portable::bitwise_xor_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9355:portable::bitwise_xor_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9356:portable::bitwise_or_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9357:portable::bitwise_or_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9358:portable::bitwise_or_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9359:portable::bitwise_or_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9360:portable::bitwise_or_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9361:portable::bitwise_and_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9362:portable::bitwise_and_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9363:portable::bitwise_and_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9364:portable::bitwise_and_imm_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9365:portable::bitwise_and_imm_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9366:portable::bitwise_and_imm_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9367:portable::bitwise_and_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9368:portable::bitwise_and_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9369:portable::bitwise_and_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9370:portable::bilinear_setup\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9371:portable::bilinear_py\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9372:portable::bilinear_px\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9373:portable::bilinear_ny\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9374:portable::bilinear_nx\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9375:portable::bilerp_clamp_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9376:portable::bicubic_setup\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9377:portable::bicubic_p3y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9378:portable::bicubic_p3x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9379:portable::bicubic_p1y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9380:portable::bicubic_p1x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9381:portable::bicubic_n3y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9382:portable::bicubic_n3x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9383:portable::bicubic_n1y\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9384:portable::bicubic_n1x\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9385:portable::bicubic_clamp_8888\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9386:portable::atan_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9387:portable::atan2_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9388:portable::asin_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9389:portable::alter_2pt_conical_unswap\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9390:portable::alter_2pt_conical_compensate_focal\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9391:portable::alpha_to_red_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9392:portable::alpha_to_red\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9393:portable::alpha_to_gray_dst\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9394:portable::alpha_to_gray\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9395:portable::add_n_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9396:portable::add_n_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9397:portable::add_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9398:portable::add_imm_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9399:portable::add_imm_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9400:portable::add_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9401:portable::add_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9402:portable::add_4_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9403:portable::add_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9404:portable::add_3_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9405:portable::add_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9406:portable::add_2_floats\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9407:portable::acos_float\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9408:portable::accumulate\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9409:portable::abs_int\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9410:portable::abs_4_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9411:portable::abs_3_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9412:portable::abs_2_ints\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9413:portable::RGBA_to_rgbA\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\29 9414:portable::RGBA_to_bgrA\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\29 9415:portable::RGBA_to_BGRA\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\29 9416:portable::PQish\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9417:portable::HLGish\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9418:portable::HLGinvish\28portable::Params*\2c\20SkRasterPipelineStage*\2c\20float\2c\20float\2c\20float\2c\20float\29 9419:pop_arg_long_double 9420:png_read_filter_row_up 9421:png_read_filter_row_sub 9422:png_read_filter_row_paeth_multibyte_pixel 9423:png_read_filter_row_paeth_1byte_pixel 9424:png_read_filter_row_avg 9425:picture_getCullRect 9426:pictureRecorder_endRecording 9427:pictureRecorder_dispose 9428:pictureRecorder_create 9429:pictureRecorder_beginRecording 9430:path_transform 9431:path_setFillType 9432:path_reset 9433:path_relativeQuadraticBezierTo 9434:path_relativeMoveTo 9435:path_relativeLineTo 9436:path_relativeCubicTo 9437:path_relativeConicTo 9438:path_relativeArcToRotated 9439:path_moveTo 9440:path_lineTo 9441:path_getFillType 9442:path_getBounds 9443:path_dispose 9444:path_create 9445:path_copy 9446:path_contains 9447:path_conicTo 9448:path_combine 9449:path_close 9450:path_arcToRotated 9451:path_arcToOval 9452:path_addRect 9453:path_addRRect 9454:path_addPolygon 9455:path_addPath 9456:path_addArc 9457:paragraph_layout 9458:paragraph_getWordBoundary 9459:paragraph_getWidth 9460:paragraph_getUnresolvedCodePoints 9461:paragraph_getPositionForOffset 9462:paragraph_getMinIntrinsicWidth 9463:paragraph_getMaxIntrinsicWidth 9464:paragraph_getLongestLine 9465:paragraph_getLineNumberAt 9466:paragraph_getLineMetricsAtIndex 9467:paragraph_getLineCount 9468:paragraph_getIdeographicBaseline 9469:paragraph_getHeight 9470:paragraph_getGlyphInfoAt 9471:paragraph_getDidExceedMaxLines 9472:paragraph_getClosestGlyphInfoAtCoordinate 9473:paragraph_getBoxesForRange 9474:paragraph_getBoxesForPlaceholders 9475:paragraph_getAlphabeticBaseline 9476:paragraphStyle_setTextStyle 9477:paragraphStyle_setTextHeightBehavior 9478:paragraphStyle_setTextDirection 9479:paragraphStyle_setTextAlign 9480:paragraphStyle_setStrutStyle 9481:paragraphStyle_setMaxLines 9482:paragraphStyle_setHeight 9483:paragraphStyle_setEllipsis 9484:paragraphStyle_setApplyRoundingHack 9485:paragraphStyle_dispose 9486:paragraphStyle_create 9487:paragraphBuilder_setWordBreaksUtf16 9488:paragraphBuilder_setLineBreaksUtf16 9489:paragraphBuilder_setGraphemeBreaksUtf16 9490:paragraphBuilder_pushStyle 9491:paragraphBuilder_pop 9492:paragraphBuilder_getUtf8Text 9493:paragraphBuilder_create 9494:paragraphBuilder_addText 9495:paragraphBuilder_addPlaceholder 9496:paint_setStyle 9497:paint_setStrokeWidth 9498:paint_setStrokeJoin 9499:paint_setStrokeCap 9500:paint_setShader 9501:paint_setMiterLimit 9502:paint_setMaskFilter 9503:paint_setImageFilter 9504:paint_setColorInt 9505:paint_setColorFilter 9506:paint_setBlendMode 9507:paint_setAntiAlias 9508:paint_getStyle 9509:paint_getStrokeJoin 9510:paint_getStrokeCap 9511:paint_getMiterLImit 9512:paint_getColorInt 9513:paint_getAntiAlias 9514:paint_dispose 9515:paint_create 9516:override_features_khmer\28hb_ot_shape_planner_t*\29 9517:override_features_indic\28hb_ot_shape_planner_t*\29 9518:override_features_hangul\28hb_ot_shape_planner_t*\29 9519:non-virtual\20thunk\20to\20std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29.1 9520:non-virtual\20thunk\20to\20std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29 9521:non-virtual\20thunk\20to\20std::__2::basic_iostream>::~basic_iostream\28\29.1 9522:non-virtual\20thunk\20to\20std::__2::basic_iostream>::~basic_iostream\28\29 9523:non-virtual\20thunk\20to\20skif::\28anonymous\20namespace\29::GaneshBackend::~GaneshBackend\28\29.3 9524:non-virtual\20thunk\20to\20skif::\28anonymous\20namespace\29::GaneshBackend::~GaneshBackend\28\29.2 9525:non-virtual\20thunk\20to\20skif::\28anonymous\20namespace\29::GaneshBackend::~GaneshBackend\28\29.1 9526:non-virtual\20thunk\20to\20skif::\28anonymous\20namespace\29::GaneshBackend::~GaneshBackend\28\29 9527:non-virtual\20thunk\20to\20skif::\28anonymous\20namespace\29::GaneshBackend::findAlgorithm\28SkSize\2c\20SkColorType\29\20const 9528:non-virtual\20thunk\20to\20skif::\28anonymous\20namespace\29::GaneshBackend::blur\28SkSize\2c\20sk_sp\2c\20SkIRect\20const&\2c\20SkTileMode\2c\20SkIRect\20const&\29\20const 9529:non-virtual\20thunk\20to\20skgpu::ganesh::SmallPathAtlasMgr::~SmallPathAtlasMgr\28\29.1 9530:non-virtual\20thunk\20to\20skgpu::ganesh::SmallPathAtlasMgr::~SmallPathAtlasMgr\28\29 9531:non-virtual\20thunk\20to\20skgpu::ganesh::SmallPathAtlasMgr::evict\28skgpu::PlotLocator\29 9532:non-virtual\20thunk\20to\20skgpu::ganesh::AtlasPathRenderer::~AtlasPathRenderer\28\29.1 9533:non-virtual\20thunk\20to\20skgpu::ganesh::AtlasPathRenderer::~AtlasPathRenderer\28\29 9534:non-virtual\20thunk\20to\20skgpu::ganesh::AtlasPathRenderer::preFlush\28GrOnFlushResourceProvider*\29 9535:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::TransformedMaskSubRun::vertexStride\28SkMatrix\20const&\29\20const 9536:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::TransformedMaskSubRun::regenerateAtlas\28int\2c\20int\2c\20std::__2::function\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>\29\20const 9537:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::TransformedMaskSubRun::makeAtlasTextOp\28GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20skgpu::ganesh::SurfaceDrawContext*\29\20const 9538:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::TransformedMaskSubRun::instanceFlags\28\29\20const 9539:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::TransformedMaskSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 9540:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::SDFTSubRun::~SDFTSubRun\28\29.1 9541:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::SDFTSubRun::~SDFTSubRun\28\29 9542:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::SDFTSubRun::regenerateAtlas\28int\2c\20int\2c\20std::__2::function\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>\29\20const 9543:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::SDFTSubRun::makeAtlasTextOp\28GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20skgpu::ganesh::SurfaceDrawContext*\29\20const 9544:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::SDFTSubRun::glyphCount\28\29\20const 9545:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::SDFTSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 9546:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::vertexStride\28SkMatrix\20const&\29\20const 9547:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::regenerateAtlas\28int\2c\20int\2c\20std::__2::function\20\28sktext::gpu::GlyphVector*\2c\20int\2c\20int\2c\20skgpu::MaskFormat\2c\20int\29>\29\20const 9548:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::makeAtlasTextOp\28GrClip\20const*\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp&&\2c\20skgpu::ganesh::SurfaceDrawContext*\29\20const 9549:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::instanceFlags\28\29\20const 9550:non-virtual\20thunk\20to\20\28anonymous\20namespace\29::DirectMaskSubRun::fillVertexData\28void*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20SkMatrix\20const&\2c\20SkPoint\2c\20SkIRect\29\20const 9551:non-virtual\20thunk\20to\20GrTextureRenderTargetProxy::~GrTextureRenderTargetProxy\28\29.1 9552:non-virtual\20thunk\20to\20GrTextureRenderTargetProxy::~GrTextureRenderTargetProxy\28\29 9553:non-virtual\20thunk\20to\20GrTextureRenderTargetProxy::onUninstantiatedGpuMemorySize\28\29\20const 9554:non-virtual\20thunk\20to\20GrTextureRenderTargetProxy::instantiate\28GrResourceProvider*\29 9555:non-virtual\20thunk\20to\20GrTextureRenderTargetProxy::createSurface\28GrResourceProvider*\29\20const 9556:non-virtual\20thunk\20to\20GrTextureRenderTargetProxy::callbackDesc\28\29\20const 9557:non-virtual\20thunk\20to\20GrOpFlushState::~GrOpFlushState\28\29.1 9558:non-virtual\20thunk\20to\20GrOpFlushState::~GrOpFlushState\28\29 9559:non-virtual\20thunk\20to\20GrOpFlushState::writeView\28\29\20const 9560:non-virtual\20thunk\20to\20GrOpFlushState::usesMSAASurface\28\29\20const 9561:non-virtual\20thunk\20to\20GrOpFlushState::threadSafeCache\28\29\20const 9562:non-virtual\20thunk\20to\20GrOpFlushState::strikeCache\28\29\20const 9563:non-virtual\20thunk\20to\20GrOpFlushState::smallPathAtlasManager\28\29\20const 9564:non-virtual\20thunk\20to\20GrOpFlushState::sampledProxyArray\28\29 9565:non-virtual\20thunk\20to\20GrOpFlushState::rtProxy\28\29\20const 9566:non-virtual\20thunk\20to\20GrOpFlushState::resourceProvider\28\29\20const 9567:non-virtual\20thunk\20to\20GrOpFlushState::renderPassBarriers\28\29\20const 9568:non-virtual\20thunk\20to\20GrOpFlushState::recordDraw\28GrGeometryProcessor\20const*\2c\20GrSimpleMesh\20const*\2c\20int\2c\20GrSurfaceProxy\20const*\20const*\2c\20GrPrimitiveType\29 9569:non-virtual\20thunk\20to\20GrOpFlushState::putBackVertices\28int\2c\20unsigned\20long\29 9570:non-virtual\20thunk\20to\20GrOpFlushState::putBackIndirectDraws\28int\29 9571:non-virtual\20thunk\20to\20GrOpFlushState::putBackIndices\28int\29 9572:non-virtual\20thunk\20to\20GrOpFlushState::putBackIndexedIndirectDraws\28int\29 9573:non-virtual\20thunk\20to\20GrOpFlushState::makeVertexSpace\28unsigned\20long\2c\20int\2c\20sk_sp*\2c\20int*\29 9574:non-virtual\20thunk\20to\20GrOpFlushState::makeVertexSpaceAtLeast\28unsigned\20long\2c\20int\2c\20int\2c\20sk_sp*\2c\20int*\2c\20int*\29 9575:non-virtual\20thunk\20to\20GrOpFlushState::makeIndexSpace\28int\2c\20sk_sp*\2c\20int*\29 9576:non-virtual\20thunk\20to\20GrOpFlushState::makeIndexSpaceAtLeast\28int\2c\20int\2c\20sk_sp*\2c\20int*\2c\20int*\29 9577:non-virtual\20thunk\20to\20GrOpFlushState::makeDrawIndirectSpace\28int\2c\20sk_sp*\2c\20unsigned\20long*\29 9578:non-virtual\20thunk\20to\20GrOpFlushState::makeDrawIndexedIndirectSpace\28int\2c\20sk_sp*\2c\20unsigned\20long*\29 9579:non-virtual\20thunk\20to\20GrOpFlushState::dstProxyView\28\29\20const 9580:non-virtual\20thunk\20to\20GrOpFlushState::detachAppliedClip\28\29 9581:non-virtual\20thunk\20to\20GrOpFlushState::colorLoadOp\28\29\20const 9582:non-virtual\20thunk\20to\20GrOpFlushState::caps\28\29\20const 9583:non-virtual\20thunk\20to\20GrOpFlushState::atlasManager\28\29\20const 9584:non-virtual\20thunk\20to\20GrOpFlushState::appliedClip\28\29\20const 9585:non-virtual\20thunk\20to\20GrGpuBuffer::unref\28\29\20const 9586:non-virtual\20thunk\20to\20GrGpuBuffer::ref\28\29\20const 9587:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::~GrGLTextureRenderTarget\28\29.1 9588:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::~GrGLTextureRenderTarget\28\29 9589:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::onSetLabel\28\29 9590:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::onRelease\28\29 9591:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::onGpuMemorySize\28\29\20const 9592:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::onAbandon\28\29 9593:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 9594:non-virtual\20thunk\20to\20GrGLTextureRenderTarget::backendFormat\28\29\20const 9595:non-virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::~GrGLSLFragmentShaderBuilder\28\29.1 9596:non-virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::~GrGLSLFragmentShaderBuilder\28\29 9597:non-virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::hasSecondaryOutput\28\29\20const 9598:non-virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::enableAdvancedBlendEquationIfNeeded\28skgpu::BlendEquation\29 9599:non-virtual\20thunk\20to\20GrGLSLFragmentShaderBuilder::dstColor\28\29 9600:non-virtual\20thunk\20to\20GrGLBuffer::~GrGLBuffer\28\29.1 9601:non-virtual\20thunk\20to\20GrGLBuffer::~GrGLBuffer\28\29 9602:maskFilter_createBlur 9603:lineMetrics_getWidth 9604:lineMetrics_getUnscaledAscent 9605:lineMetrics_getLeft 9606:lineMetrics_getHeight 9607:lineMetrics_getDescent 9608:lineMetrics_getBaseline 9609:lineMetrics_getAscent 9610:lineMetrics_dispose 9611:lineMetrics_create 9612:lineBreakBuffer_create 9613:lin_srgb_to_okhcl\28SkRGBA4f<\28SkAlphaType\292>\2c\20bool*\29 9614:legalfunc$glWaitSync 9615:legalfunc$glClientWaitSync 9616:lcd_to_a8\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29 9617:is_deleted_glyph\28hb_glyph_info_t\20const*\29 9618:initial_reordering_indic\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 9619:image_getHeight 9620:image_createFromTextureSource 9621:image_createFromPixels 9622:image_createFromPicture 9623:imageFilter_getFilterBounds 9624:imageFilter_createMatrix 9625:imageFilter_createFromColorFilter 9626:imageFilter_createErode 9627:imageFilter_createDilate 9628:imageFilter_createBlur 9629:imageFilter_compose 9630:hit_compare_y\28SkOpRayHit\20const*\2c\20SkOpRayHit\20const*\29 9631:hit_compare_x\28SkOpRayHit\20const*\2c\20SkOpRayHit\20const*\29 9632:hb_unicode_script_nil\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20void*\29 9633:hb_unicode_general_category_nil\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20void*\29 9634:hb_ucd_script\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20void*\29 9635:hb_ucd_mirroring\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20void*\29 9636:hb_ucd_general_category\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20void*\29 9637:hb_ucd_decompose\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int*\2c\20void*\29 9638:hb_ucd_compose\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 9639:hb_ucd_combining_class\28hb_unicode_funcs_t*\2c\20unsigned\20int\2c\20void*\29 9640:hb_syllabic_clear_var\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 9641:hb_paint_sweep_gradient_nil\28hb_paint_funcs_t*\2c\20void*\2c\20hb_color_line_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 9642:hb_paint_push_transform_nil\28hb_paint_funcs_t*\2c\20void*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 9643:hb_paint_push_clip_rectangle_nil\28hb_paint_funcs_t*\2c\20void*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 9644:hb_paint_image_nil\28hb_paint_funcs_t*\2c\20void*\2c\20hb_blob_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20float\2c\20hb_glyph_extents_t*\2c\20void*\29 9645:hb_paint_extents_push_transform\28hb_paint_funcs_t*\2c\20void*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 9646:hb_paint_extents_push_group\28hb_paint_funcs_t*\2c\20void*\2c\20void*\29 9647:hb_paint_extents_push_clip_rectangle\28hb_paint_funcs_t*\2c\20void*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 9648:hb_paint_extents_push_clip_glyph\28hb_paint_funcs_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_font_t*\2c\20void*\29 9649:hb_paint_extents_pop_transform\28hb_paint_funcs_t*\2c\20void*\2c\20void*\29 9650:hb_paint_extents_pop_group\28hb_paint_funcs_t*\2c\20void*\2c\20hb_paint_composite_mode_t\2c\20void*\29 9651:hb_paint_extents_pop_clip\28hb_paint_funcs_t*\2c\20void*\2c\20void*\29 9652:hb_paint_extents_paint_sweep_gradient\28hb_paint_funcs_t*\2c\20void*\2c\20hb_color_line_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 9653:hb_paint_extents_paint_image\28hb_paint_funcs_t*\2c\20void*\2c\20hb_blob_t*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20float\2c\20hb_glyph_extents_t*\2c\20void*\29 9654:hb_paint_extents_paint_color\28hb_paint_funcs_t*\2c\20void*\2c\20int\2c\20unsigned\20int\2c\20void*\29 9655:hb_outline_recording_pen_quadratic_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 9656:hb_outline_recording_pen_move_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20void*\29 9657:hb_outline_recording_pen_line_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20void*\29 9658:hb_outline_recording_pen_cubic_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 9659:hb_outline_recording_pen_close_path\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20void*\29 9660:hb_ot_paint_glyph\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_paint_funcs_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void*\29 9661:hb_ot_map_t::lookup_map_t::cmp\28void\20const*\2c\20void\20const*\29 9662:hb_ot_map_t::feature_map_t::cmp\28void\20const*\2c\20void\20const*\29 9663:hb_ot_map_builder_t::feature_info_t::cmp\28void\20const*\2c\20void\20const*\29 9664:hb_ot_get_variation_glyph\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 9665:hb_ot_get_nominal_glyphs\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int\2c\20void*\29 9666:hb_ot_get_nominal_glyph\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 9667:hb_ot_get_glyph_v_origin\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20void*\29 9668:hb_ot_get_glyph_v_advances\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20int*\2c\20unsigned\20int\2c\20void*\29 9669:hb_ot_get_glyph_name\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20char*\2c\20unsigned\20int\2c\20void*\29 9670:hb_ot_get_glyph_h_advances\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20int*\2c\20unsigned\20int\2c\20void*\29 9671:hb_ot_get_glyph_from_name\28hb_font_t*\2c\20void*\2c\20char\20const*\2c\20int\2c\20unsigned\20int*\2c\20void*\29 9672:hb_ot_get_glyph_extents\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_glyph_extents_t*\2c\20void*\29 9673:hb_ot_get_font_v_extents\28hb_font_t*\2c\20void*\2c\20hb_font_extents_t*\2c\20void*\29 9674:hb_ot_get_font_h_extents\28hb_font_t*\2c\20void*\2c\20hb_font_extents_t*\2c\20void*\29 9675:hb_ot_draw_glyph\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_draw_funcs_t*\2c\20void*\2c\20void*\29 9676:hb_font_paint_glyph_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_paint_funcs_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void*\29 9677:hb_font_paint_glyph_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_paint_funcs_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void*\29 9678:hb_font_get_variation_glyph_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 9679:hb_font_get_nominal_glyphs_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int\2c\20void*\29 9680:hb_font_get_nominal_glyph_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 9681:hb_font_get_nominal_glyph_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 9682:hb_font_get_glyph_v_origin_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20void*\29 9683:hb_font_get_glyph_v_origin_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20void*\29 9684:hb_font_get_glyph_v_kerning_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void*\29 9685:hb_font_get_glyph_v_advances_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20int*\2c\20unsigned\20int\2c\20void*\29 9686:hb_font_get_glyph_v_advance_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20void*\29 9687:hb_font_get_glyph_v_advance_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20void*\29 9688:hb_font_get_glyph_name_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20char*\2c\20unsigned\20int\2c\20void*\29 9689:hb_font_get_glyph_name_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20char*\2c\20unsigned\20int\2c\20void*\29 9690:hb_font_get_glyph_h_origin_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20void*\29 9691:hb_font_get_glyph_h_origin_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20void*\29 9692:hb_font_get_glyph_h_kerning_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20void*\29 9693:hb_font_get_glyph_h_advances_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20int*\2c\20unsigned\20int\2c\20void*\29 9694:hb_font_get_glyph_h_advance_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20void*\29 9695:hb_font_get_glyph_h_advance_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20void*\29 9696:hb_font_get_glyph_from_name_default\28hb_font_t*\2c\20void*\2c\20char\20const*\2c\20int\2c\20unsigned\20int*\2c\20void*\29 9697:hb_font_get_glyph_extents_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_glyph_extents_t*\2c\20void*\29 9698:hb_font_get_glyph_extents_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_glyph_extents_t*\2c\20void*\29 9699:hb_font_get_glyph_contour_point_nil\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20void*\29 9700:hb_font_get_glyph_contour_point_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20int*\2c\20int*\2c\20void*\29 9701:hb_font_get_font_v_extents_default\28hb_font_t*\2c\20void*\2c\20hb_font_extents_t*\2c\20void*\29 9702:hb_font_get_font_h_extents_default\28hb_font_t*\2c\20void*\2c\20hb_font_extents_t*\2c\20void*\29 9703:hb_font_draw_glyph_default\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_draw_funcs_t*\2c\20void*\2c\20void*\29 9704:hb_draw_quadratic_to_nil\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 9705:hb_draw_quadratic_to_default\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 9706:hb_draw_move_to_default\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20void*\29 9707:hb_draw_line_to_default\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20void*\29 9708:hb_draw_extents_quadratic_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 9709:hb_draw_extents_cubic_to\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 9710:hb_draw_cubic_to_default\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20float\2c\20void*\29 9711:hb_draw_close_path_default\28hb_draw_funcs_t*\2c\20void*\2c\20hb_draw_state_t*\2c\20void*\29 9712:hb_buffer_t::_cluster_group_func\28hb_glyph_info_t\20const&\2c\20hb_glyph_info_t\20const&\29 9713:hb_aat_map_builder_t::feature_event_t::cmp\28void\20const*\2c\20void\20const*\29 9714:gray_raster_render 9715:gray_raster_new 9716:gray_raster_done 9717:gray_move_to 9718:gray_line_to 9719:gray_cubic_to 9720:gray_conic_to 9721:get_sfnt_table 9722:ft_smooth_transform 9723:ft_smooth_set_mode 9724:ft_smooth_render 9725:ft_smooth_overlap_spans 9726:ft_smooth_lcd_spans 9727:ft_smooth_init 9728:ft_smooth_get_cbox 9729:ft_gzip_free 9730:ft_ansi_stream_io 9731:ft_ansi_stream_close 9732:fquad_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 9733:fontCollection_registerTypeface 9734:fontCollection_dispose 9735:fontCollection_create 9736:fontCollection_clearCaches 9737:fmt_fp 9738:fline_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 9739:final_reordering_indic\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 9740:fcubic_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 9741:fconic_dxdy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 9742:error_callback 9743:emscripten_stack_set_limits 9744:emscripten_current_thread_process_queued_calls 9745:dquad_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 9746:dline_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 9747:dispose_external_texture\28void*\29 9748:decompose_unicode\28hb_ot_shape_normalize_context_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int*\29 9749:decompose_khmer\28hb_ot_shape_normalize_context_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int*\29 9750:decompose_indic\28hb_ot_shape_normalize_context_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int*\29 9751:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28skgpu::ganesh::\28anonymous\20namespace\29::QuadEdgeEffect::Make\28SkArenaAlloc*\2c\20SkMatrix\20const&\2c\20bool\2c\20bool\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 9752:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make&\2c\20GrShaderCaps\20const&>\28SkMatrix\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>&\2c\20GrShaderCaps\20const&\29::'lambda'\28void*\29>\28skgpu::ganesh::\28anonymous\20namespace\29::HullShader&&\29::'lambda'\28char*\29::__invoke\28char*\29 9753:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28skgpu::ganesh::StrokeTessellator::PathStrokeList&&\29::'lambda'\28void*\29>\28skgpu::ganesh::StrokeTessellator::PathStrokeList&&\29::'lambda'\28char*\29::__invoke\28char*\29 9754:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28skgpu::tess::PatchAttribs&\29::'lambda'\28void*\29>\28skgpu::ganesh::StrokeTessellator&&\29::'lambda'\28char*\29::__invoke\28char*\29 9755:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\20const&>\28SkMatrix\20const&\2c\20SkPath\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\29::'lambda'\28void*\29>\28skgpu::ganesh::PathTessellator::PathDrawList&&\29::'lambda'\28char*\29::__invoke\28char*\29 9756:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::Processor::Make\28SkArenaAlloc*\2c\20GrAAType\2c\20skgpu::ganesh::FillRRectOp::\28anonymous\20namespace\29::FillRRectOpImpl::ProcessorFlags\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 9757:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28int&\2c\20int&\29::'lambda'\28void*\29>\28skgpu::RectanizerSkyline&&\29::'lambda'\28char*\29::__invoke\28char*\29 9758:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28int&\2c\20int&\29::'lambda'\28void*\29>\28skgpu::RectanizerPow2&&\29::'lambda'\28char*\29::__invoke\28char*\29 9759:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::TextureOpImpl::Desc*\20SkArenaAlloc::make<\28anonymous\20namespace\29::TextureOpImpl::Desc>\28\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::TextureOpImpl::Desc&&\29::'lambda'\28char*\29::__invoke\28char*\29 9760:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::TentPass*\20SkArenaAlloc::make<\28anonymous\20namespace\29::TentPass\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20int&\2c\20int&>\28skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20int&\2c\20int&\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::TentPass&&\29::'lambda'\28char*\29::__invoke\28char*\29 9761:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::SimpleTriangleShader*\20SkArenaAlloc::make<\28anonymous\20namespace\29::SimpleTriangleShader\2c\20SkMatrix\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&>\28SkMatrix\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::SimpleTriangleShader&&\29::'lambda'\28char*\29::__invoke\28char*\29 9762:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::GaussPass*\20SkArenaAlloc::make<\28anonymous\20namespace\29::GaussPass\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20int&\2c\20int&>\28skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20skvx::Vec<4\2c\20unsigned\20int>*&\2c\20int&\2c\20int&\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::GaussPass&&\29::'lambda'\28char*\29::__invoke\28char*\29 9763:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::DrawAtlasPathShader*\20SkArenaAlloc::make<\28anonymous\20namespace\29::DrawAtlasPathShader\2c\20bool&\2c\20skgpu::ganesh::AtlasInstancedHelper*\2c\20GrShaderCaps\20const&>\28bool&\2c\20skgpu::ganesh::AtlasInstancedHelper*&&\2c\20GrShaderCaps\20const&\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::DrawAtlasPathShader&&\29::'lambda'\28char*\29::__invoke\28char*\29 9764:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make<\28anonymous\20namespace\29::BoundingBoxShader*\20SkArenaAlloc::make<\28anonymous\20namespace\29::BoundingBoxShader\2c\20SkRGBA4f<\28SkAlphaType\292>&\2c\20GrShaderCaps\20const&>\28SkRGBA4f<\28SkAlphaType\292>&\2c\20GrShaderCaps\20const&\29::'lambda'\28void*\29>\28\28anonymous\20namespace\29::BoundingBoxShader&&\29::'lambda'\28char*\29::__invoke\28char*\29 9765:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkPixmap\20const&\2c\20unsigned\20char&&\29::'lambda'\28void*\29>\28Sprite_D32_S32&&\29::'lambda'\28char*\29::__invoke\28char*\29 9766:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28bool&&\2c\20bool\20const&\29::'lambda'\28void*\29>\28SkTriColorShader&&\29::'lambda'\28char*\29::__invoke\28char*\29 9767:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28\29::'lambda'\28void*\29>\28SkTCubic&&\29::'lambda'\28char*\29::__invoke\28char*\29 9768:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28\29::'lambda'\28void*\29>\28SkTConic&&\29::'lambda'\28char*\29::__invoke\28char*\29 9769:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkPixmap\20const&\29::'lambda'\28void*\29>\28SkSpriteBlitter_Memcpy&&\29::'lambda'\28char*\29::__invoke\28char*\29 9770:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make&>\28SkPixmap\20const&\2c\20SkArenaAlloc*&\2c\20sk_sp&\29::'lambda'\28void*\29>\28SkRasterPipelineSpriteBlitter&&\29::'lambda'\28char*\29::__invoke\28char*\29 9771:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkPixmap\20const&\2c\20SkArenaAlloc*&\29::'lambda'\28void*\29>\28SkRasterPipelineBlitter&&\29::'lambda'\28char*\29::__invoke\28char*\29 9772:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28\29::'lambda'\28void*\29>\28SkNullBlitter&&\29::'lambda'\28char*\29::__invoke\28char*\29 9773:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkImage_Base\20const*&&\2c\20SkMatrix\20const&\2c\20SkMipmapMode&\29::'lambda'\28void*\29>\28SkMipmapAccessor&&\29::'lambda'\28char*\29::__invoke\28char*\29 9774:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28\29::'lambda'\28void*\29>\28SkGlyph::PathData&&\29::'lambda'\28char*\29::__invoke\28char*\29 9775:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28\29::'lambda'\28void*\29>\28SkGlyph::DrawableData&&\29::'lambda'\28char*\29::__invoke\28char*\29 9776:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkGlyph&&\29::'lambda'\28void*\29>\28SkGlyph&&\29::'lambda'\28char*\29::__invoke\28char*\29 9777:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make&\29>>::Node*\20SkArenaAlloc::make&\29>>::Node\2c\20std::__2::function&\29>>\28std::__2::function&\29>&&\29::'lambda'\28void*\29>\28SkArenaAllocList&\29>>::Node&&\29::'lambda'\28char*\29::__invoke\28char*\29 9778:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make::Node*\20SkArenaAlloc::make::Node\2c\20std::__2::function&\29>\2c\20skgpu::AtlasToken>\28std::__2::function&\29>&&\2c\20skgpu::AtlasToken&&\29::'lambda'\28void*\29>\28SkArenaAllocList::Node&&\29::'lambda'\28char*\29::__invoke\28char*\29 9779:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make::Node*\20SkArenaAlloc::make::Node>\28\29::'lambda'\28void*\29>\28SkArenaAllocList::Node&&\29::'lambda'\28char*\29::__invoke\28char*\29 9780:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkPixmap\20const&\2c\20SkPaint\20const&\29::'lambda'\28void*\29>\28SkA8_Coverage_Blitter&&\29::'lambda'\28char*\29::__invoke\28char*\29 9781:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28\29::'lambda'\28void*\29>\28GrSimpleMesh&&\29::'lambda'\28char*\29::__invoke\28char*\29 9782:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28GrSurfaceProxy*&\2c\20skgpu::ScratchKey&&\2c\20GrResourceProvider*&\29::'lambda'\28void*\29>\28GrResourceAllocator::Register&&\29::'lambda'\28char*\29::__invoke\28char*\29 9783:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28SkPath\20const&\2c\20SkArenaAlloc*\20const&\29::'lambda'\28void*\29>\28GrInnerFanTriangulator&&\29::'lambda'\28char*\29::__invoke\28char*\29 9784:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28GrDistanceFieldLCDTextGeoProc::Make\28SkArenaAlloc*\2c\20GrShaderCaps\20const&\2c\20GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\2c\20GrDistanceFieldLCDTextGeoProc::DistanceAdjust\2c\20unsigned\20int\2c\20SkMatrix\20const&\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 9785:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\20const&\2c\20bool\2c\20sk_sp\2c\20GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\2c\20skgpu::MaskFormat\2c\20SkMatrix\20const&\2c\20bool\29::'lambda'\28void*\29>\28GrBitmapTextGeoProc::Make\28SkArenaAlloc*\2c\20GrShaderCaps\20const&\2c\20SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20bool\2c\20sk_sp\2c\20GrSurfaceProxyView\20const*\2c\20int\2c\20GrSamplerState\2c\20skgpu::MaskFormat\2c\20SkMatrix\20const&\2c\20bool\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 9786:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28GrAppliedClip&&\29::'lambda'\28void*\29>\28GrAppliedClip&&\29::'lambda'\28char*\29::__invoke\28char*\29 9787:decltype\28fp\28nullptr\29\29\20SkArenaAlloc::make\28EllipseGeometryProcessor::Make\28SkArenaAlloc*\2c\20bool\2c\20bool\2c\20bool\2c\20SkMatrix\20const&\29::'lambda'\28void*\29&&\29::'lambda'\28char*\29::__invoke\28char*\29 9788:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul\2c\201ul>::__dispatch\5babi:v160004\5d>::__generic_construct\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&>\28std::__2::__variant_detail::__ctor>&\2c\20std::__2::__variant_detail::__copy_constructor\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\29::'lambda'\28std::__2::__variant_detail::__copy_constructor\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__copy_constructor\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 9789:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul\2c\201ul>::__dispatch\5babi:v160004\5d>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__visitation::__variant::__value_visitor>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 9790:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul\2c\201ul>::__dispatch\5babi:v160004\5d>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__visitation::__variant::__value_visitor>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 9791:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<1ul>::__dispatch\5babi:v160004\5d\2c\20std::__2::unique_ptr>>\2c\20\28std::__2::__variant_detail::_Trait\291>::__destroy\5babi:v160004\5d\28\29::'lambda'\28auto&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&>\28auto\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&\29 9792:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul\2c\200ul>::__dispatch\5babi:v160004\5d>::__generic_construct\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&>\28std::__2::__variant_detail::__ctor>&\2c\20std::__2::__variant_detail::__copy_constructor\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\29::'lambda'\28std::__2::__variant_detail::__copy_constructor\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__copy_constructor\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 9793:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul\2c\200ul>::__dispatch\5babi:v160004\5d>::__generic_assign\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>>\28std::__2::__variant_detail::__move_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>&&\29::'lambda'\28std::__2::__variant_detail::__move_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&&>\28std::__2::__variant_detail::__move_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&&\29 9794:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul\2c\200ul>::__dispatch\5babi:v160004\5d>::__generic_assign\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&>\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\29::'lambda'\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20auto&&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__copy_assignment\2c\20\28std::__2::__variant_detail::_Trait\291>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 9795:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul\2c\200ul>::__dispatch\5babi:v160004\5d>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__visitation::__variant::__value_visitor>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 9796:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul\2c\200ul>::__dispatch\5babi:v160004\5d>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&>\28std::__2::__variant_detail::__visitation::__variant::__value_visitor>>&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>\20const&\29 9797:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul>::__dispatch\5babi:v160004\5d\2c\20std::__2::unique_ptr>>\2c\20\28std::__2::__variant_detail::_Trait\291>::__destroy\5babi:v160004\5d\28\29::'lambda'\28auto&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&>\28auto\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20sk_sp\2c\20std::__2::unique_ptr>>&\29 9798:decltype\28auto\29\20std::__2::__variant_detail::__visitation::__base::__dispatcher<0ul>::__dispatch\5babi:v160004\5d\2c\20\28std::__2::__variant_detail::_Trait\291>::__destroy\5babi:v160004\5d\28\29::'lambda'\28auto&\29&&\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&>\28auto\2c\20std::__2::__variant_detail::__base<\28std::__2::__variant_detail::_Trait\291\2c\20SkPaint\2c\20int>&\29 9799:deallocate_buffer_var\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 9800:ddquad_xy_at_t\28SkDCurve\20const&\2c\20double\29 9801:ddquad_dxdy_at_t\28SkDCurve\20const&\2c\20double\29 9802:ddline_xy_at_t\28SkDCurve\20const&\2c\20double\29 9803:ddline_dxdy_at_t\28SkDCurve\20const&\2c\20double\29 9804:ddcubic_xy_at_t\28SkDCurve\20const&\2c\20double\29 9805:ddcubic_dxdy_at_t\28SkDCurve\20const&\2c\20double\29 9806:ddconic_xy_at_t\28SkDCurve\20const&\2c\20double\29 9807:ddconic_dxdy_at_t\28SkDCurve\20const&\2c\20double\29 9808:dconic_xy_at_t\28SkPoint\20const*\2c\20float\2c\20double\29 9809:data_destroy_use\28void*\29 9810:data_create_use\28hb_ot_shape_plan_t\20const*\29 9811:data_create_khmer\28hb_ot_shape_plan_t\20const*\29 9812:data_create_indic\28hb_ot_shape_plan_t\20const*\29 9813:data_create_hangul\28hb_ot_shape_plan_t\20const*\29 9814:convert_to_alpha8\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkImageInfo\20const&\2c\20void\20const*\2c\20unsigned\20long\2c\20SkColorSpaceXformSteps\20const&\29 9815:convert_bytes_to_data 9816:contourMeasure_isClosed 9817:contourMeasure_getSegment 9818:contourMeasure_getPosTan 9819:contourMeasureIter_next 9820:contourMeasureIter_dispose 9821:contourMeasureIter_create 9822:compose_unicode\28hb_ot_shape_normalize_context_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\29 9823:compose_indic\28hb_ot_shape_normalize_context_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\29 9824:compose_hebrew\28hb_ot_shape_normalize_context_t\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\29 9825:compare_ppem 9826:compare_offsets 9827:compare_myanmar_order\28hb_glyph_info_t\20const*\2c\20hb_glyph_info_t\20const*\29 9828:compare_combining_class\28hb_glyph_info_t\20const*\2c\20hb_glyph_info_t\20const*\29 9829:colorFilter_createSRGBToLinearGamma 9830:colorFilter_createMode 9831:colorFilter_createMatrix 9832:colorFilter_createLinearToSRGBGamma 9833:colorFilter_compose 9834:collect_features_use\28hb_ot_shape_planner_t*\29 9835:collect_features_myanmar\28hb_ot_shape_planner_t*\29 9836:collect_features_khmer\28hb_ot_shape_planner_t*\29 9837:collect_features_indic\28hb_ot_shape_planner_t*\29 9838:collect_features_hangul\28hb_ot_shape_planner_t*\29 9839:collect_features_arabic\28hb_ot_shape_planner_t*\29 9840:clip\28SkPath\20const&\2c\20SkHalfPlane\20const&\29::$_0::__invoke\28SkEdgeClipper*\2c\20bool\2c\20void*\29 9841:cleanup 9842:check_for_passthrough_local_coords_and_dead_varyings\28SkSL::Program\20const&\2c\20unsigned\20int*\29::Visitor::visitStatement\28SkSL::Statement\20const&\29 9843:check_for_passthrough_local_coords_and_dead_varyings\28SkSL::Program\20const&\2c\20unsigned\20int*\29::Visitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 9844:check_for_passthrough_local_coords_and_dead_varyings\28SkSL::Program\20const&\2c\20unsigned\20int*\29::Visitor::visitExpression\28SkSL::Expression\20const&\29 9845:cff_slot_init 9846:cff_slot_done 9847:cff_size_request 9848:cff_size_init 9849:cff_size_done 9850:cff_sid_to_glyph_name 9851:cff_set_var_design 9852:cff_set_mm_weightvector 9853:cff_set_mm_blend 9854:cff_set_instance 9855:cff_random 9856:cff_ps_has_glyph_names 9857:cff_ps_get_font_info 9858:cff_ps_get_font_extra 9859:cff_parse_vsindex 9860:cff_parse_private_dict 9861:cff_parse_multiple_master 9862:cff_parse_maxstack 9863:cff_parse_font_matrix 9864:cff_parse_font_bbox 9865:cff_parse_cid_ros 9866:cff_parse_blend 9867:cff_metrics_adjust 9868:cff_hadvance_adjust 9869:cff_get_var_design 9870:cff_get_var_blend 9871:cff_get_standard_encoding 9872:cff_get_ros 9873:cff_get_ps_name 9874:cff_get_name_index 9875:cff_get_mm_weightvector 9876:cff_get_mm_var 9877:cff_get_mm_blend 9878:cff_get_is_cid 9879:cff_get_interface 9880:cff_get_glyph_name 9881:cff_get_cmap_info 9882:cff_get_cid_from_glyph_index 9883:cff_get_advances 9884:cff_free_glyph_data 9885:cff_face_init 9886:cff_face_done 9887:cff_driver_init 9888:cff_done_blend 9889:cff_decoder_prepare 9890:cff_decoder_init 9891:cff_cmap_unicode_init 9892:cff_cmap_unicode_char_next 9893:cff_cmap_unicode_char_index 9894:cff_cmap_encoding_init 9895:cff_cmap_encoding_done 9896:cff_cmap_encoding_char_next 9897:cff_cmap_encoding_char_index 9898:cff_builder_start_point 9899:cf2_free_instance 9900:cf2_decoder_parse_charstrings 9901:cf2_builder_moveTo 9902:cf2_builder_lineTo 9903:cf2_builder_cubeTo 9904:canvas_translate 9905:canvas_transform 9906:canvas_skew 9907:canvas_scale 9908:canvas_saveLayer 9909:canvas_save 9910:canvas_rotate 9911:canvas_restoreToCount 9912:canvas_restore 9913:canvas_getTransform 9914:canvas_getSaveCount 9915:canvas_getLocalClipBounds 9916:canvas_getDeviceClipBounds 9917:canvas_drawVertices 9918:canvas_drawShadow 9919:canvas_drawRect 9920:canvas_drawRRect 9921:canvas_drawPoints 9922:canvas_drawPicture 9923:canvas_drawPath 9924:canvas_drawParagraph 9925:canvas_drawPaint 9926:canvas_drawOval 9927:canvas_drawLine 9928:canvas_drawImageRect 9929:canvas_drawImageNine 9930:canvas_drawImage 9931:canvas_drawDRRect 9932:canvas_drawColor 9933:canvas_drawCircle 9934:canvas_drawAtlas 9935:canvas_drawArc 9936:canvas_clipRect 9937:canvas_clipRRect 9938:canvas_clipPath 9939:cancel_notification 9940:bw_to_a8\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29 9941:bw_square_proc\28PtProcRec\20const&\2c\20SkPoint\20const*\2c\20int\2c\20SkBlitter*\29 9942:bw_pt_hair_proc\28PtProcRec\20const&\2c\20SkPoint\20const*\2c\20int\2c\20SkBlitter*\29 9943:bw_poly_hair_proc\28PtProcRec\20const&\2c\20SkPoint\20const*\2c\20int\2c\20SkBlitter*\29 9944:bw_line_hair_proc\28PtProcRec\20const&\2c\20SkPoint\20const*\2c\20int\2c\20SkBlitter*\29 9945:bool\20\28anonymous\20namespace\29::FindVisitor<\28anonymous\20namespace\29::SpotVerticesFactory>\28SkResourceCache::Rec\20const&\2c\20void*\29 9946:bool\20\28anonymous\20namespace\29::FindVisitor<\28anonymous\20namespace\29::AmbientVerticesFactory>\28SkResourceCache::Rec\20const&\2c\20void*\29 9947:bool\20OT::hb_accelerate_subtables_context_t::apply_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 9948:bool\20OT::hb_accelerate_subtables_context_t::apply_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 9949:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 9950:bool\20OT::hb_accelerate_subtables_context_t::apply_cached_to>\28void\20const*\2c\20OT::hb_ot_apply_context_t*\29 9951:bool\20OT::cmap::accelerator_t::get_glyph_from_symbol\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\29 9952:bool\20OT::cmap::accelerator_t::get_glyph_from_symbol\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\29 9953:bool\20OT::cmap::accelerator_t::get_glyph_from_symbol\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\29 9954:bool\20OT::cmap::accelerator_t::get_glyph_from\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\29 9955:bool\20OT::cmap::accelerator_t::get_glyph_from\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\29 9956:blur_y_radius_4\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 9957:blur_y_radius_3\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 9958:blur_y_radius_2\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 9959:blur_y_radius_1\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 9960:blur_x_radius_4\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 9961:blur_x_radius_3\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 9962:blur_x_radius_2\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 9963:blur_x_radius_1\28skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>\20const&\2c\20skvx::Vec<8\2c\20unsigned\20short>*\2c\20skvx::Vec<8\2c\20unsigned\20short>*\29 9964:blit_row_s32a_blend\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int\29 9965:blit_row_s32_opaque\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int\29 9966:blit_row_s32_blend\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int\29 9967:argb32_to_a8\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20int\29 9968:arabic_fallback_shape\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 9969:afm_parser_parse 9970:afm_parser_init 9971:afm_parser_done 9972:afm_compare_kern_pairs 9973:af_property_set 9974:af_property_get 9975:af_latin_metrics_scale 9976:af_latin_metrics_init 9977:af_latin_hints_init 9978:af_latin_hints_apply 9979:af_latin_get_standard_widths 9980:af_indic_metrics_scale 9981:af_indic_metrics_init 9982:af_indic_hints_init 9983:af_indic_hints_apply 9984:af_get_interface 9985:af_face_globals_free 9986:af_dummy_hints_init 9987:af_dummy_hints_apply 9988:af_cjk_metrics_init 9989:af_autofitter_load_glyph 9990:af_autofitter_init 9991:aa_square_proc\28PtProcRec\20const&\2c\20SkPoint\20const*\2c\20int\2c\20SkBlitter*\29 9992:aa_poly_hair_proc\28PtProcRec\20const&\2c\20SkPoint\20const*\2c\20int\2c\20SkBlitter*\29 9993:aa_line_hair_proc\28PtProcRec\20const&\2c\20SkPoint\20const*\2c\20int\2c\20SkBlitter*\29 9994:_hb_ot_font_destroy\28void*\29 9995:_hb_glyph_info_is_default_ignorable\28hb_glyph_info_t\20const*\29 9996:_hb_face_for_data_reference_table\28hb_face_t*\2c\20unsigned\20int\2c\20void*\29 9997:_hb_face_for_data_closure_destroy\28void*\29 9998:_hb_clear_substitution_flags\28hb_ot_shape_plan_t\20const*\2c\20hb_font_t*\2c\20hb_buffer_t*\29 9999:_hb_blob_destroy\28void*\29 10000:_emscripten_tls_init 10001:_emscripten_thread_init 10002:_emscripten_thread_free_data 10003:_emscripten_thread_exit 10004:_emscripten_thread_crashed 10005:_emscripten_run_in_main_runtime_thread_js 10006:_emscripten_check_mailbox 10007:__wasm_init_memory 10008:__wasm_call_ctors 10009:__stdio_write 10010:__stdio_seek 10011:__stdio_read 10012:__stdio_close 10013:__emscripten_stdout_seek 10014:__cxxabiv1::__vmi_class_type_info::search_below_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 10015:__cxxabiv1::__vmi_class_type_info::search_above_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 10016:__cxxabiv1::__vmi_class_type_info::has_unambiguous_public_base\28__cxxabiv1::__dynamic_cast_info*\2c\20void*\2c\20int\29\20const 10017:__cxxabiv1::__si_class_type_info::search_below_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 10018:__cxxabiv1::__si_class_type_info::search_above_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 10019:__cxxabiv1::__si_class_type_info::has_unambiguous_public_base\28__cxxabiv1::__dynamic_cast_info*\2c\20void*\2c\20int\29\20const 10020:__cxxabiv1::__class_type_info::search_below_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 10021:__cxxabiv1::__class_type_info::search_above_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20void\20const*\2c\20int\2c\20bool\29\20const 10022:__cxxabiv1::__class_type_info::has_unambiguous_public_base\28__cxxabiv1::__dynamic_cast_info*\2c\20void*\2c\20int\29\20const 10023:__cxxabiv1::__class_type_info::can_catch\28__cxxabiv1::__shim_type_info\20const*\2c\20void*&\29\20const 10024:__cxx_global_array_dtor.9439 10025:__cxx_global_array_dtor.87 10026:__cxx_global_array_dtor.7957 10027:__cxx_global_array_dtor.72 10028:__cxx_global_array_dtor.6084 10029:__cxx_global_array_dtor.57 10030:__cxx_global_array_dtor.5029 10031:__cxx_global_array_dtor.4718 10032:__cxx_global_array_dtor.44 10033:__cxx_global_array_dtor.42 10034:__cxx_global_array_dtor.4158 10035:__cxx_global_array_dtor.402 10036:__cxx_global_array_dtor.40 10037:__cxx_global_array_dtor.38 10038:__cxx_global_array_dtor.3738 10039:__cxx_global_array_dtor.36 10040:__cxx_global_array_dtor.34 10041:__cxx_global_array_dtor.331 10042:__cxx_global_array_dtor.32 10043:__cxx_global_array_dtor.1964 10044:__cxx_global_array_dtor.138 10045:__cxx_global_array_dtor.135 10046:__cxx_global_array_dtor.111 10047:__cxx_global_array_dtor.1 10048:__cxx_global_array_dtor 10049:__cxa_is_pointer_type 10050:\28anonymous\20namespace\29::skhb_nominal_glyphs\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20unsigned\20int\2c\20void*\29 10051:\28anonymous\20namespace\29::skhb_nominal_glyph\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 10052:\28anonymous\20namespace\29::skhb_glyph_h_advances\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\20const*\2c\20unsigned\20int\2c\20int*\2c\20unsigned\20int\2c\20void*\29 10053:\28anonymous\20namespace\29::skhb_glyph_h_advance\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20void*\29 10054:\28anonymous\20namespace\29::skhb_glyph_extents\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20hb_glyph_extents_t*\2c\20void*\29 10055:\28anonymous\20namespace\29::skhb_glyph\28hb_font_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20void*\29 10056:\28anonymous\20namespace\29::skhb_get_table\28hb_face_t*\2c\20unsigned\20int\2c\20void*\29::$_0::__invoke\28void*\29 10057:\28anonymous\20namespace\29::skhb_get_table\28hb_face_t*\2c\20unsigned\20int\2c\20void*\29 10058:\28anonymous\20namespace\29::make_morphology\28\28anonymous\20namespace\29::MorphType\2c\20SkSize\2c\20sk_sp\2c\20SkImageFilters::CropRect\20const&\29 10059:\28anonymous\20namespace\29::create_sub_hb_font\28SkFont\20const&\2c\20std::__2::unique_ptr>\20const&\29::$_0::__invoke\28void*\29 10060:\28anonymous\20namespace\29::YUVPlanesRec::~YUVPlanesRec\28\29.1 10061:\28anonymous\20namespace\29::YUVPlanesRec::getCategory\28\29\20const 10062:\28anonymous\20namespace\29::YUVPlanesRec::diagnostic_only_getDiscardable\28\29\20const 10063:\28anonymous\20namespace\29::YUVPlanesRec::bytesUsed\28\29\20const 10064:\28anonymous\20namespace\29::YUVPlanesRec::Visitor\28SkResourceCache::Rec\20const&\2c\20void*\29 10065:\28anonymous\20namespace\29::UniqueKeyInvalidator::~UniqueKeyInvalidator\28\29.1 10066:\28anonymous\20namespace\29::TriangulatingPathOp::~TriangulatingPathOp\28\29.1 10067:\28anonymous\20namespace\29::TriangulatingPathOp::visitProxies\28std::__2::function\20const&\29\20const 10068:\28anonymous\20namespace\29::TriangulatingPathOp::programInfo\28\29 10069:\28anonymous\20namespace\29::TriangulatingPathOp::onPrepareDraws\28GrMeshDrawTarget*\29 10070:\28anonymous\20namespace\29::TriangulatingPathOp::onPrePrepareDraws\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 10071:\28anonymous\20namespace\29::TriangulatingPathOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 10072:\28anonymous\20namespace\29::TriangulatingPathOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 10073:\28anonymous\20namespace\29::TriangulatingPathOp::name\28\29\20const 10074:\28anonymous\20namespace\29::TriangulatingPathOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 10075:\28anonymous\20namespace\29::TransformedMaskSubRun::unflattenSize\28\29\20const 10076:\28anonymous\20namespace\29::TransformedMaskSubRun::instanceFlags\28\29\20const 10077:\28anonymous\20namespace\29::TransformedMaskSubRun::draw\28SkCanvas*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20std::__2::function\2c\20sktext::gpu::RendererData\29>\20const&\29\20const 10078:\28anonymous\20namespace\29::TransformedMaskSubRun::doFlatten\28SkWriteBuffer&\29\20const 10079:\28anonymous\20namespace\29::TransformedMaskSubRun::canReuse\28SkPaint\20const&\2c\20SkMatrix\20const&\29\20const 10080:\28anonymous\20namespace\29::TextureOpImpl::~TextureOpImpl\28\29.1 10081:\28anonymous\20namespace\29::TextureOpImpl::visitProxies\28std::__2::function\20const&\29\20const 10082:\28anonymous\20namespace\29::TextureOpImpl::programInfo\28\29 10083:\28anonymous\20namespace\29::TextureOpImpl::onPrepareDraws\28GrMeshDrawTarget*\29 10084:\28anonymous\20namespace\29::TextureOpImpl::onPrePrepareDraws\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 10085:\28anonymous\20namespace\29::TextureOpImpl::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 10086:\28anonymous\20namespace\29::TextureOpImpl::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 10087:\28anonymous\20namespace\29::TextureOpImpl::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 10088:\28anonymous\20namespace\29::TextureOpImpl::name\28\29\20const 10089:\28anonymous\20namespace\29::TextureOpImpl::fixedFunctionFlags\28\29\20const 10090:\28anonymous\20namespace\29::TextureOpImpl::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 10091:\28anonymous\20namespace\29::TentPass::startBlur\28\29 10092:\28anonymous\20namespace\29::TentPass::blurSegment\28int\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int*\2c\20int\29 10093:\28anonymous\20namespace\29::TentPass::MakeMaker\28double\2c\20SkArenaAlloc*\29::Maker::makePass\28void*\2c\20SkArenaAlloc*\29\20const 10094:\28anonymous\20namespace\29::TentPass::MakeMaker\28double\2c\20SkArenaAlloc*\29::Maker::bufferSizeBytes\28\29\20const 10095:\28anonymous\20namespace\29::StaticVertexAllocator::~StaticVertexAllocator\28\29.1 10096:\28anonymous\20namespace\29::StaticVertexAllocator::unlock\28int\29 10097:\28anonymous\20namespace\29::StaticVertexAllocator::lock\28unsigned\20long\2c\20int\29 10098:\28anonymous\20namespace\29::SkUnicodeHbScriptRunIterator::currentScript\28\29\20const 10099:\28anonymous\20namespace\29::SkUnicodeHbScriptRunIterator::consume\28\29 10100:\28anonymous\20namespace\29::SkMorphologyImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 10101:\28anonymous\20namespace\29::SkMorphologyImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 10102:\28anonymous\20namespace\29::SkMorphologyImageFilter::onFilterImage\28skif::Context\20const&\29\20const 10103:\28anonymous\20namespace\29::SkMorphologyImageFilter::getTypeName\28\29\20const 10104:\28anonymous\20namespace\29::SkMorphologyImageFilter::flatten\28SkWriteBuffer&\29\20const 10105:\28anonymous\20namespace\29::SkMorphologyImageFilter::computeFastBounds\28SkRect\20const&\29\20const 10106:\28anonymous\20namespace\29::SkMatrixTransformImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 10107:\28anonymous\20namespace\29::SkMatrixTransformImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 10108:\28anonymous\20namespace\29::SkMatrixTransformImageFilter::onFilterImage\28skif::Context\20const&\29\20const 10109:\28anonymous\20namespace\29::SkMatrixTransformImageFilter::getTypeName\28\29\20const 10110:\28anonymous\20namespace\29::SkMatrixTransformImageFilter::flatten\28SkWriteBuffer&\29\20const 10111:\28anonymous\20namespace\29::SkMatrixTransformImageFilter::computeFastBounds\28SkRect\20const&\29\20const 10112:\28anonymous\20namespace\29::SkFTGeometrySink::Quad\28FT_Vector_\20const*\2c\20FT_Vector_\20const*\2c\20void*\29 10113:\28anonymous\20namespace\29::SkFTGeometrySink::Move\28FT_Vector_\20const*\2c\20void*\29 10114:\28anonymous\20namespace\29::SkFTGeometrySink::Line\28FT_Vector_\20const*\2c\20void*\29 10115:\28anonymous\20namespace\29::SkFTGeometrySink::Cubic\28FT_Vector_\20const*\2c\20FT_Vector_\20const*\2c\20FT_Vector_\20const*\2c\20void*\29 10116:\28anonymous\20namespace\29::SkEmptyTypeface::onGetFontDescriptor\28SkFontDescriptor*\2c\20bool*\29\20const 10117:\28anonymous\20namespace\29::SkEmptyTypeface::onGetFamilyName\28SkString*\29\20const 10118:\28anonymous\20namespace\29::SkEmptyTypeface::onCreateScalerContext\28SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29\20const 10119:\28anonymous\20namespace\29::SkEmptyTypeface::onCreateFamilyNameIterator\28\29\20const 10120:\28anonymous\20namespace\29::SkEmptyTypeface::onCharsToGlyphs\28int\20const*\2c\20int\2c\20unsigned\20short*\29\20const 10121:\28anonymous\20namespace\29::SkCropImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 10122:\28anonymous\20namespace\29::SkCropImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 10123:\28anonymous\20namespace\29::SkCropImageFilter::onFilterImage\28skif::Context\20const&\29\20const 10124:\28anonymous\20namespace\29::SkCropImageFilter::onAffectsTransparentBlack\28\29\20const 10125:\28anonymous\20namespace\29::SkCropImageFilter::getTypeName\28\29\20const 10126:\28anonymous\20namespace\29::SkCropImageFilter::flatten\28SkWriteBuffer&\29\20const 10127:\28anonymous\20namespace\29::SkCropImageFilter::computeFastBounds\28SkRect\20const&\29\20const 10128:\28anonymous\20namespace\29::SkComposeImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 10129:\28anonymous\20namespace\29::SkComposeImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 10130:\28anonymous\20namespace\29::SkComposeImageFilter::onFilterImage\28skif::Context\20const&\29\20const 10131:\28anonymous\20namespace\29::SkComposeImageFilter::getTypeName\28\29\20const 10132:\28anonymous\20namespace\29::SkComposeImageFilter::computeFastBounds\28SkRect\20const&\29\20const 10133:\28anonymous\20namespace\29::SkColorFilterImageFilter::~SkColorFilterImageFilter\28\29.1 10134:\28anonymous\20namespace\29::SkColorFilterImageFilter::onIsColorFilterNode\28SkColorFilter**\29\20const 10135:\28anonymous\20namespace\29::SkColorFilterImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 10136:\28anonymous\20namespace\29::SkColorFilterImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 10137:\28anonymous\20namespace\29::SkColorFilterImageFilter::onFilterImage\28skif::Context\20const&\29\20const 10138:\28anonymous\20namespace\29::SkColorFilterImageFilter::onAffectsTransparentBlack\28\29\20const 10139:\28anonymous\20namespace\29::SkColorFilterImageFilter::getTypeName\28\29\20const 10140:\28anonymous\20namespace\29::SkColorFilterImageFilter::flatten\28SkWriteBuffer&\29\20const 10141:\28anonymous\20namespace\29::SkColorFilterImageFilter::computeFastBounds\28SkRect\20const&\29\20const 10142:\28anonymous\20namespace\29::SkBlurImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 10143:\28anonymous\20namespace\29::SkBlurImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 10144:\28anonymous\20namespace\29::SkBlurImageFilter::onFilterImage\28skif::Context\20const&\29\20const 10145:\28anonymous\20namespace\29::SkBlurImageFilter::getTypeName\28\29\20const 10146:\28anonymous\20namespace\29::SkBlurImageFilter::flatten\28SkWriteBuffer&\29\20const 10147:\28anonymous\20namespace\29::SkBlurImageFilter::computeFastBounds\28SkRect\20const&\29\20const 10148:\28anonymous\20namespace\29::SkBlendImageFilter::~SkBlendImageFilter\28\29.1 10149:\28anonymous\20namespace\29::SkBlendImageFilter::onGetOutputLayerBounds\28skif::Mapping\20const&\2c\20std::__2::optional>\29\20const 10150:\28anonymous\20namespace\29::SkBlendImageFilter::onGetInputLayerBounds\28skif::Mapping\20const&\2c\20skif::LayerSpace\20const&\2c\20std::__2::optional>\29\20const 10151:\28anonymous\20namespace\29::SkBlendImageFilter::onFilterImage\28skif::Context\20const&\29\20const 10152:\28anonymous\20namespace\29::SkBlendImageFilter::onAffectsTransparentBlack\28\29\20const 10153:\28anonymous\20namespace\29::SkBlendImageFilter::getTypeName\28\29\20const 10154:\28anonymous\20namespace\29::SkBlendImageFilter::flatten\28SkWriteBuffer&\29\20const 10155:\28anonymous\20namespace\29::SkBlendImageFilter::computeFastBounds\28SkRect\20const&\29\20const 10156:\28anonymous\20namespace\29::SkBidiIterator_icu::~SkBidiIterator_icu\28\29.1 10157:\28anonymous\20namespace\29::SkBidiIterator_icu::getLevelAt\28int\29 10158:\28anonymous\20namespace\29::SkBidiIterator_icu::getLength\28\29 10159:\28anonymous\20namespace\29::SimpleTriangleShader::name\28\29\20const 10160:\28anonymous\20namespace\29::SimpleTriangleShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::emitVertexCode\28GrShaderCaps\20const&\2c\20GrPathTessellationShader\20const&\2c\20GrGLSLVertexBuilder*\2c\20GrGLSLVaryingHandler*\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 10161:\28anonymous\20namespace\29::SimpleTriangleShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 10162:\28anonymous\20namespace\29::ShaperHarfBuzz::shape\28char\20const*\2c\20unsigned\20long\2c\20SkShaper::FontRunIterator&\2c\20SkShaper::BiDiRunIterator&\2c\20SkShaper::ScriptRunIterator&\2c\20SkShaper::LanguageRunIterator&\2c\20float\2c\20SkShaper::RunHandler*\29\20const 10163:\28anonymous\20namespace\29::ShaperHarfBuzz::shape\28char\20const*\2c\20unsigned\20long\2c\20SkShaper::FontRunIterator&\2c\20SkShaper::BiDiRunIterator&\2c\20SkShaper::ScriptRunIterator&\2c\20SkShaper::LanguageRunIterator&\2c\20SkShaper::Feature\20const*\2c\20unsigned\20long\2c\20float\2c\20SkShaper::RunHandler*\29\20const 10164:\28anonymous\20namespace\29::ShaperHarfBuzz::shape\28char\20const*\2c\20unsigned\20long\2c\20SkFont\20const&\2c\20bool\2c\20float\2c\20SkShaper::RunHandler*\29\20const 10165:\28anonymous\20namespace\29::ShapeDontWrapOrReorder::~ShapeDontWrapOrReorder\28\29 10166:\28anonymous\20namespace\29::ShapeDontWrapOrReorder::wrap\28char\20const*\2c\20unsigned\20long\2c\20SkShaper::BiDiRunIterator\20const&\2c\20SkShaper::LanguageRunIterator\20const&\2c\20SkShaper::ScriptRunIterator\20const&\2c\20SkShaper::FontRunIterator\20const&\2c\20\28anonymous\20namespace\29::RunIteratorQueue&\2c\20SkShaper::Feature\20const*\2c\20unsigned\20long\2c\20float\2c\20SkShaper::RunHandler*\29\20const 10167:\28anonymous\20namespace\29::ShadowInvalidator::~ShadowInvalidator\28\29.1 10168:\28anonymous\20namespace\29::ShadowInvalidator::changed\28\29 10169:\28anonymous\20namespace\29::ShadowCircularRRectOp::~ShadowCircularRRectOp\28\29.1 10170:\28anonymous\20namespace\29::ShadowCircularRRectOp::visitProxies\28std::__2::function\20const&\29\20const 10171:\28anonymous\20namespace\29::ShadowCircularRRectOp::programInfo\28\29 10172:\28anonymous\20namespace\29::ShadowCircularRRectOp::onPrepareDraws\28GrMeshDrawTarget*\29 10173:\28anonymous\20namespace\29::ShadowCircularRRectOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 10174:\28anonymous\20namespace\29::ShadowCircularRRectOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 10175:\28anonymous\20namespace\29::ShadowCircularRRectOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 10176:\28anonymous\20namespace\29::ShadowCircularRRectOp::name\28\29\20const 10177:\28anonymous\20namespace\29::ShadowCircularRRectOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 10178:\28anonymous\20namespace\29::SDFTSubRun::vertexStride\28SkMatrix\20const&\29\20const 10179:\28anonymous\20namespace\29::SDFTSubRun::vertexFiller\28\29\20const 10180:\28anonymous\20namespace\29::SDFTSubRun::unflattenSize\28\29\20const 10181:\28anonymous\20namespace\29::SDFTSubRun::testingOnly_packedGlyphIDToGlyph\28sktext::gpu::StrikeCache*\29\20const 10182:\28anonymous\20namespace\29::SDFTSubRun::glyphs\28\29\20const 10183:\28anonymous\20namespace\29::SDFTSubRun::draw\28SkCanvas*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20std::__2::function\2c\20sktext::gpu::RendererData\29>\20const&\29\20const 10184:\28anonymous\20namespace\29::SDFTSubRun::doFlatten\28SkWriteBuffer&\29\20const 10185:\28anonymous\20namespace\29::SDFTSubRun::canReuse\28SkPaint\20const&\2c\20SkMatrix\20const&\29\20const 10186:\28anonymous\20namespace\29::RectsBlurRec::~RectsBlurRec\28\29.1 10187:\28anonymous\20namespace\29::RectsBlurRec::getCategory\28\29\20const 10188:\28anonymous\20namespace\29::RectsBlurRec::diagnostic_only_getDiscardable\28\29\20const 10189:\28anonymous\20namespace\29::RectsBlurRec::bytesUsed\28\29\20const 10190:\28anonymous\20namespace\29::RectsBlurRec::Visitor\28SkResourceCache::Rec\20const&\2c\20void*\29 10191:\28anonymous\20namespace\29::RRectBlurRec::~RRectBlurRec\28\29.1 10192:\28anonymous\20namespace\29::RRectBlurRec::getCategory\28\29\20const 10193:\28anonymous\20namespace\29::RRectBlurRec::diagnostic_only_getDiscardable\28\29\20const 10194:\28anonymous\20namespace\29::RRectBlurRec::bytesUsed\28\29\20const 10195:\28anonymous\20namespace\29::RRectBlurRec::Visitor\28SkResourceCache::Rec\20const&\2c\20void*\29 10196:\28anonymous\20namespace\29::PathSubRun::~PathSubRun\28\29.1 10197:\28anonymous\20namespace\29::PathSubRun::unflattenSize\28\29\20const 10198:\28anonymous\20namespace\29::PathSubRun::draw\28SkCanvas*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20std::__2::function\2c\20sktext::gpu::RendererData\29>\20const&\29\20const 10199:\28anonymous\20namespace\29::PathSubRun::doFlatten\28SkWriteBuffer&\29\20const 10200:\28anonymous\20namespace\29::MipMapRec::~MipMapRec\28\29.1 10201:\28anonymous\20namespace\29::MipMapRec::getCategory\28\29\20const 10202:\28anonymous\20namespace\29::MipMapRec::diagnostic_only_getDiscardable\28\29\20const 10203:\28anonymous\20namespace\29::MipMapRec::bytesUsed\28\29\20const 10204:\28anonymous\20namespace\29::MipMapRec::Finder\28SkResourceCache::Rec\20const&\2c\20void*\29 10205:\28anonymous\20namespace\29::MiddleOutShader::~MiddleOutShader\28\29.1 10206:\28anonymous\20namespace\29::MiddleOutShader::name\28\29\20const 10207:\28anonymous\20namespace\29::MiddleOutShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::emitVertexCode\28GrShaderCaps\20const&\2c\20GrPathTessellationShader\20const&\2c\20GrGLSLVertexBuilder*\2c\20GrGLSLVaryingHandler*\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 10208:\28anonymous\20namespace\29::MiddleOutShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 10209:\28anonymous\20namespace\29::MiddleOutShader::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10210:\28anonymous\20namespace\29::MeshOp::~MeshOp\28\29.1 10211:\28anonymous\20namespace\29::MeshOp::visitProxies\28std::__2::function\20const&\29\20const 10212:\28anonymous\20namespace\29::MeshOp::programInfo\28\29 10213:\28anonymous\20namespace\29::MeshOp::onPrepareDraws\28GrMeshDrawTarget*\29 10214:\28anonymous\20namespace\29::MeshOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 10215:\28anonymous\20namespace\29::MeshOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 10216:\28anonymous\20namespace\29::MeshOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 10217:\28anonymous\20namespace\29::MeshOp::name\28\29\20const 10218:\28anonymous\20namespace\29::MeshOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 10219:\28anonymous\20namespace\29::MeshGP::~MeshGP\28\29.1 10220:\28anonymous\20namespace\29::MeshGP::onTextureSampler\28int\29\20const 10221:\28anonymous\20namespace\29::MeshGP::name\28\29\20const 10222:\28anonymous\20namespace\29::MeshGP::makeProgramImpl\28GrShaderCaps\20const&\29\20const 10223:\28anonymous\20namespace\29::MeshGP::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10224:\28anonymous\20namespace\29::MeshGP::Impl::~Impl\28\29.1 10225:\28anonymous\20namespace\29::MeshGP::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 10226:\28anonymous\20namespace\29::MeshGP::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 10227:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::toLinearSrgb\28std::__2::basic_string\2c\20std::__2::allocator>\29 10228:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::sampleShader\28int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 10229:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::sampleColorFilter\28int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 10230:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::sampleBlender\28int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 10231:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::getMainName\28\29 10232:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::fromLinearSrgb\28std::__2::basic_string\2c\20std::__2::allocator>\29 10233:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::defineFunction\28char\20const*\2c\20char\20const*\2c\20bool\29 10234:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::declareUniform\28SkSL::VarDeclaration\20const*\29 10235:\28anonymous\20namespace\29::MeshGP::Impl::MeshCallbacks::declareFunction\28char\20const*\29 10236:\28anonymous\20namespace\29::HQDownSampler::buildLevel\28SkPixmap\20const&\2c\20SkPixmap\20const&\29 10237:\28anonymous\20namespace\29::GaussPass::startBlur\28\29 10238:\28anonymous\20namespace\29::GaussPass::blurSegment\28int\2c\20unsigned\20int\20const*\2c\20int\2c\20unsigned\20int*\2c\20int\29 10239:\28anonymous\20namespace\29::GaussPass::MakeMaker\28double\2c\20SkArenaAlloc*\29::Maker::makePass\28void*\2c\20SkArenaAlloc*\29\20const 10240:\28anonymous\20namespace\29::GaussPass::MakeMaker\28double\2c\20SkArenaAlloc*\29::Maker::bufferSizeBytes\28\29\20const 10241:\28anonymous\20namespace\29::FillRectOpImpl::~FillRectOpImpl\28\29.1 10242:\28anonymous\20namespace\29::FillRectOpImpl::visitProxies\28std::__2::function\20const&\29\20const 10243:\28anonymous\20namespace\29::FillRectOpImpl::onPrepareDraws\28GrMeshDrawTarget*\29 10244:\28anonymous\20namespace\29::FillRectOpImpl::onPrePrepareDraws\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 10245:\28anonymous\20namespace\29::FillRectOpImpl::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 10246:\28anonymous\20namespace\29::FillRectOpImpl::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 10247:\28anonymous\20namespace\29::FillRectOpImpl::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 10248:\28anonymous\20namespace\29::FillRectOpImpl::name\28\29\20const 10249:\28anonymous\20namespace\29::FillRectOpImpl::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 10250:\28anonymous\20namespace\29::ExternalWebGLTexture::~ExternalWebGLTexture\28\29.1 10251:\28anonymous\20namespace\29::ExternalWebGLTexture::getBackendTexture\28\29 10252:\28anonymous\20namespace\29::ExternalWebGLTexture::dispose\28\29 10253:\28anonymous\20namespace\29::EllipticalRRectEffect::onMakeProgramImpl\28\29\20const 10254:\28anonymous\20namespace\29::EllipticalRRectEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10255:\28anonymous\20namespace\29::EllipticalRRectEffect::name\28\29\20const 10256:\28anonymous\20namespace\29::EllipticalRRectEffect::clone\28\29\20const 10257:\28anonymous\20namespace\29::EllipticalRRectEffect::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 10258:\28anonymous\20namespace\29::EllipticalRRectEffect::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 10259:\28anonymous\20namespace\29::DrawableSubRun::~DrawableSubRun\28\29.1 10260:\28anonymous\20namespace\29::DrawableSubRun::unflattenSize\28\29\20const 10261:\28anonymous\20namespace\29::DrawableSubRun::draw\28SkCanvas*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20std::__2::function\2c\20sktext::gpu::RendererData\29>\20const&\29\20const 10262:\28anonymous\20namespace\29::DrawableSubRun::doFlatten\28SkWriteBuffer&\29\20const 10263:\28anonymous\20namespace\29::DrawAtlasPathShader::~DrawAtlasPathShader\28\29.1 10264:\28anonymous\20namespace\29::DrawAtlasPathShader::onTextureSampler\28int\29\20const 10265:\28anonymous\20namespace\29::DrawAtlasPathShader::name\28\29\20const 10266:\28anonymous\20namespace\29::DrawAtlasPathShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 10267:\28anonymous\20namespace\29::DrawAtlasPathShader::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10268:\28anonymous\20namespace\29::DrawAtlasPathShader::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 10269:\28anonymous\20namespace\29::DrawAtlasPathShader::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 10270:\28anonymous\20namespace\29::DrawAtlasOpImpl::~DrawAtlasOpImpl\28\29.1 10271:\28anonymous\20namespace\29::DrawAtlasOpImpl::onPrepareDraws\28GrMeshDrawTarget*\29 10272:\28anonymous\20namespace\29::DrawAtlasOpImpl::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 10273:\28anonymous\20namespace\29::DrawAtlasOpImpl::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 10274:\28anonymous\20namespace\29::DrawAtlasOpImpl::name\28\29\20const 10275:\28anonymous\20namespace\29::DrawAtlasOpImpl::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 10276:\28anonymous\20namespace\29::DirectMaskSubRun::vertexStride\28SkMatrix\20const&\29\20const 10277:\28anonymous\20namespace\29::DirectMaskSubRun::unflattenSize\28\29\20const 10278:\28anonymous\20namespace\29::DirectMaskSubRun::instanceFlags\28\29\20const 10279:\28anonymous\20namespace\29::DirectMaskSubRun::draw\28SkCanvas*\2c\20SkPoint\2c\20SkPaint\20const&\2c\20sk_sp\2c\20std::__2::function\2c\20sktext::gpu::RendererData\29>\20const&\29\20const 10280:\28anonymous\20namespace\29::DirectMaskSubRun::doFlatten\28SkWriteBuffer&\29\20const 10281:\28anonymous\20namespace\29::DirectMaskSubRun::canReuse\28SkPaint\20const&\2c\20SkMatrix\20const&\29\20const 10282:\28anonymous\20namespace\29::DefaultPathOp::~DefaultPathOp\28\29.1 10283:\28anonymous\20namespace\29::DefaultPathOp::visitProxies\28std::__2::function\20const&\29\20const 10284:\28anonymous\20namespace\29::DefaultPathOp::onPrepareDraws\28GrMeshDrawTarget*\29 10285:\28anonymous\20namespace\29::DefaultPathOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 10286:\28anonymous\20namespace\29::DefaultPathOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 10287:\28anonymous\20namespace\29::DefaultPathOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 10288:\28anonymous\20namespace\29::DefaultPathOp::name\28\29\20const 10289:\28anonymous\20namespace\29::DefaultPathOp::fixedFunctionFlags\28\29\20const 10290:\28anonymous\20namespace\29::DefaultPathOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 10291:\28anonymous\20namespace\29::CircularRRectEffect::onMakeProgramImpl\28\29\20const 10292:\28anonymous\20namespace\29::CircularRRectEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 10293:\28anonymous\20namespace\29::CircularRRectEffect::name\28\29\20const 10294:\28anonymous\20namespace\29::CircularRRectEffect::clone\28\29\20const 10295:\28anonymous\20namespace\29::CircularRRectEffect::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 10296:\28anonymous\20namespace\29::CircularRRectEffect::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 10297:\28anonymous\20namespace\29::CachedTessellationsRec::~CachedTessellationsRec\28\29.1 10298:\28anonymous\20namespace\29::CachedTessellationsRec::getCategory\28\29\20const 10299:\28anonymous\20namespace\29::CachedTessellationsRec::bytesUsed\28\29\20const 10300:\28anonymous\20namespace\29::CachedTessellations::~CachedTessellations\28\29.1 10301:\28anonymous\20namespace\29::CacheImpl::~CacheImpl\28\29.1 10302:\28anonymous\20namespace\29::CacheImpl::set\28SkImageFilterCacheKey\20const&\2c\20SkImageFilter\20const*\2c\20skif::FilterResult\20const&\29 10303:\28anonymous\20namespace\29::CacheImpl::purge\28\29 10304:\28anonymous\20namespace\29::CacheImpl::purgeByImageFilter\28SkImageFilter\20const*\29 10305:\28anonymous\20namespace\29::CacheImpl::get\28SkImageFilterCacheKey\20const&\2c\20skif::FilterResult*\29\20const 10306:\28anonymous\20namespace\29::BoundingBoxShader::name\28\29\20const 10307:\28anonymous\20namespace\29::BoundingBoxShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 10308:\28anonymous\20namespace\29::BoundingBoxShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 10309:\28anonymous\20namespace\29::BoundingBoxShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 10310:\28anonymous\20namespace\29::AAHairlineOp::~AAHairlineOp\28\29.1 10311:\28anonymous\20namespace\29::AAHairlineOp::visitProxies\28std::__2::function\20const&\29\20const 10312:\28anonymous\20namespace\29::AAHairlineOp::onPrepareDraws\28GrMeshDrawTarget*\29 10313:\28anonymous\20namespace\29::AAHairlineOp::onPrePrepareDraws\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 10314:\28anonymous\20namespace\29::AAHairlineOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 10315:\28anonymous\20namespace\29::AAHairlineOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 10316:\28anonymous\20namespace\29::AAHairlineOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 10317:\28anonymous\20namespace\29::AAHairlineOp::name\28\29\20const 10318:\28anonymous\20namespace\29::AAHairlineOp::fixedFunctionFlags\28\29\20const 10319:\28anonymous\20namespace\29::AAHairlineOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 10320:Write_CVT_Stretched 10321:Write_CVT 10322:Vertish_SkAntiHairBlitter::drawLine\28int\2c\20int\2c\20int\2c\20int\29 10323:Vertish_SkAntiHairBlitter::drawCap\28int\2c\20int\2c\20int\2c\20int\29 10324:VertState::Triangles\28VertState*\29 10325:VertState::TrianglesX\28VertState*\29 10326:VertState::TriangleStrip\28VertState*\29 10327:VertState::TriangleStripX\28VertState*\29 10328:VertState::TriangleFan\28VertState*\29 10329:VertState::TriangleFanX\28VertState*\29 10330:VLine_SkAntiHairBlitter::drawLine\28int\2c\20int\2c\20int\2c\20int\29 10331:VLine_SkAntiHairBlitter::drawCap\28int\2c\20int\2c\20int\2c\20int\29 10332:TextureSourceImageGenerator::~TextureSourceImageGenerator\28\29.1 10333:TextureSourceImageGenerator::generateExternalTexture\28GrRecordingContext*\2c\20skgpu::Mipmapped\29 10334:TT_Set_MM_Blend 10335:TT_RunIns 10336:TT_Load_Simple_Glyph 10337:TT_Load_Glyph_Header 10338:TT_Load_Composite_Glyph 10339:TT_Get_Var_Design 10340:TT_Get_MM_Blend 10341:TT_Forget_Glyph_Frame 10342:TT_Access_Glyph_Frame 10343:TOUPPER\28unsigned\20char\29 10344:TOLOWER\28unsigned\20char\29 10345:SquareCapper\28SkPath*\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPath*\29 10346:Sprite_D32_S32::blitRect\28int\2c\20int\2c\20int\2c\20int\29 10347:Skwasm::Surface::fRasterizeImage\28Skwasm::Surface*\2c\20SkImage*\2c\20Skwasm::ImageByteFormat\2c\20unsigned\20int\29 10348:Skwasm::Surface::fOnRasterizeComplete\28Skwasm::Surface*\2c\20SkData*\2c\20unsigned\20int\29 10349:Skwasm::Surface::fDispose\28Skwasm::Surface*\29 10350:Skwasm::Surface::Surface\28\29::$_0::__invoke\28void*\29 10351:SkWeakRefCnt::internal_dispose\28\29\20const 10352:SkUnicode_client::~SkUnicode_client\28\29.1 10353:SkUnicode_client::toUpper\28SkString\20const&\2c\20char\20const*\29 10354:SkUnicode_client::toUpper\28SkString\20const&\29 10355:SkUnicode_client::reorderVisual\28unsigned\20char\20const*\2c\20int\2c\20int*\29 10356:SkUnicode_client::makeBreakIterator\28char\20const*\2c\20SkUnicode::BreakType\29 10357:SkUnicode_client::makeBreakIterator\28SkUnicode::BreakType\29 10358:SkUnicode_client::makeBidiIterator\28unsigned\20short\20const*\2c\20int\2c\20SkBidiIterator::Direction\29 10359:SkUnicode_client::makeBidiIterator\28char\20const*\2c\20int\2c\20SkBidiIterator::Direction\29 10360:SkUnicode_client::getWords\28char\20const*\2c\20int\2c\20char\20const*\2c\20std::__2::vector>*\29 10361:SkUnicode_client::getBidiRegions\28char\20const*\2c\20int\2c\20SkUnicode::TextDirection\2c\20std::__2::vector>*\29 10362:SkUnicode_client::computeCodeUnitFlags\28char16_t*\2c\20int\2c\20bool\2c\20skia_private::TArray*\29 10363:SkUnicode_client::computeCodeUnitFlags\28char*\2c\20int\2c\20bool\2c\20skia_private::TArray*\29 10364:SkUnicodeHardCodedCharProperties::isWhitespace\28int\29 10365:SkUnicodeHardCodedCharProperties::isTabulation\28int\29 10366:SkUnicodeHardCodedCharProperties::isSpace\28int\29 10367:SkUnicodeHardCodedCharProperties::isIdeographic\28int\29 10368:SkUnicodeHardCodedCharProperties::isHardBreak\28int\29 10369:SkUnicodeHardCodedCharProperties::isControl\28int\29 10370:SkUnicodeBidiRunIterator::~SkUnicodeBidiRunIterator\28\29.1 10371:SkUnicodeBidiRunIterator::~SkUnicodeBidiRunIterator\28\29 10372:SkUnicodeBidiRunIterator::endOfCurrentRun\28\29\20const 10373:SkUnicodeBidiRunIterator::currentLevel\28\29\20const 10374:SkUnicodeBidiRunIterator::consume\28\29 10375:SkUnicodeBidiRunIterator::atEnd\28\29\20const 10376:SkTypeface_FreeTypeStream::~SkTypeface_FreeTypeStream\28\29.1 10377:SkTypeface_FreeTypeStream::onOpenStream\28int*\29\20const 10378:SkTypeface_FreeTypeStream::onMakeFontData\28\29\20const 10379:SkTypeface_FreeTypeStream::onMakeClone\28SkFontArguments\20const&\29\20const 10380:SkTypeface_FreeTypeStream::onGetFontDescriptor\28SkFontDescriptor*\2c\20bool*\29\20const 10381:SkTypeface_FreeType::onGlyphMaskNeedsCurrentColor\28\29\20const 10382:SkTypeface_FreeType::onGetVariationDesignPosition\28SkFontArguments::VariationPosition::Coordinate*\2c\20int\29\20const 10383:SkTypeface_FreeType::onGetVariationDesignParameters\28SkFontParameters::Variation::Axis*\2c\20int\29\20const 10384:SkTypeface_FreeType::onGetUPEM\28\29\20const 10385:SkTypeface_FreeType::onGetTableTags\28unsigned\20int*\29\20const 10386:SkTypeface_FreeType::onGetTableData\28unsigned\20int\2c\20unsigned\20long\2c\20unsigned\20long\2c\20void*\29\20const 10387:SkTypeface_FreeType::onGetPostScriptName\28SkString*\29\20const 10388:SkTypeface_FreeType::onGetKerningPairAdjustments\28unsigned\20short\20const*\2c\20int\2c\20int*\29\20const 10389:SkTypeface_FreeType::onGetAdvancedMetrics\28\29\20const 10390:SkTypeface_FreeType::onFilterRec\28SkScalerContextRec*\29\20const 10391:SkTypeface_FreeType::onCreateScalerContext\28SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29\20const 10392:SkTypeface_FreeType::onCreateFamilyNameIterator\28\29\20const 10393:SkTypeface_FreeType::onCountGlyphs\28\29\20const 10394:SkTypeface_FreeType::onCopyTableData\28unsigned\20int\29\20const 10395:SkTypeface_FreeType::onCharsToGlyphs\28int\20const*\2c\20int\2c\20unsigned\20short*\29\20const 10396:SkTypeface_FreeType::getPostScriptGlyphNames\28SkString*\29\20const 10397:SkTypeface_FreeType::getGlyphToUnicodeMap\28int*\29\20const 10398:SkTypeface_Empty::~SkTypeface_Empty\28\29 10399:SkTypeface_Custom::onGetFontDescriptor\28SkFontDescriptor*\2c\20bool*\29\20const 10400:SkTypeface::onOpenExistingStream\28int*\29\20const 10401:SkTypeface::onCopyTableData\28unsigned\20int\29\20const 10402:SkTypeface::onComputeBounds\28SkRect*\29\20const 10403:SkTriColorShader::type\28\29\20const 10404:SkTriColorShader::isOpaque\28\29\20const 10405:SkTriColorShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 10406:SkTransformShader::type\28\29\20const 10407:SkTransformShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 10408:SkTQuad::subDivide\28double\2c\20double\2c\20SkTCurve*\29\20const 10409:SkTQuad::setBounds\28SkDRect*\29\20const 10410:SkTQuad::ptAtT\28double\29\20const 10411:SkTQuad::make\28SkArenaAlloc&\29\20const 10412:SkTQuad::intersectRay\28SkIntersections*\2c\20SkDLine\20const&\29\20const 10413:SkTQuad::hullIntersects\28SkTCurve\20const&\2c\20bool*\29\20const 10414:SkTQuad::dxdyAtT\28double\29\20const 10415:SkTQuad::debugInit\28\29 10416:SkTCubic::subDivide\28double\2c\20double\2c\20SkTCurve*\29\20const 10417:SkTCubic::setBounds\28SkDRect*\29\20const 10418:SkTCubic::ptAtT\28double\29\20const 10419:SkTCubic::otherPts\28int\2c\20SkDPoint\20const**\29\20const 10420:SkTCubic::make\28SkArenaAlloc&\29\20const 10421:SkTCubic::intersectRay\28SkIntersections*\2c\20SkDLine\20const&\29\20const 10422:SkTCubic::hullIntersects\28SkTCurve\20const&\2c\20bool*\29\20const 10423:SkTCubic::hullIntersects\28SkDCubic\20const&\2c\20bool*\29\20const 10424:SkTCubic::dxdyAtT\28double\29\20const 10425:SkTCubic::debugInit\28\29 10426:SkTCubic::controlsInside\28\29\20const 10427:SkTCubic::collapsed\28\29\20const 10428:SkTConic::subDivide\28double\2c\20double\2c\20SkTCurve*\29\20const 10429:SkTConic::setBounds\28SkDRect*\29\20const 10430:SkTConic::ptAtT\28double\29\20const 10431:SkTConic::make\28SkArenaAlloc&\29\20const 10432:SkTConic::intersectRay\28SkIntersections*\2c\20SkDLine\20const&\29\20const 10433:SkTConic::hullIntersects\28SkTCurve\20const&\2c\20bool*\29\20const 10434:SkTConic::hullIntersects\28SkDQuad\20const&\2c\20bool*\29\20const 10435:SkTConic::dxdyAtT\28double\29\20const 10436:SkTConic::debugInit\28\29 10437:SkSweepGradient::getTypeName\28\29\20const 10438:SkSweepGradient::flatten\28SkWriteBuffer&\29\20const 10439:SkSweepGradient::asGradient\28SkShaderBase::GradientInfo*\2c\20SkMatrix*\29\20const 10440:SkSweepGradient::appendGradientStages\28SkArenaAlloc*\2c\20SkRasterPipeline*\2c\20SkRasterPipeline*\29\20const 10441:SkSurface_Raster::~SkSurface_Raster\28\29.1 10442:SkSurface_Raster::onWritePixels\28SkPixmap\20const&\2c\20int\2c\20int\29 10443:SkSurface_Raster::onRestoreBackingMutability\28\29 10444:SkSurface_Raster::onNewSurface\28SkImageInfo\20const&\29 10445:SkSurface_Raster::onNewImageSnapshot\28SkIRect\20const*\29 10446:SkSurface_Raster::onNewCanvas\28\29 10447:SkSurface_Raster::onDraw\28SkCanvas*\2c\20float\2c\20float\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\29 10448:SkSurface_Raster::onCopyOnWrite\28SkSurface::ContentChangeMode\29 10449:SkSurface_Raster::imageInfo\28\29\20const 10450:SkSurface_Ganesh::~SkSurface_Ganesh\28\29.1 10451:SkSurface_Ganesh::replaceBackendTexture\28GrBackendTexture\20const&\2c\20GrSurfaceOrigin\2c\20SkSurface::ContentChangeMode\2c\20void\20\28*\29\28void*\29\2c\20void*\29 10452:SkSurface_Ganesh::onWritePixels\28SkPixmap\20const&\2c\20int\2c\20int\29 10453:SkSurface_Ganesh::onWait\28int\2c\20GrBackendSemaphore\20const*\2c\20bool\29 10454:SkSurface_Ganesh::onNewSurface\28SkImageInfo\20const&\29 10455:SkSurface_Ganesh::onNewImageSnapshot\28SkIRect\20const*\29 10456:SkSurface_Ganesh::onNewCanvas\28\29 10457:SkSurface_Ganesh::onIsCompatible\28GrSurfaceCharacterization\20const&\29\20const 10458:SkSurface_Ganesh::onGetRecordingContext\28\29\20const 10459:SkSurface_Ganesh::onDraw\28SkCanvas*\2c\20float\2c\20float\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\29 10460:SkSurface_Ganesh::onCopyOnWrite\28SkSurface::ContentChangeMode\29 10461:SkSurface_Ganesh::onCharacterize\28GrSurfaceCharacterization*\29\20const 10462:SkSurface_Ganesh::onCapabilities\28\29 10463:SkSurface_Ganesh::onAsyncRescaleAndReadPixels\28SkImageInfo\20const&\2c\20SkIRect\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29 10464:SkSurface_Ganesh::onAsyncRescaleAndReadPixelsYUV420\28SkYUVColorSpace\2c\20bool\2c\20sk_sp\2c\20SkIRect\2c\20SkISize\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29 10465:SkSurface_Ganesh::imageInfo\28\29\20const 10466:SkSurface_Base::onAsyncRescaleAndReadPixels\28SkImageInfo\20const&\2c\20SkIRect\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29 10467:SkSurface::imageInfo\28\29\20const 10468:SkStrikeCache::~SkStrikeCache\28\29.1 10469:SkStrikeCache::findOrCreateScopedStrike\28SkStrikeSpec\20const&\29 10470:SkStrike::~SkStrike\28\29.1 10471:SkStrike::strikePromise\28\29 10472:SkStrike::roundingSpec\28\29\20const 10473:SkStrike::getDescriptor\28\29\20const 10474:SkSpriteBlitter_Memcpy::blitRect\28int\2c\20int\2c\20int\2c\20int\29 10475:SkSpriteBlitter::setup\28SkPixmap\20const&\2c\20int\2c\20int\2c\20SkPaint\20const&\29 10476:SkSpriteBlitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 10477:SkSpriteBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 10478:SkSpriteBlitter::blitH\28int\2c\20int\2c\20int\29 10479:SkSpecialImage_Raster::~SkSpecialImage_Raster\28\29.1 10480:SkSpecialImage_Raster::onMakeBackingStoreSubset\28SkIRect\20const&\29\20const 10481:SkSpecialImage_Raster::getSize\28\29\20const 10482:SkSpecialImage_Raster::backingStoreDimensions\28\29\20const 10483:SkSpecialImage_Raster::asShader\28SkTileMode\2c\20SkSamplingOptions\20const&\2c\20SkMatrix\20const&\2c\20bool\29\20const 10484:SkSpecialImage_Raster::asImage\28\29\20const 10485:SkSpecialImage_Gpu::~SkSpecialImage_Gpu\28\29.1 10486:SkSpecialImage_Gpu::onMakeBackingStoreSubset\28SkIRect\20const&\29\20const 10487:SkSpecialImage_Gpu::getSize\28\29\20const 10488:SkSpecialImage_Gpu::backingStoreDimensions\28\29\20const 10489:SkSpecialImage_Gpu::asImage\28\29\20const 10490:SkSpecialImage::asShader\28SkTileMode\2c\20SkSamplingOptions\20const&\2c\20SkMatrix\20const&\2c\20bool\29\20const 10491:SkShaper::TrivialLanguageRunIterator::~TrivialLanguageRunIterator\28\29.1 10492:SkShaper::TrivialLanguageRunIterator::currentLanguage\28\29\20const 10493:SkShaper::TrivialFontRunIterator::~TrivialFontRunIterator\28\29.1 10494:SkShaper::TrivialBiDiRunIterator::currentLevel\28\29\20const 10495:SkScan::HairSquarePath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 10496:SkScan::HairRoundPath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 10497:SkScan::HairPath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 10498:SkScan::AntiHairSquarePath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 10499:SkScan::AntiHairRoundPath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 10500:SkScan::AntiHairPath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 10501:SkScan::AntiFillPath\28SkPath\20const&\2c\20SkRasterClip\20const&\2c\20SkBlitter*\29 10502:SkScalerContext_FreeType::~SkScalerContext_FreeType\28\29.1 10503:SkScalerContext_FreeType::generatePath\28SkGlyph\20const&\2c\20SkPath*\29 10504:SkScalerContext_FreeType::generateMetrics\28SkGlyph\20const&\2c\20SkArenaAlloc*\29 10505:SkScalerContext_FreeType::generateImage\28SkGlyph\20const&\2c\20void*\29 10506:SkScalerContext_FreeType::generateFontMetrics\28SkFontMetrics*\29 10507:SkScalerContext_FreeType::generateDrawable\28SkGlyph\20const&\29 10508:SkScalerContext::MakeEmpty\28sk_sp\2c\20SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29::SkScalerContext_Empty::~SkScalerContext_Empty\28\29 10509:SkScalerContext::MakeEmpty\28sk_sp\2c\20SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29::SkScalerContext_Empty::generatePath\28SkGlyph\20const&\2c\20SkPath*\29 10510:SkScalerContext::MakeEmpty\28sk_sp\2c\20SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29::SkScalerContext_Empty::generateMetrics\28SkGlyph\20const&\2c\20SkArenaAlloc*\29 10511:SkScalerContext::MakeEmpty\28sk_sp\2c\20SkScalerContextEffects\20const&\2c\20SkDescriptor\20const*\29::SkScalerContext_Empty::generateFontMetrics\28SkFontMetrics*\29 10512:SkSRGBColorSpaceLuminance::toLuma\28float\2c\20float\29\20const 10513:SkSRGBColorSpaceLuminance::fromLuma\28float\2c\20float\29\20const 10514:SkSL::simplify_componentwise\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\29::$_3::__invoke\28double\2c\20double\29 10515:SkSL::simplify_componentwise\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\29::$_2::__invoke\28double\2c\20double\29 10516:SkSL::simplify_componentwise\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\29::$_1::__invoke\28double\2c\20double\29 10517:SkSL::simplify_componentwise\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::Expression\20const&\2c\20SkSL::Operator\2c\20SkSL::Expression\20const&\29::$_0::__invoke\28double\2c\20double\29 10518:SkSL::negate_value\28double\29 10519:SkSL::eliminate_unreachable_code\28SkSpan>>\2c\20SkSL::ProgramUsage*\29::UnreachableCodeEliminator::~UnreachableCodeEliminator\28\29.1 10520:SkSL::eliminate_dead_local_variables\28SkSL::Context\20const&\2c\20SkSpan>>\2c\20SkSL::ProgramUsage*\29::DeadLocalVariableEliminator::~DeadLocalVariableEliminator\28\29.1 10521:SkSL::eliminate_dead_local_variables\28SkSL::Context\20const&\2c\20SkSpan>>\2c\20SkSL::ProgramUsage*\29::DeadLocalVariableEliminator::visitStatementPtr\28std::__2::unique_ptr>&\29 10522:SkSL::eliminate_dead_local_variables\28SkSL::Context\20const&\2c\20SkSpan>>\2c\20SkSL::ProgramUsage*\29::DeadLocalVariableEliminator::visitExpressionPtr\28std::__2::unique_ptr>&\29 10523:SkSL::count_returns_at_end_of_control_flow\28SkSL::FunctionDefinition\20const&\29::CountReturnsAtEndOfControlFlow::visitStatement\28SkSL::Statement\20const&\29 10524:SkSL::bitwise_not_value\28double\29 10525:SkSL::\28anonymous\20namespace\29::VariableWriteVisitor::visitExpression\28SkSL::Expression\20const&\29 10526:SkSL::\28anonymous\20namespace\29::SampleOutsideMainVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 10527:SkSL::\28anonymous\20namespace\29::SampleOutsideMainVisitor::visitExpression\28SkSL::Expression\20const&\29 10528:SkSL::\28anonymous\20namespace\29::ReturnsNonOpaqueColorVisitor::visitStatement\28SkSL::Statement\20const&\29 10529:SkSL::\28anonymous\20namespace\29::ReturnsInputAlphaVisitor::visitStatement\28SkSL::Statement\20const&\29 10530:SkSL::\28anonymous\20namespace\29::NodeCountVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 10531:SkSL::\28anonymous\20namespace\29::NodeCountVisitor::visitExpression\28SkSL::Expression\20const&\29 10532:SkSL::\28anonymous\20namespace\29::MergeSampleUsageVisitor::visitProgramElement\28SkSL::ProgramElement\20const&\29 10533:SkSL::\28anonymous\20namespace\29::MergeSampleUsageVisitor::visitExpression\28SkSL::Expression\20const&\29 10534:SkSL::\28anonymous\20namespace\29::FinalizationVisitor::~FinalizationVisitor\28\29.1 10535:SkSL::\28anonymous\20namespace\29::FinalizationVisitor::visitExpression\28SkSL::Expression\20const&\29 10536:SkSL::\28anonymous\20namespace\29::ES2IndexingVisitor::~ES2IndexingVisitor\28\29.1 10537:SkSL::\28anonymous\20namespace\29::ES2IndexingVisitor::visitStatement\28SkSL::Statement\20const&\29 10538:SkSL::\28anonymous\20namespace\29::ES2IndexingVisitor::visitExpression\28SkSL::Expression\20const&\29 10539:SkSL::VectorType::isAllowedInUniform\28SkSL::Position*\29\20const 10540:SkSL::VectorType::isAllowedInES2\28\29\20const 10541:SkSL::VariableReference::clone\28SkSL::Position\29\20const 10542:SkSL::Variable::~Variable\28\29.1 10543:SkSL::Variable::setInterfaceBlock\28SkSL::InterfaceBlock*\29 10544:SkSL::Variable::mangledName\28\29\20const 10545:SkSL::Variable::layout\28\29\20const 10546:SkSL::Variable::description\28\29\20const 10547:SkSL::VarDeclaration::~VarDeclaration\28\29.1 10548:SkSL::VarDeclaration::description\28\29\20const 10549:SkSL::TypeReference::clone\28SkSL::Position\29\20const 10550:SkSL::Type::minimumValue\28\29\20const 10551:SkSL::Type::maximumValue\28\29\20const 10552:SkSL::Type::isAllowedInUniform\28SkSL::Position*\29\20const 10553:SkSL::Type::fields\28\29\20const 10554:SkSL::Type::description\28\29\20const 10555:SkSL::Transform::HoistSwitchVarDeclarationsAtTopLevel\28SkSL::Context\20const&\2c\20std::__2::unique_ptr>\29::HoistSwitchVarDeclsVisitor::~HoistSwitchVarDeclsVisitor\28\29.1 10556:SkSL::Tracer::var\28int\2c\20int\29 10557:SkSL::Tracer::scope\28int\29 10558:SkSL::Tracer::line\28int\29 10559:SkSL::Tracer::exit\28int\29 10560:SkSL::Tracer::enter\28int\29 10561:SkSL::TextureType::textureAccess\28\29\20const 10562:SkSL::TextureType::isMultisampled\28\29\20const 10563:SkSL::TextureType::isDepth\28\29\20const 10564:SkSL::TextureType::isArrayedTexture\28\29\20const 10565:SkSL::TernaryExpression::~TernaryExpression\28\29.1 10566:SkSL::TernaryExpression::description\28SkSL::OperatorPrecedence\29\20const 10567:SkSL::TernaryExpression::clone\28SkSL::Position\29\20const 10568:SkSL::TProgramVisitor::visitExpression\28SkSL::Expression&\29 10569:SkSL::Swizzle::~Swizzle\28\29.1 10570:SkSL::Swizzle::description\28SkSL::OperatorPrecedence\29\20const 10571:SkSL::Swizzle::clone\28SkSL::Position\29\20const 10572:SkSL::SwitchStatement::description\28\29\20const 10573:SkSL::SwitchCase::description\28\29\20const 10574:SkSL::StructType::structNestingDepth\28\29\20const 10575:SkSL::StructType::slotType\28unsigned\20long\29\20const 10576:SkSL::StructType::isOrContainsUnsizedArray\28\29\20const 10577:SkSL::StructType::isOrContainsAtomic\28\29\20const 10578:SkSL::StructType::isOrContainsArray\28\29\20const 10579:SkSL::StructType::isInterfaceBlock\28\29\20const 10580:SkSL::StructType::isBuiltin\28\29\20const 10581:SkSL::StructType::isAllowedInUniform\28SkSL::Position*\29\20const 10582:SkSL::StructType::isAllowedInES2\28\29\20const 10583:SkSL::StructType::fields\28\29\20const 10584:SkSL::StructDefinition::description\28\29\20const 10585:SkSL::StringStream::~StringStream\28\29.1 10586:SkSL::StringStream::write\28void\20const*\2c\20unsigned\20long\29 10587:SkSL::StringStream::writeText\28char\20const*\29 10588:SkSL::StringStream::write8\28unsigned\20char\29 10589:SkSL::Setting::description\28SkSL::OperatorPrecedence\29\20const 10590:SkSL::Setting::clone\28SkSL::Position\29\20const 10591:SkSL::ScalarType::priority\28\29\20const 10592:SkSL::ScalarType::numberKind\28\29\20const 10593:SkSL::ScalarType::minimumValue\28\29\20const 10594:SkSL::ScalarType::maximumValue\28\29\20const 10595:SkSL::ScalarType::isAllowedInUniform\28SkSL::Position*\29\20const 10596:SkSL::ScalarType::isAllowedInES2\28\29\20const 10597:SkSL::ScalarType::bitWidth\28\29\20const 10598:SkSL::SamplerType::textureAccess\28\29\20const 10599:SkSL::SamplerType::isMultisampled\28\29\20const 10600:SkSL::SamplerType::isDepth\28\29\20const 10601:SkSL::SamplerType::isArrayedTexture\28\29\20const 10602:SkSL::SamplerType::dimensions\28\29\20const 10603:SkSL::ReturnStatement::description\28\29\20const 10604:SkSL::RP::VariableLValue::store\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 10605:SkSL::RP::VariableLValue::push\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 10606:SkSL::RP::VariableLValue::isWritable\28\29\20const 10607:SkSL::RP::UnownedLValueSlice::store\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 10608:SkSL::RP::UnownedLValueSlice::push\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 10609:SkSL::RP::UnownedLValueSlice::fixedSlotRange\28SkSL::RP::Generator*\29 10610:SkSL::RP::SwizzleLValue::~SwizzleLValue\28\29.1 10611:SkSL::RP::SwizzleLValue::swizzle\28\29 10612:SkSL::RP::SwizzleLValue::store\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 10613:SkSL::RP::SwizzleLValue::push\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 10614:SkSL::RP::SwizzleLValue::fixedSlotRange\28SkSL::RP::Generator*\29 10615:SkSL::RP::ScratchLValue::~ScratchLValue\28\29.1 10616:SkSL::RP::ScratchLValue::push\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 10617:SkSL::RP::ScratchLValue::fixedSlotRange\28SkSL::RP::Generator*\29 10618:SkSL::RP::LValueSlice::~LValueSlice\28\29.1 10619:SkSL::RP::ImmutableLValue::push\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 10620:SkSL::RP::DynamicIndexLValue::~DynamicIndexLValue\28\29.1 10621:SkSL::RP::DynamicIndexLValue::store\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 10622:SkSL::RP::DynamicIndexLValue::push\28SkSL::RP::Generator*\2c\20SkSL::RP::SlotRange\2c\20SkSL::RP::AutoStack*\2c\20SkSpan\29 10623:SkSL::RP::DynamicIndexLValue::isWritable\28\29\20const 10624:SkSL::RP::DynamicIndexLValue::fixedSlotRange\28SkSL::RP::Generator*\29 10625:SkSL::ProgramVisitor::visitStatementPtr\28std::__2::unique_ptr>\20const&\29 10626:SkSL::ProgramVisitor::visitExpressionPtr\28std::__2::unique_ptr>\20const&\29 10627:SkSL::PrefixExpression::description\28SkSL::OperatorPrecedence\29\20const 10628:SkSL::PrefixExpression::clone\28SkSL::Position\29\20const 10629:SkSL::PostfixExpression::description\28SkSL::OperatorPrecedence\29\20const 10630:SkSL::PostfixExpression::clone\28SkSL::Position\29\20const 10631:SkSL::Poison::description\28SkSL::OperatorPrecedence\29\20const 10632:SkSL::Poison::clone\28SkSL::Position\29\20const 10633:SkSL::PipelineStage::Callbacks::getMainName\28\29 10634:SkSL::Parser::Checkpoint::ForwardingErrorReporter::~ForwardingErrorReporter\28\29.1 10635:SkSL::Parser::Checkpoint::ForwardingErrorReporter::handleError\28std::__2::basic_string_view>\2c\20SkSL::Position\29 10636:SkSL::Nop::description\28\29\20const 10637:SkSL::ModifiersDeclaration::description\28\29\20const 10638:SkSL::MethodReference::description\28SkSL::OperatorPrecedence\29\20const 10639:SkSL::MethodReference::clone\28SkSL::Position\29\20const 10640:SkSL::MatrixType::slotCount\28\29\20const 10641:SkSL::MatrixType::rows\28\29\20const 10642:SkSL::MatrixType::isAllowedInES2\28\29\20const 10643:SkSL::LiteralType::minimumValue\28\29\20const 10644:SkSL::LiteralType::maximumValue\28\29\20const 10645:SkSL::Literal::getConstantValue\28int\29\20const 10646:SkSL::Literal::description\28SkSL::OperatorPrecedence\29\20const 10647:SkSL::Literal::compareConstant\28SkSL::Expression\20const&\29\20const 10648:SkSL::Literal::clone\28SkSL::Position\29\20const 10649:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_uintBitsToFloat\28double\2c\20double\2c\20double\29 10650:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_trunc\28double\2c\20double\2c\20double\29 10651:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_tanh\28double\2c\20double\2c\20double\29 10652:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_tan\28double\2c\20double\2c\20double\29 10653:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_sub\28double\2c\20double\2c\20double\29 10654:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_step\28double\2c\20double\2c\20double\29 10655:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_sqrt\28double\2c\20double\2c\20double\29 10656:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_smoothstep\28double\2c\20double\2c\20double\29 10657:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_sinh\28double\2c\20double\2c\20double\29 10658:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_sin\28double\2c\20double\2c\20double\29 10659:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_sign\28double\2c\20double\2c\20double\29 10660:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_saturate\28double\2c\20double\2c\20double\29 10661:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_round\28double\2c\20double\2c\20double\29 10662:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_radians\28double\2c\20double\2c\20double\29 10663:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_pow\28double\2c\20double\2c\20double\29 10664:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_opposite_sign\28double\2c\20double\2c\20double\29 10665:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_not\28double\2c\20double\2c\20double\29 10666:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_mod\28double\2c\20double\2c\20double\29 10667:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_mix\28double\2c\20double\2c\20double\29 10668:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_min\28double\2c\20double\2c\20double\29 10669:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_max\28double\2c\20double\2c\20double\29 10670:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_log\28double\2c\20double\2c\20double\29 10671:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_log2\28double\2c\20double\2c\20double\29 10672:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_inversesqrt\28double\2c\20double\2c\20double\29 10673:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_intBitsToFloat\28double\2c\20double\2c\20double\29 10674:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_fract\28double\2c\20double\2c\20double\29 10675:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_fma\28double\2c\20double\2c\20double\29 10676:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_floor\28double\2c\20double\2c\20double\29 10677:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_floatBitsToUint\28double\2c\20double\2c\20double\29 10678:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_floatBitsToInt\28double\2c\20double\2c\20double\29 10679:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_exp\28double\2c\20double\2c\20double\29 10680:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_exp2\28double\2c\20double\2c\20double\29 10681:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_div\28double\2c\20double\2c\20double\29 10682:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_degrees\28double\2c\20double\2c\20double\29 10683:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_cosh\28double\2c\20double\2c\20double\29 10684:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_cos\28double\2c\20double\2c\20double\29 10685:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_clamp\28double\2c\20double\2c\20double\29 10686:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_ceil\28double\2c\20double\2c\20double\29 10687:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_atanh\28double\2c\20double\2c\20double\29 10688:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_atan\28double\2c\20double\2c\20double\29 10689:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_atan2\28double\2c\20double\2c\20double\29 10690:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_asinh\28double\2c\20double\2c\20double\29 10691:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_asin\28double\2c\20double\2c\20double\29 10692:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_add\28double\2c\20double\2c\20double\29 10693:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_acosh\28double\2c\20double\2c\20double\29 10694:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_acos\28double\2c\20double\2c\20double\29 10695:SkSL::Intrinsics::\28anonymous\20namespace\29::evaluate_abs\28double\2c\20double\2c\20double\29 10696:SkSL::Intrinsics::\28anonymous\20namespace\29::compare_notEqual\28double\2c\20double\29 10697:SkSL::Intrinsics::\28anonymous\20namespace\29::compare_lessThan\28double\2c\20double\29 10698:SkSL::Intrinsics::\28anonymous\20namespace\29::compare_lessThanEqual\28double\2c\20double\29 10699:SkSL::Intrinsics::\28anonymous\20namespace\29::compare_greaterThan\28double\2c\20double\29 10700:SkSL::Intrinsics::\28anonymous\20namespace\29::compare_greaterThanEqual\28double\2c\20double\29 10701:SkSL::Intrinsics::\28anonymous\20namespace\29::compare_equal\28double\2c\20double\29 10702:SkSL::Intrinsics::\28anonymous\20namespace\29::coalesce_length\28double\2c\20double\2c\20double\29 10703:SkSL::Intrinsics::\28anonymous\20namespace\29::coalesce_dot\28double\2c\20double\2c\20double\29 10704:SkSL::Intrinsics::\28anonymous\20namespace\29::coalesce_distance\28double\2c\20double\2c\20double\29 10705:SkSL::Intrinsics::\28anonymous\20namespace\29::coalesce_any\28double\2c\20double\2c\20double\29 10706:SkSL::Intrinsics::\28anonymous\20namespace\29::coalesce_all\28double\2c\20double\2c\20double\29 10707:SkSL::InterfaceBlock::~InterfaceBlock\28\29.1 10708:SkSL::InterfaceBlock::~InterfaceBlock\28\29 10709:SkSL::InterfaceBlock::description\28\29\20const 10710:SkSL::IndexExpression::~IndexExpression\28\29.1 10711:SkSL::IndexExpression::description\28SkSL::OperatorPrecedence\29\20const 10712:SkSL::IndexExpression::clone\28SkSL::Position\29\20const 10713:SkSL::IfStatement::~IfStatement\28\29.1 10714:SkSL::IfStatement::description\28\29\20const 10715:SkSL::GlobalVarDeclaration::description\28\29\20const 10716:SkSL::GenericType::slotType\28unsigned\20long\29\20const 10717:SkSL::GenericType::coercibleTypes\28\29\20const 10718:SkSL::GLSLCodeGenerator::~GLSLCodeGenerator\28\29.1 10719:SkSL::FunctionReference::description\28SkSL::OperatorPrecedence\29\20const 10720:SkSL::FunctionReference::clone\28SkSL::Position\29\20const 10721:SkSL::FunctionPrototype::description\28\29\20const 10722:SkSL::FunctionDefinition::description\28\29\20const 10723:SkSL::FunctionDefinition::Convert\28SkSL::Context\20const&\2c\20SkSL::Position\2c\20SkSL::FunctionDeclaration\20const&\2c\20std::__2::unique_ptr>\2c\20bool\29::Finalizer::~Finalizer\28\29.1 10724:SkSL::FunctionCall::description\28SkSL::OperatorPrecedence\29\20const 10725:SkSL::FunctionCall::clone\28SkSL::Position\29\20const 10726:SkSL::ForStatement::~ForStatement\28\29.1 10727:SkSL::ForStatement::description\28\29\20const 10728:SkSL::FieldSymbol::description\28\29\20const 10729:SkSL::FieldAccess::clone\28SkSL::Position\29\20const 10730:SkSL::Extension::description\28\29\20const 10731:SkSL::ExtendedVariable::~ExtendedVariable\28\29.1 10732:SkSL::ExtendedVariable::setInterfaceBlock\28SkSL::InterfaceBlock*\29 10733:SkSL::ExtendedVariable::mangledName\28\29\20const 10734:SkSL::ExtendedVariable::layout\28\29\20const 10735:SkSL::ExtendedVariable::interfaceBlock\28\29\20const 10736:SkSL::ExtendedVariable::detachDeadInterfaceBlock\28\29 10737:SkSL::ExpressionStatement::description\28\29\20const 10738:SkSL::Expression::getConstantValue\28int\29\20const 10739:SkSL::Expression::description\28\29\20const 10740:SkSL::EmptyExpression::description\28SkSL::OperatorPrecedence\29\20const 10741:SkSL::EmptyExpression::clone\28SkSL::Position\29\20const 10742:SkSL::DoStatement::description\28\29\20const 10743:SkSL::DiscardStatement::description\28\29\20const 10744:SkSL::DebugTracePriv::~DebugTracePriv\28\29.1 10745:SkSL::DebugTracePriv::writeTrace\28SkWStream*\29\20const 10746:SkSL::DebugTracePriv::dump\28SkWStream*\29\20const 10747:SkSL::CountReturnsWithLimit::visitStatement\28SkSL::Statement\20const&\29 10748:SkSL::ContinueStatement::description\28\29\20const 10749:SkSL::ConstructorStruct::clone\28SkSL::Position\29\20const 10750:SkSL::ConstructorSplat::getConstantValue\28int\29\20const 10751:SkSL::ConstructorSplat::clone\28SkSL::Position\29\20const 10752:SkSL::ConstructorScalarCast::clone\28SkSL::Position\29\20const 10753:SkSL::ConstructorMatrixResize::getConstantValue\28int\29\20const 10754:SkSL::ConstructorMatrixResize::clone\28SkSL::Position\29\20const 10755:SkSL::ConstructorDiagonalMatrix::getConstantValue\28int\29\20const 10756:SkSL::ConstructorDiagonalMatrix::clone\28SkSL::Position\29\20const 10757:SkSL::ConstructorCompoundCast::clone\28SkSL::Position\29\20const 10758:SkSL::ConstructorCompound::clone\28SkSL::Position\29\20const 10759:SkSL::ConstructorArrayCast::clone\28SkSL::Position\29\20const 10760:SkSL::ConstructorArray::clone\28SkSL::Position\29\20const 10761:SkSL::Compiler::CompilerErrorReporter::handleError\28std::__2::basic_string_view>\2c\20SkSL::Position\29 10762:SkSL::CodeGenerator::~CodeGenerator\28\29 10763:SkSL::ChildCall::description\28SkSL::OperatorPrecedence\29\20const 10764:SkSL::ChildCall::clone\28SkSL::Position\29\20const 10765:SkSL::BreakStatement::description\28\29\20const 10766:SkSL::Block::~Block\28\29.1 10767:SkSL::Block::description\28\29\20const 10768:SkSL::BinaryExpression::~BinaryExpression\28\29.1 10769:SkSL::BinaryExpression::description\28SkSL::OperatorPrecedence\29\20const 10770:SkSL::BinaryExpression::clone\28SkSL::Position\29\20const 10771:SkSL::ArrayType::slotType\28unsigned\20long\29\20const 10772:SkSL::ArrayType::slotCount\28\29\20const 10773:SkSL::ArrayType::isUnsizedArray\28\29\20const 10774:SkSL::ArrayType::isOrContainsUnsizedArray\28\29\20const 10775:SkSL::ArrayType::isOrContainsAtomic\28\29\20const 10776:SkSL::ArrayType::isBuiltin\28\29\20const 10777:SkSL::ArrayType::isAllowedInUniform\28SkSL::Position*\29\20const 10778:SkSL::AnyConstructor::getConstantValue\28int\29\20const 10779:SkSL::AnyConstructor::description\28SkSL::OperatorPrecedence\29\20const 10780:SkSL::AnyConstructor::compareConstant\28SkSL::Expression\20const&\29\20const 10781:SkSL::Analysis::CheckProgramStructure\28SkSL::Program\20const&\2c\20bool\29::ProgramSizeVisitor::~ProgramSizeVisitor\28\29.1 10782:SkSL::Analysis::CheckProgramStructure\28SkSL::Program\20const&\2c\20bool\29::ProgramSizeVisitor::visitStatement\28SkSL::Statement\20const&\29 10783:SkSL::Analysis::CheckProgramStructure\28SkSL::Program\20const&\2c\20bool\29::ProgramSizeVisitor::visitExpression\28SkSL::Expression\20const&\29 10784:SkSL::AliasType::textureAccess\28\29\20const 10785:SkSL::AliasType::slotType\28unsigned\20long\29\20const 10786:SkSL::AliasType::slotCount\28\29\20const 10787:SkSL::AliasType::rows\28\29\20const 10788:SkSL::AliasType::priority\28\29\20const 10789:SkSL::AliasType::isVector\28\29\20const 10790:SkSL::AliasType::isUnsizedArray\28\29\20const 10791:SkSL::AliasType::isStruct\28\29\20const 10792:SkSL::AliasType::isScalar\28\29\20const 10793:SkSL::AliasType::isMultisampled\28\29\20const 10794:SkSL::AliasType::isMatrix\28\29\20const 10795:SkSL::AliasType::isLiteral\28\29\20const 10796:SkSL::AliasType::isInterfaceBlock\28\29\20const 10797:SkSL::AliasType::isDepth\28\29\20const 10798:SkSL::AliasType::isArrayedTexture\28\29\20const 10799:SkSL::AliasType::isArray\28\29\20const 10800:SkSL::AliasType::dimensions\28\29\20const 10801:SkSL::AliasType::componentType\28\29\20const 10802:SkSL::AliasType::columns\28\29\20const 10803:SkSL::AliasType::coercibleTypes\28\29\20const 10804:SkRuntimeShader::~SkRuntimeShader\28\29.1 10805:SkRuntimeShader::type\28\29\20const 10806:SkRuntimeShader::isOpaque\28\29\20const 10807:SkRuntimeShader::getTypeName\28\29\20const 10808:SkRuntimeShader::flatten\28SkWriteBuffer&\29\20const 10809:SkRuntimeShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 10810:SkRuntimeEffect::~SkRuntimeEffect\28\29.1 10811:SkRuntimeEffect::MakeFromSource\28SkString\2c\20SkRuntimeEffect::Options\20const&\2c\20SkSL::ProgramKind\29 10812:SkRuntimeEffect::MakeForColorFilter\28SkString\2c\20SkRuntimeEffect::Options\20const&\29 10813:SkRuntimeEffect::MakeForBlender\28SkString\2c\20SkRuntimeEffect::Options\20const&\29 10814:SkRgnClipBlitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 10815:SkRgnClipBlitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 10816:SkRgnClipBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 10817:SkRgnClipBlitter::blitH\28int\2c\20int\2c\20int\29 10818:SkRgnClipBlitter::blitAntiRect\28int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\29 10819:SkRgnClipBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 10820:SkRgnBuilder::~SkRgnBuilder\28\29.1 10821:SkRgnBuilder::blitH\28int\2c\20int\2c\20int\29 10822:SkRescaleAndReadPixels\28SkBitmap\2c\20SkImageInfo\20const&\2c\20SkIRect\20const&\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29::Result::~Result\28\29.1 10823:SkRescaleAndReadPixels\28SkBitmap\2c\20SkImageInfo\20const&\2c\20SkIRect\20const&\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29::Result::rowBytes\28int\29\20const 10824:SkRescaleAndReadPixels\28SkBitmap\2c\20SkImageInfo\20const&\2c\20SkIRect\20const&\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29::Result::data\28int\29\20const 10825:SkRectClipBlitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 10826:SkRectClipBlitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 10827:SkRectClipBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 10828:SkRectClipBlitter::blitH\28int\2c\20int\2c\20int\29 10829:SkRectClipBlitter::blitAntiRect\28int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\29 10830:SkRectClipBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 10831:SkRecorder::~SkRecorder\28\29.1 10832:SkRecorder::willSave\28\29 10833:SkRecorder::onResetClip\28\29 10834:SkRecorder::onDrawVerticesObject\28SkVertices\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 10835:SkRecorder::onDrawSlug\28sktext::gpu::Slug\20const*\2c\20SkPaint\20const&\29 10836:SkRecorder::onDrawShadowRec\28SkPath\20const&\2c\20SkDrawShadowRec\20const&\29 10837:SkRecorder::onDrawRegion\28SkRegion\20const&\2c\20SkPaint\20const&\29 10838:SkRecorder::onDrawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 10839:SkRecorder::onDrawRRect\28SkRRect\20const&\2c\20SkPaint\20const&\29 10840:SkRecorder::onDrawPoints\28SkCanvas::PointMode\2c\20unsigned\20long\2c\20SkPoint\20const*\2c\20SkPaint\20const&\29 10841:SkRecorder::onDrawPicture\28SkPicture\20const*\2c\20SkMatrix\20const*\2c\20SkPaint\20const*\29 10842:SkRecorder::onDrawPath\28SkPath\20const&\2c\20SkPaint\20const&\29 10843:SkRecorder::onDrawPatch\28SkPoint\20const*\2c\20unsigned\20int\20const*\2c\20SkPoint\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 10844:SkRecorder::onDrawPaint\28SkPaint\20const&\29 10845:SkRecorder::onDrawOval\28SkRect\20const&\2c\20SkPaint\20const&\29 10846:SkRecorder::onDrawMesh\28SkMesh\20const&\2c\20sk_sp\2c\20SkPaint\20const&\29 10847:SkRecorder::onDrawImageRect2\28SkImage\20const*\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 10848:SkRecorder::onDrawImageLattice2\28SkImage\20const*\2c\20SkCanvas::Lattice\20const&\2c\20SkRect\20const&\2c\20SkFilterMode\2c\20SkPaint\20const*\29 10849:SkRecorder::onDrawImage2\28SkImage\20const*\2c\20float\2c\20float\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\29 10850:SkRecorder::onDrawGlyphRunList\28sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\29 10851:SkRecorder::onDrawEdgeAAQuad\28SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkBlendMode\29 10852:SkRecorder::onDrawEdgeAAImageSet2\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 10853:SkRecorder::onDrawDrawable\28SkDrawable*\2c\20SkMatrix\20const*\29 10854:SkRecorder::onDrawDRRect\28SkRRect\20const&\2c\20SkRRect\20const&\2c\20SkPaint\20const&\29 10855:SkRecorder::onDrawBehind\28SkPaint\20const&\29 10856:SkRecorder::onDrawAtlas2\28SkImage\20const*\2c\20SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20SkBlendMode\2c\20SkSamplingOptions\20const&\2c\20SkRect\20const*\2c\20SkPaint\20const*\29 10857:SkRecorder::onDrawArc\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 10858:SkRecorder::onDrawAnnotation\28SkRect\20const&\2c\20char\20const*\2c\20SkData*\29 10859:SkRecorder::onDoSaveBehind\28SkRect\20const*\29 10860:SkRecorder::onClipShader\28sk_sp\2c\20SkClipOp\29 10861:SkRecorder::onClipRegion\28SkRegion\20const&\2c\20SkClipOp\29 10862:SkRecorder::onClipRect\28SkRect\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 10863:SkRecorder::onClipRRect\28SkRRect\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 10864:SkRecorder::onClipPath\28SkPath\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 10865:SkRecorder::getSaveLayerStrategy\28SkCanvas::SaveLayerRec\20const&\29 10866:SkRecorder::didTranslate\28float\2c\20float\29 10867:SkRecorder::didSetM44\28SkM44\20const&\29 10868:SkRecorder::didScale\28float\2c\20float\29 10869:SkRecorder::didRestore\28\29 10870:SkRecorder::didConcat44\28SkM44\20const&\29 10871:SkRecordedDrawable::~SkRecordedDrawable\28\29.1 10872:SkRecordedDrawable::onMakePictureSnapshot\28\29 10873:SkRecordedDrawable::onGetBounds\28\29 10874:SkRecordedDrawable::onDraw\28SkCanvas*\29 10875:SkRecordedDrawable::onApproximateBytesUsed\28\29 10876:SkRecordedDrawable::getTypeName\28\29\20const 10877:SkRecordedDrawable::flatten\28SkWriteBuffer&\29\20const 10878:SkRecord::~SkRecord\28\29.1 10879:SkRasterPipelineSpriteBlitter::~SkRasterPipelineSpriteBlitter\28\29.1 10880:SkRasterPipelineSpriteBlitter::setup\28SkPixmap\20const&\2c\20int\2c\20int\2c\20SkPaint\20const&\29 10881:SkRasterPipelineSpriteBlitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 10882:SkRasterPipelineBlitter::~SkRasterPipelineBlitter\28\29.1 10883:SkRasterPipelineBlitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 10884:SkRasterPipelineBlitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 10885:SkRasterPipelineBlitter::blitH\28int\2c\20int\2c\20int\29 10886:SkRasterPipelineBlitter::blitAntiV2\28int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 10887:SkRasterPipelineBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 10888:SkRasterPipelineBlitter::blitAntiH2\28int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 10889:SkRasterPipelineBlitter::Create\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkArenaAlloc*\2c\20SkRasterPipeline\20const&\2c\20bool\2c\20bool\2c\20SkShader\20const*\29::$_3::__invoke\28SkPixmap*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20long\20long\29 10890:SkRasterPipelineBlitter::Create\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkArenaAlloc*\2c\20SkRasterPipeline\20const&\2c\20bool\2c\20bool\2c\20SkShader\20const*\29::$_2::__invoke\28SkPixmap*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20long\20long\29 10891:SkRasterPipelineBlitter::Create\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkArenaAlloc*\2c\20SkRasterPipeline\20const&\2c\20bool\2c\20bool\2c\20SkShader\20const*\29::$_1::__invoke\28SkPixmap*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20long\20long\29 10892:SkRasterPipelineBlitter::Create\28SkPixmap\20const&\2c\20SkPaint\20const&\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkArenaAlloc*\2c\20SkRasterPipeline\20const&\2c\20bool\2c\20bool\2c\20SkShader\20const*\29::$_0::__invoke\28SkPixmap*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20long\20long\29 10893:SkRadialGradient::getTypeName\28\29\20const 10894:SkRadialGradient::flatten\28SkWriteBuffer&\29\20const 10895:SkRadialGradient::asGradient\28SkShaderBase::GradientInfo*\2c\20SkMatrix*\29\20const 10896:SkRadialGradient::appendGradientStages\28SkArenaAlloc*\2c\20SkRasterPipeline*\2c\20SkRasterPipeline*\29\20const 10897:SkRTree::~SkRTree\28\29.1 10898:SkRTree::search\28SkRect\20const&\2c\20std::__2::vector>*\29\20const 10899:SkRTree::insert\28SkRect\20const*\2c\20int\29 10900:SkRTree::bytesUsed\28\29\20const 10901:SkPixmap::erase\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkIRect\20const*\29\20const::$_3::__invoke\28void*\2c\20unsigned\20long\20long\2c\20int\29 10902:SkPixmap::erase\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkIRect\20const*\29\20const::$_2::__invoke\28void*\2c\20unsigned\20long\20long\2c\20int\29 10903:SkPixmap::erase\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkIRect\20const*\29\20const::$_1::__invoke\28void*\2c\20unsigned\20long\20long\2c\20int\29 10904:SkPixmap::erase\28SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkIRect\20const*\29\20const::$_0::__invoke\28void*\2c\20unsigned\20long\20long\2c\20int\29 10905:SkPixelRef::~SkPixelRef\28\29.1 10906:SkPictureRecord::~SkPictureRecord\28\29.1 10907:SkPictureRecord::willSave\28\29 10908:SkPictureRecord::willRestore\28\29 10909:SkPictureRecord::onResetClip\28\29 10910:SkPictureRecord::onDrawVerticesObject\28SkVertices\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 10911:SkPictureRecord::onDrawTextBlob\28SkTextBlob\20const*\2c\20float\2c\20float\2c\20SkPaint\20const&\29 10912:SkPictureRecord::onDrawSlug\28sktext::gpu::Slug\20const*\2c\20SkPaint\20const&\29 10913:SkPictureRecord::onDrawShadowRec\28SkPath\20const&\2c\20SkDrawShadowRec\20const&\29 10914:SkPictureRecord::onDrawRegion\28SkRegion\20const&\2c\20SkPaint\20const&\29 10915:SkPictureRecord::onDrawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 10916:SkPictureRecord::onDrawRRect\28SkRRect\20const&\2c\20SkPaint\20const&\29 10917:SkPictureRecord::onDrawPoints\28SkCanvas::PointMode\2c\20unsigned\20long\2c\20SkPoint\20const*\2c\20SkPaint\20const&\29 10918:SkPictureRecord::onDrawPicture\28SkPicture\20const*\2c\20SkMatrix\20const*\2c\20SkPaint\20const*\29 10919:SkPictureRecord::onDrawPath\28SkPath\20const&\2c\20SkPaint\20const&\29 10920:SkPictureRecord::onDrawPatch\28SkPoint\20const*\2c\20unsigned\20int\20const*\2c\20SkPoint\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 10921:SkPictureRecord::onDrawPaint\28SkPaint\20const&\29 10922:SkPictureRecord::onDrawOval\28SkRect\20const&\2c\20SkPaint\20const&\29 10923:SkPictureRecord::onDrawImageRect2\28SkImage\20const*\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 10924:SkPictureRecord::onDrawImageLattice2\28SkImage\20const*\2c\20SkCanvas::Lattice\20const&\2c\20SkRect\20const&\2c\20SkFilterMode\2c\20SkPaint\20const*\29 10925:SkPictureRecord::onDrawImage2\28SkImage\20const*\2c\20float\2c\20float\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\29 10926:SkPictureRecord::onDrawEdgeAAQuad\28SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkBlendMode\29 10927:SkPictureRecord::onDrawEdgeAAImageSet2\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 10928:SkPictureRecord::onDrawDrawable\28SkDrawable*\2c\20SkMatrix\20const*\29 10929:SkPictureRecord::onDrawDRRect\28SkRRect\20const&\2c\20SkRRect\20const&\2c\20SkPaint\20const&\29 10930:SkPictureRecord::onDrawBehind\28SkPaint\20const&\29 10931:SkPictureRecord::onDrawAtlas2\28SkImage\20const*\2c\20SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20SkBlendMode\2c\20SkSamplingOptions\20const&\2c\20SkRect\20const*\2c\20SkPaint\20const*\29 10932:SkPictureRecord::onDrawArc\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 10933:SkPictureRecord::onDrawAnnotation\28SkRect\20const&\2c\20char\20const*\2c\20SkData*\29 10934:SkPictureRecord::onDoSaveBehind\28SkRect\20const*\29 10935:SkPictureRecord::onClipShader\28sk_sp\2c\20SkClipOp\29 10936:SkPictureRecord::onClipRegion\28SkRegion\20const&\2c\20SkClipOp\29 10937:SkPictureRecord::onClipRect\28SkRect\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 10938:SkPictureRecord::onClipRRect\28SkRRect\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 10939:SkPictureRecord::onClipPath\28SkPath\20const&\2c\20SkClipOp\2c\20SkCanvas::ClipEdgeStyle\29 10940:SkPictureRecord::getSaveLayerStrategy\28SkCanvas::SaveLayerRec\20const&\29 10941:SkPictureRecord::didTranslate\28float\2c\20float\29 10942:SkPictureRecord::didSetM44\28SkM44\20const&\29 10943:SkPictureRecord::didScale\28float\2c\20float\29 10944:SkPictureRecord::didConcat44\28SkM44\20const&\29 10945:SkPictureImageGenerator::~SkPictureImageGenerator\28\29.1 10946:SkPictureImageGenerator::onGetPixels\28SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20SkImageGenerator::Options\20const&\29 10947:SkOTUtils::LocalizedStrings_SingleName::~LocalizedStrings_SingleName\28\29.1 10948:SkOTUtils::LocalizedStrings_SingleName::next\28SkTypeface::LocalizedString*\29 10949:SkOTUtils::LocalizedStrings_NameTable::~LocalizedStrings_NameTable\28\29.1 10950:SkOTUtils::LocalizedStrings_NameTable::next\28SkTypeface::LocalizedString*\29 10951:SkNoPixelsDevice::~SkNoPixelsDevice\28\29.1 10952:SkNoPixelsDevice::replaceClip\28SkIRect\20const&\29 10953:SkNoPixelsDevice::pushClipStack\28\29 10954:SkNoPixelsDevice::popClipStack\28\29 10955:SkNoPixelsDevice::onClipShader\28sk_sp\29 10956:SkNoPixelsDevice::isClipWideOpen\28\29\20const 10957:SkNoPixelsDevice::isClipRect\28\29\20const 10958:SkNoPixelsDevice::isClipEmpty\28\29\20const 10959:SkNoPixelsDevice::isClipAntiAliased\28\29\20const 10960:SkNoPixelsDevice::devClipBounds\28\29\20const 10961:SkNoPixelsDevice::clipRegion\28SkRegion\20const&\2c\20SkClipOp\29 10962:SkNoPixelsDevice::clipRect\28SkRect\20const&\2c\20SkClipOp\2c\20bool\29 10963:SkNoPixelsDevice::clipRRect\28SkRRect\20const&\2c\20SkClipOp\2c\20bool\29 10964:SkNoPixelsDevice::clipPath\28SkPath\20const&\2c\20SkClipOp\2c\20bool\29 10965:SkNoPixelsDevice::android_utils_clipAsRgn\28SkRegion*\29\20const 10966:SkMipmap::~SkMipmap\28\29.1 10967:SkMipmap::onDataChange\28void*\2c\20void*\29 10968:SkMemoryStream::~SkMemoryStream\28\29.1 10969:SkMemoryStream::setMemory\28void\20const*\2c\20unsigned\20long\2c\20bool\29 10970:SkMemoryStream::seek\28unsigned\20long\29 10971:SkMemoryStream::rewind\28\29 10972:SkMemoryStream::read\28void*\2c\20unsigned\20long\29 10973:SkMemoryStream::peek\28void*\2c\20unsigned\20long\29\20const 10974:SkMemoryStream::onFork\28\29\20const 10975:SkMemoryStream::onDuplicate\28\29\20const 10976:SkMemoryStream::move\28long\29 10977:SkMemoryStream::isAtEnd\28\29\20const 10978:SkMemoryStream::getMemoryBase\28\29 10979:SkMemoryStream::getLength\28\29\20const 10980:SkMemoryStream::getData\28\29\20const 10981:SkMatrixColorFilter::onIsAlphaUnchanged\28\29\20const 10982:SkMatrixColorFilter::onAsAColorMatrix\28float*\29\20const 10983:SkMatrixColorFilter::getTypeName\28\29\20const 10984:SkMatrixColorFilter::flatten\28SkWriteBuffer&\29\20const 10985:SkMatrixColorFilter::appendStages\28SkStageRec\20const&\2c\20bool\29\20const 10986:SkMatrix::Trans_xy\28SkMatrix\20const&\2c\20float\2c\20float\2c\20SkPoint*\29 10987:SkMatrix::Trans_pts\28SkMatrix\20const&\2c\20SkPoint*\2c\20SkPoint\20const*\2c\20int\29 10988:SkMatrix::Scale_xy\28SkMatrix\20const&\2c\20float\2c\20float\2c\20SkPoint*\29 10989:SkMatrix::Scale_pts\28SkMatrix\20const&\2c\20SkPoint*\2c\20SkPoint\20const*\2c\20int\29 10990:SkMatrix::ScaleTrans_xy\28SkMatrix\20const&\2c\20float\2c\20float\2c\20SkPoint*\29 10991:SkMatrix::Poly4Proc\28SkPoint\20const*\2c\20SkMatrix*\29 10992:SkMatrix::Poly3Proc\28SkPoint\20const*\2c\20SkMatrix*\29 10993:SkMatrix::Poly2Proc\28SkPoint\20const*\2c\20SkMatrix*\29 10994:SkMatrix::Persp_xy\28SkMatrix\20const&\2c\20float\2c\20float\2c\20SkPoint*\29 10995:SkMatrix::Persp_pts\28SkMatrix\20const&\2c\20SkPoint*\2c\20SkPoint\20const*\2c\20int\29 10996:SkMatrix::Identity_xy\28SkMatrix\20const&\2c\20float\2c\20float\2c\20SkPoint*\29 10997:SkMatrix::Identity_pts\28SkMatrix\20const&\2c\20SkPoint*\2c\20SkPoint\20const*\2c\20int\29 10998:SkMatrix::Affine_vpts\28SkMatrix\20const&\2c\20SkPoint*\2c\20SkPoint\20const*\2c\20int\29 10999:SkMaskFilterBase::filterRectsToNine\28SkRect\20const*\2c\20int\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20SkTLazy*\29\20const 11000:SkMaskFilterBase::filterRRectToNine\28SkRRect\20const&\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20SkTLazy*\29\20const 11001:SkMallocPixelRef::MakeAllocate\28SkImageInfo\20const&\2c\20unsigned\20long\29::PixelRef::~PixelRef\28\29.1 11002:SkMakePixelRefWithProc\28int\2c\20int\2c\20unsigned\20long\2c\20void*\2c\20void\20\28*\29\28void*\2c\20void*\29\2c\20void*\29::PixelRef::~PixelRef\28\29.1 11003:SkLocalMatrixShader::~SkLocalMatrixShader\28\29.1 11004:SkLocalMatrixShader::~SkLocalMatrixShader\28\29 11005:SkLocalMatrixShader::onIsAImage\28SkMatrix*\2c\20SkTileMode*\29\20const 11006:SkLocalMatrixShader::makeAsALocalMatrixShader\28SkMatrix*\29\20const 11007:SkLocalMatrixShader::isOpaque\28\29\20const 11008:SkLocalMatrixShader::isConstant\28\29\20const 11009:SkLocalMatrixShader::getTypeName\28\29\20const 11010:SkLocalMatrixShader::flatten\28SkWriteBuffer&\29\20const 11011:SkLocalMatrixShader::asGradient\28SkShaderBase::GradientInfo*\2c\20SkMatrix*\29\20const 11012:SkLocalMatrixShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 11013:SkLinearGradient::getTypeName\28\29\20const 11014:SkLinearGradient::flatten\28SkWriteBuffer&\29\20const 11015:SkLinearGradient::asGradient\28SkShaderBase::GradientInfo*\2c\20SkMatrix*\29\20const 11016:SkJSONWriter::popScope\28\29 11017:SkIntersections::hasOppT\28double\29\20const 11018:SkImage_Raster::~SkImage_Raster\28\29.1 11019:SkImage_Raster::onReinterpretColorSpace\28sk_sp\29\20const 11020:SkImage_Raster::onReadPixels\28GrDirectContext*\2c\20SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20int\2c\20int\2c\20SkImage::CachingHint\29\20const 11021:SkImage_Raster::onPeekPixels\28SkPixmap*\29\20const 11022:SkImage_Raster::onPeekMips\28\29\20const 11023:SkImage_Raster::onPeekBitmap\28\29\20const 11024:SkImage_Raster::onMakeWithMipmaps\28sk_sp\29\20const 11025:SkImage_Raster::onMakeSubset\28skgpu::graphite::Recorder*\2c\20SkIRect\20const&\2c\20SkImage::RequiredProperties\29\20const 11026:SkImage_Raster::onMakeSubset\28GrDirectContext*\2c\20SkIRect\20const&\29\20const 11027:SkImage_Raster::onMakeColorTypeAndColorSpace\28SkColorType\2c\20sk_sp\2c\20GrDirectContext*\29\20const 11028:SkImage_Raster::onHasMipmaps\28\29\20const 11029:SkImage_Raster::onAsLegacyBitmap\28GrDirectContext*\2c\20SkBitmap*\29\20const 11030:SkImage_Raster::notifyAddedToRasterCache\28\29\20const 11031:SkImage_Raster::getROPixels\28GrDirectContext*\2c\20SkBitmap*\2c\20SkImage::CachingHint\29\20const 11032:SkImage_LazyTexture::readPixelsProxy\28GrDirectContext*\2c\20SkPixmap\20const&\29\20const 11033:SkImage_LazyTexture::onMakeSubset\28GrDirectContext*\2c\20SkIRect\20const&\29\20const 11034:SkImage_Lazy::onReinterpretColorSpace\28sk_sp\29\20const 11035:SkImage_Lazy::onRefEncoded\28\29\20const 11036:SkImage_Lazy::onReadPixels\28GrDirectContext*\2c\20SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20int\2c\20int\2c\20SkImage::CachingHint\29\20const 11037:SkImage_Lazy::onMakeSubset\28skgpu::graphite::Recorder*\2c\20SkIRect\20const&\2c\20SkImage::RequiredProperties\29\20const 11038:SkImage_Lazy::onMakeSubset\28GrDirectContext*\2c\20SkIRect\20const&\29\20const 11039:SkImage_Lazy::onMakeColorTypeAndColorSpace\28SkColorType\2c\20sk_sp\2c\20GrDirectContext*\29\20const 11040:SkImage_Lazy::onIsProtected\28\29\20const 11041:SkImage_Lazy::isValid\28GrRecordingContext*\29\20const 11042:SkImage_Lazy::getROPixels\28GrDirectContext*\2c\20SkBitmap*\2c\20SkImage::CachingHint\29\20const 11043:SkImage_GaneshBase::onReadPixels\28GrDirectContext*\2c\20SkImageInfo\20const&\2c\20void*\2c\20unsigned\20long\2c\20int\2c\20int\2c\20SkImage::CachingHint\29\20const 11044:SkImage_GaneshBase::onMakeSubset\28skgpu::graphite::Recorder*\2c\20SkIRect\20const&\2c\20SkImage::RequiredProperties\29\20const 11045:SkImage_GaneshBase::makeSubset\28GrDirectContext*\2c\20SkIRect\20const&\29\20const 11046:SkImage_GaneshBase::makeColorTypeAndColorSpace\28skgpu::graphite::Recorder*\2c\20SkColorType\2c\20sk_sp\2c\20SkImage::RequiredProperties\29\20const 11047:SkImage_GaneshBase::makeColorTypeAndColorSpace\28GrDirectContext*\2c\20SkColorType\2c\20sk_sp\29\20const 11048:SkImage_GaneshBase::isValid\28GrRecordingContext*\29\20const 11049:SkImage_GaneshBase::getROPixels\28GrDirectContext*\2c\20SkBitmap*\2c\20SkImage::CachingHint\29\20const 11050:SkImage_GaneshBase::directContext\28\29\20const 11051:SkImage_Ganesh::~SkImage_Ganesh\28\29.1 11052:SkImage_Ganesh::textureSize\28\29\20const 11053:SkImage_Ganesh::onReinterpretColorSpace\28sk_sp\29\20const 11054:SkImage_Ganesh::onMakeColorTypeAndColorSpace\28SkColorType\2c\20sk_sp\2c\20GrDirectContext*\29\20const 11055:SkImage_Ganesh::onIsProtected\28\29\20const 11056:SkImage_Ganesh::onHasMipmaps\28\29\20const 11057:SkImage_Ganesh::onAsyncRescaleAndReadPixels\28SkImageInfo\20const&\2c\20SkIRect\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29\20const 11058:SkImage_Ganesh::onAsyncRescaleAndReadPixelsYUV420\28SkYUVColorSpace\2c\20bool\2c\20sk_sp\2c\20SkIRect\2c\20SkISize\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29\20const 11059:SkImage_Ganesh::generatingSurfaceIsDeleted\28\29 11060:SkImage_Ganesh::flush\28GrDirectContext*\2c\20GrFlushInfo\20const&\29\20const 11061:SkImage_Ganesh::asView\28GrRecordingContext*\2c\20skgpu::Mipmapped\2c\20GrImageTexGenPolicy\29\20const 11062:SkImage_Ganesh::asFragmentProcessor\28GrRecordingContext*\2c\20SkSamplingOptions\2c\20SkTileMode\20const*\2c\20SkMatrix\20const&\2c\20SkRect\20const*\2c\20SkRect\20const*\29\20const 11063:SkImage_Base::onAsyncRescaleAndReadPixels\28SkImageInfo\20const&\2c\20SkIRect\2c\20SkImage::RescaleGamma\2c\20SkImage::RescaleMode\2c\20void\20\28*\29\28void*\2c\20std::__2::unique_ptr>\29\2c\20void*\29\20const 11064:SkImage_Base::notifyAddedToRasterCache\28\29\20const 11065:SkImage_Base::makeSubset\28skgpu::graphite::Recorder*\2c\20SkIRect\20const&\2c\20SkImage::RequiredProperties\29\20const 11066:SkImage_Base::makeSubset\28GrDirectContext*\2c\20SkIRect\20const&\29\20const 11067:SkImage_Base::makeColorTypeAndColorSpace\28skgpu::graphite::Recorder*\2c\20SkColorType\2c\20sk_sp\2c\20SkImage::RequiredProperties\29\20const 11068:SkImage_Base::makeColorTypeAndColorSpace\28GrDirectContext*\2c\20SkColorType\2c\20sk_sp\29\20const 11069:SkImage_Base::makeColorSpace\28skgpu::graphite::Recorder*\2c\20sk_sp\2c\20SkImage::RequiredProperties\29\20const 11070:SkImage_Base::makeColorSpace\28GrDirectContext*\2c\20sk_sp\29\20const 11071:SkImage_Base::isTextureBacked\28\29\20const 11072:SkImage_Base::isLazyGenerated\28\29\20const 11073:SkImageShader::~SkImageShader\28\29.1 11074:SkImageShader::type\28\29\20const 11075:SkImageShader::onIsAImage\28SkMatrix*\2c\20SkTileMode*\29\20const 11076:SkImageShader::isOpaque\28\29\20const 11077:SkImageShader::getTypeName\28\29\20const 11078:SkImageShader::flatten\28SkWriteBuffer&\29\20const 11079:SkImageShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 11080:SkImageGenerator::~SkImageGenerator\28\29.1 11081:SkImageFilter::computeFastBounds\28SkRect\20const&\29\20const 11082:SkGradientBaseShader::onAsLuminanceColor\28SkRGBA4f<\28SkAlphaType\293>*\29\20const 11083:SkGradientBaseShader::isOpaque\28\29\20const 11084:SkGradientBaseShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 11085:SkGaussianColorFilter::getTypeName\28\29\20const 11086:SkGaussianColorFilter::appendStages\28SkStageRec\20const&\2c\20bool\29\20const 11087:SkGammaColorSpaceLuminance::toLuma\28float\2c\20float\29\20const 11088:SkGammaColorSpaceLuminance::fromLuma\28float\2c\20float\29\20const 11089:SkFontStyleSet_Custom::~SkFontStyleSet_Custom\28\29.1 11090:SkFontStyleSet_Custom::getStyle\28int\2c\20SkFontStyle*\2c\20SkString*\29 11091:SkFontScanner_FreeType::~SkFontScanner_FreeType\28\29.1 11092:SkFontScanner_FreeType::scanFile\28SkStreamAsset*\2c\20int*\29\20const 11093:SkFontScanner_FreeType::scanFace\28SkStreamAsset*\2c\20int\2c\20int*\29\20const 11094:SkFontMgr_Custom::~SkFontMgr_Custom\28\29.1 11095:SkFontMgr_Custom::onMatchFamily\28char\20const*\29\20const 11096:SkFontMgr_Custom::onMatchFamilyStyle\28char\20const*\2c\20SkFontStyle\20const&\29\20const 11097:SkFontMgr_Custom::onMakeFromStreamIndex\28std::__2::unique_ptr>\2c\20int\29\20const 11098:SkFontMgr_Custom::onMakeFromStreamArgs\28std::__2::unique_ptr>\2c\20SkFontArguments\20const&\29\20const 11099:SkFontMgr_Custom::onMakeFromFile\28char\20const*\2c\20int\29\20const 11100:SkFontMgr_Custom::onMakeFromData\28sk_sp\2c\20int\29\20const 11101:SkFontMgr_Custom::onLegacyMakeTypeface\28char\20const*\2c\20SkFontStyle\29\20const 11102:SkFontMgr_Custom::onGetFamilyName\28int\2c\20SkString*\29\20const 11103:SkFILEStream::~SkFILEStream\28\29.1 11104:SkFILEStream::seek\28unsigned\20long\29 11105:SkFILEStream::rewind\28\29 11106:SkFILEStream::read\28void*\2c\20unsigned\20long\29 11107:SkFILEStream::onFork\28\29\20const 11108:SkFILEStream::onDuplicate\28\29\20const 11109:SkFILEStream::move\28long\29 11110:SkFILEStream::isAtEnd\28\29\20const 11111:SkFILEStream::getPosition\28\29\20const 11112:SkFILEStream::getLength\28\29\20const 11113:SkEmptyShader::getTypeName\28\29\20const 11114:SkEmptyPicture::~SkEmptyPicture\28\29 11115:SkEmptyPicture::cullRect\28\29\20const 11116:SkEmptyPicture::approximateBytesUsed\28\29\20const 11117:SkEmptyFontMgr::onMatchFamily\28char\20const*\29\20const 11118:SkEdgeBuilder::build\28SkPath\20const&\2c\20SkIRect\20const*\2c\20bool\29::$_0::__invoke\28SkEdgeClipper*\2c\20bool\2c\20void*\29 11119:SkDynamicMemoryWStream::~SkDynamicMemoryWStream\28\29.1 11120:SkDynamicMemoryWStream::bytesWritten\28\29\20const 11121:SkDraw::paintMasks\28SkZip\2c\20SkPaint\20const&\29\20const 11122:SkDevice::strikeDeviceInfo\28\29\20const 11123:SkDevice::drawSlug\28SkCanvas*\2c\20sktext::gpu::Slug\20const*\2c\20SkPaint\20const&\29 11124:SkDevice::drawRegion\28SkRegion\20const&\2c\20SkPaint\20const&\29 11125:SkDevice::drawPatch\28SkPoint\20const*\2c\20unsigned\20int\20const*\2c\20SkPoint\20const*\2c\20sk_sp\2c\20SkPaint\20const&\29 11126:SkDevice::drawImageLattice\28SkImage\20const*\2c\20SkCanvas::Lattice\20const&\2c\20SkRect\20const&\2c\20SkFilterMode\2c\20SkPaint\20const&\29 11127:SkDevice::drawEdgeAAQuad\28SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkBlendMode\29 11128:SkDevice::drawEdgeAAImageSet\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 11129:SkDevice::drawDrawable\28SkCanvas*\2c\20SkDrawable*\2c\20SkMatrix\20const*\29 11130:SkDevice::drawDRRect\28SkRRect\20const&\2c\20SkRRect\20const&\2c\20SkPaint\20const&\29 11131:SkDevice::drawCoverageMask\28SkSpecialImage\20const*\2c\20SkMatrix\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\29 11132:SkDevice::drawAtlas\28SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20sk_sp\2c\20SkPaint\20const&\29 11133:SkDevice::drawAsTiledImageRect\28SkCanvas*\2c\20SkImage\20const*\2c\20SkRect\20const*\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 11134:SkDevice::createImageFilteringBackend\28SkSurfaceProps\20const&\2c\20SkColorType\29\20const 11135:SkDashImpl::~SkDashImpl\28\29.1 11136:SkDashImpl::onFilterPath\28SkPath*\2c\20SkPath\20const&\2c\20SkStrokeRec*\2c\20SkRect\20const*\2c\20SkMatrix\20const&\29\20const 11137:SkDashImpl::onAsPoints\28SkPathEffectBase::PointData*\2c\20SkPath\20const&\2c\20SkStrokeRec\20const&\2c\20SkMatrix\20const&\2c\20SkRect\20const*\29\20const 11138:SkDashImpl::onAsADash\28SkPathEffect::DashInfo*\29\20const 11139:SkDashImpl::getTypeName\28\29\20const 11140:SkDashImpl::flatten\28SkWriteBuffer&\29\20const 11141:SkDCurve::nearPoint\28SkPath::Verb\2c\20SkDPoint\20const&\2c\20SkDPoint\20const&\29\20const 11142:SkContourMeasure::~SkContourMeasure\28\29.1 11143:SkConicalGradient::getTypeName\28\29\20const 11144:SkConicalGradient::flatten\28SkWriteBuffer&\29\20const 11145:SkConicalGradient::asGradient\28SkShaderBase::GradientInfo*\2c\20SkMatrix*\29\20const 11146:SkConicalGradient::appendGradientStages\28SkArenaAlloc*\2c\20SkRasterPipeline*\2c\20SkRasterPipeline*\29\20const 11147:SkComposeColorFilter::onIsAlphaUnchanged\28\29\20const 11148:SkComposeColorFilter::getTypeName\28\29\20const 11149:SkComposeColorFilter::appendStages\28SkStageRec\20const&\2c\20bool\29\20const 11150:SkColorSpaceXformColorFilter::~SkColorSpaceXformColorFilter\28\29.1 11151:SkColorSpaceXformColorFilter::getTypeName\28\29\20const 11152:SkColorSpaceXformColorFilter::flatten\28SkWriteBuffer&\29\20const 11153:SkColorSpaceXformColorFilter::appendStages\28SkStageRec\20const&\2c\20bool\29\20const 11154:SkColorShader::onAsLuminanceColor\28SkRGBA4f<\28SkAlphaType\293>*\29\20const 11155:SkColorShader::isOpaque\28\29\20const 11156:SkColorShader::getTypeName\28\29\20const 11157:SkColorShader::flatten\28SkWriteBuffer&\29\20const 11158:SkColorShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 11159:SkColorFilterShader::~SkColorFilterShader\28\29.1 11160:SkColorFilterShader::isOpaque\28\29\20const 11161:SkColorFilterShader::getTypeName\28\29\20const 11162:SkColorFilterShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 11163:SkColorFilterBase::onFilterColor4f\28SkRGBA4f<\28SkAlphaType\292>\20const&\2c\20SkColorSpace*\29\20const 11164:SkColor4Shader::~SkColor4Shader\28\29.1 11165:SkColor4Shader::onAsLuminanceColor\28SkRGBA4f<\28SkAlphaType\293>*\29\20const 11166:SkColor4Shader::isOpaque\28\29\20const 11167:SkColor4Shader::getTypeName\28\29\20const 11168:SkColor4Shader::flatten\28SkWriteBuffer&\29\20const 11169:SkColor4Shader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 11170:SkCoincidentSpans::setOppPtTStart\28SkOpPtT\20const*\29 11171:SkCoincidentSpans::setOppPtTEnd\28SkOpPtT\20const*\29 11172:SkCoincidentSpans::setCoinPtTStart\28SkOpPtT\20const*\29 11173:SkCoincidentSpans::setCoinPtTEnd\28SkOpPtT\20const*\29 11174:SkCanvas::~SkCanvas\28\29.1 11175:SkCanvas::recordingContext\28\29\20const 11176:SkCanvas::recorder\28\29\20const 11177:SkCanvas::onPeekPixels\28SkPixmap*\29 11178:SkCanvas::onNewSurface\28SkImageInfo\20const&\2c\20SkSurfaceProps\20const&\29 11179:SkCanvas::onImageInfo\28\29\20const 11180:SkCanvas::onGetProps\28SkSurfaceProps*\2c\20bool\29\20const 11181:SkCanvas::onDrawVerticesObject\28SkVertices\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 11182:SkCanvas::onDrawTextBlob\28SkTextBlob\20const*\2c\20float\2c\20float\2c\20SkPaint\20const&\29 11183:SkCanvas::onDrawSlug\28sktext::gpu::Slug\20const*\2c\20SkPaint\20const&\29 11184:SkCanvas::onDrawShadowRec\28SkPath\20const&\2c\20SkDrawShadowRec\20const&\29 11185:SkCanvas::onDrawRegion\28SkRegion\20const&\2c\20SkPaint\20const&\29 11186:SkCanvas::onDrawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 11187:SkCanvas::onDrawRRect\28SkRRect\20const&\2c\20SkPaint\20const&\29 11188:SkCanvas::onDrawPoints\28SkCanvas::PointMode\2c\20unsigned\20long\2c\20SkPoint\20const*\2c\20SkPaint\20const&\29 11189:SkCanvas::onDrawPicture\28SkPicture\20const*\2c\20SkMatrix\20const*\2c\20SkPaint\20const*\29 11190:SkCanvas::onDrawPath\28SkPath\20const&\2c\20SkPaint\20const&\29 11191:SkCanvas::onDrawPatch\28SkPoint\20const*\2c\20unsigned\20int\20const*\2c\20SkPoint\20const*\2c\20SkBlendMode\2c\20SkPaint\20const&\29 11192:SkCanvas::onDrawPaint\28SkPaint\20const&\29 11193:SkCanvas::onDrawOval\28SkRect\20const&\2c\20SkPaint\20const&\29 11194:SkCanvas::onDrawMesh\28SkMesh\20const&\2c\20sk_sp\2c\20SkPaint\20const&\29 11195:SkCanvas::onDrawImageRect2\28SkImage\20const*\2c\20SkRect\20const&\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 11196:SkCanvas::onDrawImageLattice2\28SkImage\20const*\2c\20SkCanvas::Lattice\20const&\2c\20SkRect\20const&\2c\20SkFilterMode\2c\20SkPaint\20const*\29 11197:SkCanvas::onDrawImage2\28SkImage\20const*\2c\20float\2c\20float\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\29 11198:SkCanvas::onDrawGlyphRunList\28sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\29 11199:SkCanvas::onDrawEdgeAAQuad\28SkRect\20const&\2c\20SkPoint\20const*\2c\20SkCanvas::QuadAAFlags\2c\20SkRGBA4f<\28SkAlphaType\293>\20const&\2c\20SkBlendMode\29 11200:SkCanvas::onDrawEdgeAAImageSet2\28SkCanvas::ImageSetEntry\20const*\2c\20int\2c\20SkPoint\20const*\2c\20SkMatrix\20const*\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const*\2c\20SkCanvas::SrcRectConstraint\29 11201:SkCanvas::onDrawDrawable\28SkDrawable*\2c\20SkMatrix\20const*\29 11202:SkCanvas::onDrawDRRect\28SkRRect\20const&\2c\20SkRRect\20const&\2c\20SkPaint\20const&\29 11203:SkCanvas::onDrawBehind\28SkPaint\20const&\29 11204:SkCanvas::onDrawAtlas2\28SkImage\20const*\2c\20SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20SkBlendMode\2c\20SkSamplingOptions\20const&\2c\20SkRect\20const*\2c\20SkPaint\20const*\29 11205:SkCanvas::onDrawArc\28SkRect\20const&\2c\20float\2c\20float\2c\20bool\2c\20SkPaint\20const&\29 11206:SkCanvas::onDrawAnnotation\28SkRect\20const&\2c\20char\20const*\2c\20SkData*\29 11207:SkCanvas::onDiscard\28\29 11208:SkCanvas::onConvertGlyphRunListToSlug\28sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\29 11209:SkCanvas::onAccessTopLayerPixels\28SkPixmap*\29 11210:SkCanvas::isClipRect\28\29\20const 11211:SkCanvas::isClipEmpty\28\29\20const 11212:SkCanvas::getBaseLayerSize\28\29\20const 11213:SkCachedData::~SkCachedData\28\29.1 11214:SkCTMShader::~SkCTMShader\28\29.1 11215:SkCTMShader::~SkCTMShader\28\29 11216:SkCTMShader::isConstant\28\29\20const 11217:SkCTMShader::getTypeName\28\29\20const 11218:SkCTMShader::asGradient\28SkShaderBase::GradientInfo*\2c\20SkMatrix*\29\20const 11219:SkCTMShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 11220:SkBreakIterator_client::~SkBreakIterator_client\28\29.1 11221:SkBreakIterator_client::status\28\29 11222:SkBreakIterator_client::setText\28char\20const*\2c\20int\29 11223:SkBreakIterator_client::setText\28char16_t\20const*\2c\20int\29 11224:SkBreakIterator_client::next\28\29 11225:SkBreakIterator_client::isDone\28\29 11226:SkBreakIterator_client::first\28\29 11227:SkBreakIterator_client::current\28\29 11228:SkBlurMaskFilterImpl::getTypeName\28\29\20const 11229:SkBlurMaskFilterImpl::flatten\28SkWriteBuffer&\29\20const 11230:SkBlurMaskFilterImpl::filterRectsToNine\28SkRect\20const*\2c\20int\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20SkTLazy*\29\20const 11231:SkBlurMaskFilterImpl::filterRRectToNine\28SkRRect\20const&\2c\20SkMatrix\20const&\2c\20SkIRect\20const&\2c\20SkTLazy*\29\20const 11232:SkBlurMaskFilterImpl::filterMask\28SkMaskBuilder*\2c\20SkMask\20const&\2c\20SkMatrix\20const&\2c\20SkIPoint*\29\20const 11233:SkBlurMaskFilterImpl::computeFastBounds\28SkRect\20const&\2c\20SkRect*\29\20const 11234:SkBlurMaskFilterImpl::asImageFilter\28SkMatrix\20const&\29\20const 11235:SkBlurMaskFilterImpl::asABlur\28SkMaskFilterBase::BlurRec*\29\20const 11236:SkBlitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 11237:SkBlitter::blitAntiV2\28int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 11238:SkBlitter::blitAntiRect\28int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\29 11239:SkBlitter::blitAntiH2\28int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 11240:SkBlitter::allocBlitMemory\28unsigned\20long\29 11241:SkBlendShader::getTypeName\28\29\20const 11242:SkBlendShader::flatten\28SkWriteBuffer&\29\20const 11243:SkBlendShader::appendStages\28SkStageRec\20const&\2c\20SkShaders::MatrixRec\20const&\29\20const 11244:SkBlendModeColorFilter::onIsAlphaUnchanged\28\29\20const 11245:SkBlendModeColorFilter::onAsAColorMode\28unsigned\20int*\2c\20SkBlendMode*\29\20const 11246:SkBlendModeColorFilter::getTypeName\28\29\20const 11247:SkBlendModeColorFilter::flatten\28SkWriteBuffer&\29\20const 11248:SkBlendModeColorFilter::appendStages\28SkStageRec\20const&\2c\20bool\29\20const 11249:SkBlendModeBlender::onAppendStages\28SkStageRec\20const&\29\20const 11250:SkBlendModeBlender::getTypeName\28\29\20const 11251:SkBlendModeBlender::flatten\28SkWriteBuffer&\29\20const 11252:SkBlendModeBlender::asBlendMode\28\29\20const 11253:SkBitmapDevice::~SkBitmapDevice\28\29.1 11254:SkBitmapDevice::snapSpecial\28SkIRect\20const&\2c\20bool\29 11255:SkBitmapDevice::setImmutable\28\29 11256:SkBitmapDevice::replaceClip\28SkIRect\20const&\29 11257:SkBitmapDevice::pushClipStack\28\29 11258:SkBitmapDevice::popClipStack\28\29 11259:SkBitmapDevice::onWritePixels\28SkPixmap\20const&\2c\20int\2c\20int\29 11260:SkBitmapDevice::onReadPixels\28SkPixmap\20const&\2c\20int\2c\20int\29 11261:SkBitmapDevice::onPeekPixels\28SkPixmap*\29 11262:SkBitmapDevice::onDrawGlyphRunList\28SkCanvas*\2c\20sktext::GlyphRunList\20const&\2c\20SkPaint\20const&\29 11263:SkBitmapDevice::onClipShader\28sk_sp\29 11264:SkBitmapDevice::onAccessPixels\28SkPixmap*\29 11265:SkBitmapDevice::makeSurface\28SkImageInfo\20const&\2c\20SkSurfaceProps\20const&\29 11266:SkBitmapDevice::makeSpecial\28SkImage\20const*\29 11267:SkBitmapDevice::makeSpecial\28SkBitmap\20const&\29 11268:SkBitmapDevice::isClipWideOpen\28\29\20const 11269:SkBitmapDevice::isClipRect\28\29\20const 11270:SkBitmapDevice::isClipEmpty\28\29\20const 11271:SkBitmapDevice::isClipAntiAliased\28\29\20const 11272:SkBitmapDevice::getRasterHandle\28\29\20const 11273:SkBitmapDevice::drawVertices\28SkVertices\20const*\2c\20sk_sp\2c\20SkPaint\20const&\2c\20bool\29 11274:SkBitmapDevice::drawSpecial\28SkSpecialImage*\2c\20SkMatrix\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 11275:SkBitmapDevice::drawRect\28SkRect\20const&\2c\20SkPaint\20const&\29 11276:SkBitmapDevice::drawRRect\28SkRRect\20const&\2c\20SkPaint\20const&\29 11277:SkBitmapDevice::drawPoints\28SkCanvas::PointMode\2c\20unsigned\20long\2c\20SkPoint\20const*\2c\20SkPaint\20const&\29 11278:SkBitmapDevice::drawPath\28SkPath\20const&\2c\20SkPaint\20const&\2c\20bool\29 11279:SkBitmapDevice::drawPaint\28SkPaint\20const&\29 11280:SkBitmapDevice::drawOval\28SkRect\20const&\2c\20SkPaint\20const&\29 11281:SkBitmapDevice::drawImageRect\28SkImage\20const*\2c\20SkRect\20const*\2c\20SkRect\20const&\2c\20SkSamplingOptions\20const&\2c\20SkPaint\20const&\2c\20SkCanvas::SrcRectConstraint\29 11282:SkBitmapDevice::drawAtlas\28SkRSXform\20const*\2c\20SkRect\20const*\2c\20unsigned\20int\20const*\2c\20int\2c\20sk_sp\2c\20SkPaint\20const&\29 11283:SkBitmapDevice::devClipBounds\28\29\20const 11284:SkBitmapDevice::createDevice\28SkDevice::CreateInfo\20const&\2c\20SkPaint\20const*\29 11285:SkBitmapDevice::clipRegion\28SkRegion\20const&\2c\20SkClipOp\29 11286:SkBitmapDevice::clipRect\28SkRect\20const&\2c\20SkClipOp\2c\20bool\29 11287:SkBitmapDevice::clipRRect\28SkRRect\20const&\2c\20SkClipOp\2c\20bool\29 11288:SkBitmapDevice::clipPath\28SkPath\20const&\2c\20SkClipOp\2c\20bool\29 11289:SkBitmapDevice::android_utils_clipAsRgn\28SkRegion*\29\20const 11290:SkBitmapCache::Rec::~Rec\28\29.1 11291:SkBitmapCache::Rec::postAddInstall\28void*\29 11292:SkBitmapCache::Rec::getCategory\28\29\20const 11293:SkBitmapCache::Rec::canBePurged\28\29 11294:SkBitmapCache::Rec::bytesUsed\28\29\20const 11295:SkBitmapCache::Rec::ReleaseProc\28void*\2c\20void*\29 11296:SkBitmapCache::Rec::Finder\28SkResourceCache::Rec\20const&\2c\20void*\29 11297:SkBinaryWriteBuffer::~SkBinaryWriteBuffer\28\29.1 11298:SkBinaryWriteBuffer::write\28SkM44\20const&\29 11299:SkBinaryWriteBuffer::writeTypeface\28SkTypeface*\29 11300:SkBinaryWriteBuffer::writeString\28std::__2::basic_string_view>\29 11301:SkBinaryWriteBuffer::writeStream\28SkStream*\2c\20unsigned\20long\29 11302:SkBinaryWriteBuffer::writeScalar\28float\29 11303:SkBinaryWriteBuffer::writeSampling\28SkSamplingOptions\20const&\29 11304:SkBinaryWriteBuffer::writeRegion\28SkRegion\20const&\29 11305:SkBinaryWriteBuffer::writeRect\28SkRect\20const&\29 11306:SkBinaryWriteBuffer::writePoint\28SkPoint\20const&\29 11307:SkBinaryWriteBuffer::writePointArray\28SkPoint\20const*\2c\20unsigned\20int\29 11308:SkBinaryWriteBuffer::writePoint3\28SkPoint3\20const&\29 11309:SkBinaryWriteBuffer::writePath\28SkPath\20const&\29 11310:SkBinaryWriteBuffer::writePaint\28SkPaint\20const&\29 11311:SkBinaryWriteBuffer::writePad32\28void\20const*\2c\20unsigned\20long\29 11312:SkBinaryWriteBuffer::writeMatrix\28SkMatrix\20const&\29 11313:SkBinaryWriteBuffer::writeImage\28SkImage\20const*\29 11314:SkBinaryWriteBuffer::writeColor4fArray\28SkRGBA4f<\28SkAlphaType\293>\20const*\2c\20unsigned\20int\29 11315:SkBinaryWriteBuffer::writeBool\28bool\29 11316:SkBigPicture::~SkBigPicture\28\29.1 11317:SkBigPicture::playback\28SkCanvas*\2c\20SkPicture::AbortCallback*\29\20const 11318:SkBigPicture::cullRect\28\29\20const 11319:SkBigPicture::approximateOpCount\28bool\29\20const 11320:SkBigPicture::approximateBytesUsed\28\29\20const 11321:SkBidiSubsetFactory::errorName\28UErrorCode\29\20const 11322:SkBidiSubsetFactory::bidi_setPara\28UBiDi*\2c\20char16_t\20const*\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char*\2c\20UErrorCode*\29\20const 11323:SkBidiSubsetFactory::bidi_reorderVisual\28unsigned\20char\20const*\2c\20int\2c\20int*\29\20const 11324:SkBidiSubsetFactory::bidi_openSized\28int\2c\20int\2c\20UErrorCode*\29\20const 11325:SkBidiSubsetFactory::bidi_getLevelAt\28UBiDi\20const*\2c\20int\29\20const 11326:SkBidiSubsetFactory::bidi_getLength\28UBiDi\20const*\29\20const 11327:SkBidiSubsetFactory::bidi_getDirection\28UBiDi\20const*\29\20const 11328:SkBidiSubsetFactory::bidi_close_callback\28\29\20const 11329:SkBasicEdgeBuilder::recoverClip\28SkIRect\20const&\29\20const 11330:SkBasicEdgeBuilder::allocEdges\28unsigned\20long\2c\20unsigned\20long*\29 11331:SkBasicEdgeBuilder::addQuad\28SkPoint\20const*\29 11332:SkBasicEdgeBuilder::addPolyLine\28SkPoint\20const*\2c\20char*\2c\20char**\29 11333:SkBasicEdgeBuilder::addLine\28SkPoint\20const*\29 11334:SkBasicEdgeBuilder::addCubic\28SkPoint\20const*\29 11335:SkBBoxHierarchy::insert\28SkRect\20const*\2c\20SkBBoxHierarchy::Metadata\20const*\2c\20int\29 11336:SkArenaAlloc::SkipPod\28char*\29 11337:SkArenaAlloc::NextBlock\28char*\29 11338:SkAnalyticEdgeBuilder::recoverClip\28SkIRect\20const&\29\20const 11339:SkAnalyticEdgeBuilder::allocEdges\28unsigned\20long\2c\20unsigned\20long*\29 11340:SkAnalyticEdgeBuilder::addQuad\28SkPoint\20const*\29 11341:SkAnalyticEdgeBuilder::addPolyLine\28SkPoint\20const*\2c\20char*\2c\20char**\29 11342:SkAnalyticEdgeBuilder::addLine\28SkPoint\20const*\29 11343:SkAnalyticEdgeBuilder::addCubic\28SkPoint\20const*\29 11344:SkAAClipBlitter::~SkAAClipBlitter\28\29.1 11345:SkAAClipBlitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 11346:SkAAClipBlitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 11347:SkAAClipBlitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 11348:SkAAClipBlitter::blitH\28int\2c\20int\2c\20int\29 11349:SkAAClipBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 11350:SkAAClip::Builder::operateY\28SkAAClip\20const&\2c\20SkAAClip\20const&\2c\20SkClipOp\29::$_1::__invoke\28unsigned\20int\2c\20unsigned\20int\29 11351:SkAAClip::Builder::operateY\28SkAAClip\20const&\2c\20SkAAClip\20const&\2c\20SkClipOp\29::$_0::__invoke\28unsigned\20int\2c\20unsigned\20int\29 11352:SkAAClip::Builder::Blitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 11353:SkAAClip::Builder::Blitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 11354:SkAAClip::Builder::Blitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 11355:SkAAClip::Builder::Blitter::blitH\28int\2c\20int\2c\20int\29 11356:SkAAClip::Builder::Blitter::blitAntiRect\28int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\29 11357:SkA8_Coverage_Blitter::~SkA8_Coverage_Blitter\28\29.1 11358:SkA8_Coverage_Blitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 11359:SkA8_Coverage_Blitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 11360:SkA8_Coverage_Blitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 11361:SkA8_Coverage_Blitter::blitH\28int\2c\20int\2c\20int\29 11362:SkA8_Coverage_Blitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 11363:SkA8_Blitter::~SkA8_Blitter\28\29.1 11364:SkA8_Blitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 11365:SkA8_Blitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 11366:SkA8_Blitter::blitMask\28SkMask\20const&\2c\20SkIRect\20const&\29 11367:SkA8_Blitter::blitH\28int\2c\20int\2c\20int\29 11368:SkA8_Blitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20short\20const*\29 11369:SkA8Blitter_Choose\28SkPixmap\20const&\2c\20SkMatrix\20const&\2c\20SkPaint\20const&\2c\20SkArenaAlloc*\2c\20bool\2c\20sk_sp\2c\20SkSurfaceProps\20const&\29 11370:ShaderPDXferProcessor::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11371:ShaderPDXferProcessor::name\28\29\20const 11372:ShaderPDXferProcessor::makeProgramImpl\28\29\20const 11373:SafeRLEAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\29 11374:SafeRLEAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20int\29 11375:SafeRLEAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 11376:RuntimeEffectRPCallbacks::toLinearSrgb\28void\20const*\29 11377:RuntimeEffectRPCallbacks::fromLinearSrgb\28void\20const*\29 11378:RuntimeEffectRPCallbacks::appendShader\28int\29 11379:RuntimeEffectRPCallbacks::appendColorFilter\28int\29 11380:RuntimeEffectRPCallbacks::appendBlender\28int\29 11381:RunBasedAdditiveBlitter::getRealBlitter\28bool\29 11382:RunBasedAdditiveBlitter::flush_if_y_changed\28int\2c\20int\29 11383:RunBasedAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\29 11384:RunBasedAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20int\29 11385:RunBasedAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 11386:Round_Up_To_Grid 11387:Round_To_Half_Grid 11388:Round_To_Grid 11389:Round_To_Double_Grid 11390:Round_Super_45 11391:Round_Super 11392:Round_None 11393:Round_Down_To_Grid 11394:RoundJoiner\28SkPath*\2c\20SkPath*\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20float\2c\20bool\2c\20bool\29 11395:RoundCapper\28SkPath*\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPath*\29 11396:Read_CVT_Stretched 11397:Read_CVT 11398:Project_y 11399:Project 11400:PrePostInverseBlitterProc\28SkBlitter*\2c\20int\2c\20bool\29 11401:PorterDuffXferProcessor::onHasSecondaryOutput\28\29\20const 11402:PorterDuffXferProcessor::onGetBlendInfo\28skgpu::BlendInfo*\29\20const 11403:PorterDuffXferProcessor::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11404:PorterDuffXferProcessor::name\28\29\20const 11405:PorterDuffXferProcessor::makeProgramImpl\28\29\20const::Impl::emitOutputsForBlendState\28GrXferProcessor::ProgramImpl::EmitArgs\20const&\29 11406:PorterDuffXferProcessor::makeProgramImpl\28\29\20const 11407:PDLCDXferProcessor::onIsEqual\28GrXferProcessor\20const&\29\20const 11408:PDLCDXferProcessor::onGetBlendInfo\28skgpu::BlendInfo*\29\20const 11409:PDLCDXferProcessor::name\28\29\20const 11410:PDLCDXferProcessor::makeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrXferProcessor\20const&\29 11411:PDLCDXferProcessor::makeProgramImpl\28\29\20const::Impl::emitOutputsForBlendState\28GrXferProcessor::ProgramImpl::EmitArgs\20const&\29 11412:PDLCDXferProcessor::makeProgramImpl\28\29\20const 11413:OT::match_glyph\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29 11414:OT::match_coverage\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29 11415:OT::match_class_cached\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29 11416:OT::match_class_cached2\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29 11417:OT::match_class_cached1\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29 11418:OT::match_class\28hb_glyph_info_t&\2c\20unsigned\20int\2c\20void\20const*\29 11419:OT::hb_ot_apply_context_t::return_t\20OT::Layout::GSUB_impl::SubstLookup::dispatch_recurse_func\28OT::hb_ot_apply_context_t*\2c\20unsigned\20int\29 11420:OT::hb_ot_apply_context_t::return_t\20OT::Layout::GPOS_impl::PosLookup::dispatch_recurse_func\28OT::hb_ot_apply_context_t*\2c\20unsigned\20int\29 11421:OT::Layout::Common::RangeRecord::cmp_range\28void\20const*\2c\20void\20const*\29 11422:OT::ColorLine::static_get_color_stops\28hb_color_line_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20hb_color_stop_t*\2c\20void*\29 11423:OT::ColorLine::static_get_color_stops\28hb_color_line_t*\2c\20void*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20hb_color_stop_t*\2c\20void*\29 11424:OT::CmapSubtableFormat4::accelerator_t::get_glyph_func\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int*\29 11425:Move_CVT_Stretched 11426:Move_CVT 11427:MiterJoiner\28SkPath*\2c\20SkPath*\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20float\2c\20bool\2c\20bool\29 11428:MaskAdditiveBlitter::~MaskAdditiveBlitter\28\29.1 11429:MaskAdditiveBlitter::getWidth\28\29 11430:MaskAdditiveBlitter::getRealBlitter\28bool\29 11431:MaskAdditiveBlitter::blitV\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 11432:MaskAdditiveBlitter::blitRect\28int\2c\20int\2c\20int\2c\20int\29 11433:MaskAdditiveBlitter::blitAntiRect\28int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20char\2c\20unsigned\20char\29 11434:MaskAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\29 11435:MaskAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20unsigned\20char\20const*\2c\20int\29 11436:MaskAdditiveBlitter::blitAntiH\28int\2c\20int\2c\20int\2c\20unsigned\20char\29 11437:InverseBlitter::blitH\28int\2c\20int\2c\20int\29 11438:Horish_SkAntiHairBlitter::drawLine\28int\2c\20int\2c\20int\2c\20int\29 11439:Horish_SkAntiHairBlitter::drawCap\28int\2c\20int\2c\20int\2c\20int\29 11440:HLine_SkAntiHairBlitter::drawLine\28int\2c\20int\2c\20int\2c\20int\29 11441:HLine_SkAntiHairBlitter::drawCap\28int\2c\20int\2c\20int\2c\20int\29 11442:GrYUVtoRGBEffect::onMakeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 11443:GrYUVtoRGBEffect::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11444:GrYUVtoRGBEffect::onMakeProgramImpl\28\29\20const 11445:GrYUVtoRGBEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11446:GrYUVtoRGBEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11447:GrYUVtoRGBEffect::name\28\29\20const 11448:GrYUVtoRGBEffect::clone\28\29\20const 11449:GrXferProcessor::ProgramImpl::emitWriteSwizzle\28GrGLSLXPFragmentBuilder*\2c\20skgpu::Swizzle\20const&\2c\20char\20const*\2c\20char\20const*\29\20const 11450:GrXferProcessor::ProgramImpl::emitOutputsForBlendState\28GrXferProcessor::ProgramImpl::EmitArgs\20const&\29 11451:GrXferProcessor::ProgramImpl::emitBlendCodeForDstRead\28GrGLSLXPFragmentBuilder*\2c\20GrGLSLUniformHandler*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20GrXferProcessor\20const&\29 11452:GrWritePixelsTask::~GrWritePixelsTask\28\29.1 11453:GrWritePixelsTask::onMakeClosed\28GrRecordingContext*\2c\20SkIRect*\29 11454:GrWritePixelsTask::onExecute\28GrOpFlushState*\29 11455:GrWritePixelsTask::gatherProxyIntervals\28GrResourceAllocator*\29\20const 11456:GrWaitRenderTask::~GrWaitRenderTask\28\29.1 11457:GrWaitRenderTask::onIsUsed\28GrSurfaceProxy*\29\20const 11458:GrWaitRenderTask::onExecute\28GrOpFlushState*\29 11459:GrWaitRenderTask::gatherProxyIntervals\28GrResourceAllocator*\29\20const 11460:GrTransferFromRenderTask::~GrTransferFromRenderTask\28\29.1 11461:GrTransferFromRenderTask::onExecute\28GrOpFlushState*\29 11462:GrTransferFromRenderTask::gatherProxyIntervals\28GrResourceAllocator*\29\20const 11463:GrThreadSafeCache::Trampoline::~Trampoline\28\29.1 11464:GrTextureResolveRenderTask::~GrTextureResolveRenderTask\28\29.1 11465:GrTextureResolveRenderTask::onExecute\28GrOpFlushState*\29 11466:GrTextureResolveRenderTask::gatherProxyIntervals\28GrResourceAllocator*\29\20const 11467:GrTextureEffect::~GrTextureEffect\28\29.1 11468:GrTextureEffect::onMakeProgramImpl\28\29\20const 11469:GrTextureEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11470:GrTextureEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11471:GrTextureEffect::name\28\29\20const 11472:GrTextureEffect::clone\28\29\20const 11473:GrTextureEffect::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 11474:GrTextureEffect::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11475:GrTDeferredProxyUploader>::~GrTDeferredProxyUploader\28\29.1 11476:GrTDeferredProxyUploader>::freeData\28\29 11477:GrTDeferredProxyUploader<\28anonymous\20namespace\29::SoftwarePathData>::~GrTDeferredProxyUploader\28\29.1 11478:GrTDeferredProxyUploader<\28anonymous\20namespace\29::SoftwarePathData>::freeData\28\29 11479:GrSurfaceProxy::getUniqueKey\28\29\20const 11480:GrSurface::getResourceType\28\29\20const 11481:GrStrokeTessellationShader::~GrStrokeTessellationShader\28\29.1 11482:GrStrokeTessellationShader::name\28\29\20const 11483:GrStrokeTessellationShader::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11484:GrStrokeTessellationShader::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11485:GrStrokeTessellationShader::Impl::~Impl\28\29.1 11486:GrStrokeTessellationShader::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 11487:GrStrokeTessellationShader::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11488:GrSkSLFP::~GrSkSLFP\28\29.1 11489:GrSkSLFP::onMakeProgramImpl\28\29\20const 11490:GrSkSLFP::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11491:GrSkSLFP::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11492:GrSkSLFP::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 11493:GrSkSLFP::clone\28\29\20const 11494:GrSkSLFP::Impl::~Impl\28\29.1 11495:GrSkSLFP::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 11496:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::toLinearSrgb\28std::__2::basic_string\2c\20std::__2::allocator>\29 11497:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::sampleShader\28int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 11498:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::sampleColorFilter\28int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 11499:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::sampleBlender\28int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 11500:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::getMangledName\28char\20const*\29 11501:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::fromLinearSrgb\28std::__2::basic_string\2c\20std::__2::allocator>\29 11502:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::defineFunction\28char\20const*\2c\20char\20const*\2c\20bool\29 11503:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::declareUniform\28SkSL::VarDeclaration\20const*\29 11504:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29::FPCallbacks::declareFunction\28char\20const*\29 11505:GrSkSLFP::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11506:GrSimpleMesh*\20SkArenaAlloc::allocUninitializedArray\28unsigned\20long\29::'lambda'\28char*\29::__invoke\28char*\29 11507:GrRingBuffer::FinishSubmit\28void*\29 11508:GrResourceCache::CompareTimestamp\28GrGpuResource*\20const&\2c\20GrGpuResource*\20const&\29 11509:GrRenderTask::disown\28GrDrawingManager*\29 11510:GrRecordingContext::~GrRecordingContext\28\29.1 11511:GrRRectShadowGeoProc::~GrRRectShadowGeoProc\28\29.1 11512:GrRRectShadowGeoProc::onTextureSampler\28int\29\20const 11513:GrRRectShadowGeoProc::name\28\29\20const 11514:GrRRectShadowGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11515:GrRRectShadowGeoProc::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11516:GrQuadEffect::name\28\29\20const 11517:GrQuadEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11518:GrQuadEffect::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11519:GrQuadEffect::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 11520:GrQuadEffect::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11521:GrPorterDuffXPFactory::makeXferProcessor\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 11522:GrPorterDuffXPFactory::analysisProperties\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\20const&\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 11523:GrPerlinNoise2Effect::~GrPerlinNoise2Effect\28\29.1 11524:GrPerlinNoise2Effect::onMakeProgramImpl\28\29\20const 11525:GrPerlinNoise2Effect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11526:GrPerlinNoise2Effect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11527:GrPerlinNoise2Effect::name\28\29\20const 11528:GrPerlinNoise2Effect::clone\28\29\20const 11529:GrPerlinNoise2Effect::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 11530:GrPerlinNoise2Effect::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11531:GrPathTessellationShader::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 11532:GrPathTessellationShader::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11533:GrOpsRenderPass::onExecuteDrawable\28std::__2::unique_ptr>\29 11534:GrOpsRenderPass::onDrawIndirect\28GrBuffer\20const*\2c\20unsigned\20long\2c\20int\29 11535:GrOpsRenderPass::onDrawIndexedIndirect\28GrBuffer\20const*\2c\20unsigned\20long\2c\20int\29 11536:GrOpFlushState::writeView\28\29\20const 11537:GrOpFlushState::usesMSAASurface\28\29\20const 11538:GrOpFlushState::tokenTracker\28\29 11539:GrOpFlushState::threadSafeCache\28\29\20const 11540:GrOpFlushState::strikeCache\28\29\20const 11541:GrOpFlushState::sampledProxyArray\28\29 11542:GrOpFlushState::rtProxy\28\29\20const 11543:GrOpFlushState::resourceProvider\28\29\20const 11544:GrOpFlushState::renderPassBarriers\28\29\20const 11545:GrOpFlushState::putBackVertices\28int\2c\20unsigned\20long\29 11546:GrOpFlushState::putBackIndirectDraws\28int\29 11547:GrOpFlushState::putBackIndexedIndirectDraws\28int\29 11548:GrOpFlushState::makeVertexSpace\28unsigned\20long\2c\20int\2c\20sk_sp*\2c\20int*\29 11549:GrOpFlushState::makeVertexSpaceAtLeast\28unsigned\20long\2c\20int\2c\20int\2c\20sk_sp*\2c\20int*\2c\20int*\29 11550:GrOpFlushState::makeIndexSpace\28int\2c\20sk_sp*\2c\20int*\29 11551:GrOpFlushState::makeIndexSpaceAtLeast\28int\2c\20int\2c\20sk_sp*\2c\20int*\2c\20int*\29 11552:GrOpFlushState::makeDrawIndirectSpace\28int\2c\20sk_sp*\2c\20unsigned\20long*\29 11553:GrOpFlushState::makeDrawIndexedIndirectSpace\28int\2c\20sk_sp*\2c\20unsigned\20long*\29 11554:GrOpFlushState::dstProxyView\28\29\20const 11555:GrOpFlushState::colorLoadOp\28\29\20const 11556:GrOpFlushState::caps\28\29\20const 11557:GrOpFlushState::atlasManager\28\29\20const 11558:GrOpFlushState::appliedClip\28\29\20const 11559:GrOpFlushState::addInlineUpload\28std::__2::function&\29>&&\29 11560:GrOnFlushCallbackObject::postFlush\28skgpu::AtlasToken\29 11561:GrModulateAtlasCoverageEffect::onMakeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 11562:GrModulateAtlasCoverageEffect::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11563:GrModulateAtlasCoverageEffect::onMakeProgramImpl\28\29\20const 11564:GrModulateAtlasCoverageEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11565:GrModulateAtlasCoverageEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11566:GrModulateAtlasCoverageEffect::name\28\29\20const 11567:GrModulateAtlasCoverageEffect::clone\28\29\20const 11568:GrMeshDrawOp::onPrepare\28GrOpFlushState*\29 11569:GrMeshDrawOp::onPrePrepare\28GrRecordingContext*\2c\20GrSurfaceProxyView\20const&\2c\20GrAppliedClip*\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 11570:GrMatrixEffect::onMakeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 11571:GrMatrixEffect::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11572:GrMatrixEffect::onMakeProgramImpl\28\29\20const 11573:GrMatrixEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11574:GrMatrixEffect::name\28\29\20const 11575:GrMatrixEffect::clone\28\29\20const 11576:GrMakeUniqueKeyInvalidationListener\28skgpu::UniqueKey*\2c\20unsigned\20int\29::Listener::~Listener\28\29.1 11577:GrMakeUniqueKeyInvalidationListener\28skgpu::UniqueKey*\2c\20unsigned\20int\29::$_0::__invoke\28void\20const*\2c\20void*\29 11578:GrImageContext::~GrImageContext\28\29 11579:GrHardClip::apply\28GrRecordingContext*\2c\20skgpu::ganesh::SurfaceDrawContext*\2c\20GrDrawOp*\2c\20GrAAType\2c\20GrAppliedClip*\2c\20SkRect*\29\20const 11580:GrGpuResource::dumpMemoryStatistics\28SkTraceMemoryDump*\29\20const 11581:GrGpuBuffer::unref\28\29\20const 11582:GrGpuBuffer::getResourceType\28\29\20const 11583:GrGpuBuffer::computeScratchKey\28skgpu::ScratchKey*\29\20const 11584:GrGeometryProcessor::onTextureSampler\28int\29\20const 11585:GrGLVaryingHandler::~GrGLVaryingHandler\28\29 11586:GrGLUniformHandler::~GrGLUniformHandler\28\29.1 11587:GrGLUniformHandler::samplerVariable\28GrResourceHandle\29\20const 11588:GrGLUniformHandler::samplerSwizzle\28GrResourceHandle\29\20const 11589:GrGLUniformHandler::internalAddUniformArray\28GrProcessor\20const*\2c\20unsigned\20int\2c\20SkSLType\2c\20char\20const*\2c\20bool\2c\20int\2c\20char\20const**\29 11590:GrGLUniformHandler::getUniformCStr\28GrResourceHandle\29\20const 11591:GrGLUniformHandler::appendUniformDecls\28GrShaderFlags\2c\20SkString*\29\20const 11592:GrGLUniformHandler::addSampler\28GrBackendFormat\20const&\2c\20GrSamplerState\2c\20skgpu::Swizzle\20const&\2c\20char\20const*\2c\20GrShaderCaps\20const*\29 11593:GrGLTextureRenderTarget::onSetLabel\28\29 11594:GrGLTextureRenderTarget::backendFormat\28\29\20const 11595:GrGLTexture::textureParamsModified\28\29 11596:GrGLTexture::onStealBackendTexture\28GrBackendTexture*\2c\20std::__2::function*\29 11597:GrGLTexture::getBackendTexture\28\29\20const 11598:GrGLSemaphore::~GrGLSemaphore\28\29.1 11599:GrGLSemaphore::setIsOwned\28\29 11600:GrGLSemaphore::backendSemaphore\28\29\20const 11601:GrGLSLVertexBuilder::~GrGLSLVertexBuilder\28\29 11602:GrGLSLVertexBuilder::onFinalize\28\29 11603:GrGLSLUniformHandler::inputSamplerSwizzle\28GrResourceHandle\29\20const 11604:GrGLSLFragmentShaderBuilder::~GrGLSLFragmentShaderBuilder\28\29 11605:GrGLSLFragmentShaderBuilder::hasSecondaryOutput\28\29\20const 11606:GrGLSLFragmentShaderBuilder::forceHighPrecision\28\29 11607:GrGLRenderTarget::getBackendRenderTarget\28\29\20const 11608:GrGLRenderTarget::completeStencilAttachment\28GrAttachment*\2c\20bool\29 11609:GrGLRenderTarget::canAttemptStencilAttachment\28bool\29\20const 11610:GrGLRenderTarget::alwaysClearStencil\28\29\20const 11611:GrGLProgramDataManager::~GrGLProgramDataManager\28\29.1 11612:GrGLProgramDataManager::setMatrix4fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 11613:GrGLProgramDataManager::setMatrix4f\28GrResourceHandle\2c\20float\20const*\29\20const 11614:GrGLProgramDataManager::setMatrix3fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 11615:GrGLProgramDataManager::setMatrix3f\28GrResourceHandle\2c\20float\20const*\29\20const 11616:GrGLProgramDataManager::setMatrix2fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 11617:GrGLProgramDataManager::setMatrix2f\28GrResourceHandle\2c\20float\20const*\29\20const 11618:GrGLProgramDataManager::set4iv\28GrResourceHandle\2c\20int\2c\20int\20const*\29\20const 11619:GrGLProgramDataManager::set4i\28GrResourceHandle\2c\20int\2c\20int\2c\20int\2c\20int\29\20const 11620:GrGLProgramDataManager::set4f\28GrResourceHandle\2c\20float\2c\20float\2c\20float\2c\20float\29\20const 11621:GrGLProgramDataManager::set3iv\28GrResourceHandle\2c\20int\2c\20int\20const*\29\20const 11622:GrGLProgramDataManager::set3i\28GrResourceHandle\2c\20int\2c\20int\2c\20int\29\20const 11623:GrGLProgramDataManager::set3fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 11624:GrGLProgramDataManager::set3f\28GrResourceHandle\2c\20float\2c\20float\2c\20float\29\20const 11625:GrGLProgramDataManager::set2iv\28GrResourceHandle\2c\20int\2c\20int\20const*\29\20const 11626:GrGLProgramDataManager::set2i\28GrResourceHandle\2c\20int\2c\20int\29\20const 11627:GrGLProgramDataManager::set2f\28GrResourceHandle\2c\20float\2c\20float\29\20const 11628:GrGLProgramDataManager::set1iv\28GrResourceHandle\2c\20int\2c\20int\20const*\29\20const 11629:GrGLProgramDataManager::set1i\28GrResourceHandle\2c\20int\29\20const 11630:GrGLProgramDataManager::set1fv\28GrResourceHandle\2c\20int\2c\20float\20const*\29\20const 11631:GrGLProgramDataManager::set1f\28GrResourceHandle\2c\20float\29\20const 11632:GrGLProgramBuilder::~GrGLProgramBuilder\28\29.1 11633:GrGLProgramBuilder::varyingHandler\28\29 11634:GrGLProgramBuilder::caps\28\29\20const 11635:GrGLProgram::~GrGLProgram\28\29.1 11636:GrGLOpsRenderPass::~GrGLOpsRenderPass\28\29 11637:GrGLOpsRenderPass::onSetScissorRect\28SkIRect\20const&\29 11638:GrGLOpsRenderPass::onEnd\28\29 11639:GrGLOpsRenderPass::onDraw\28int\2c\20int\29 11640:GrGLOpsRenderPass::onDrawInstanced\28int\2c\20int\2c\20int\2c\20int\29 11641:GrGLOpsRenderPass::onDrawIndirect\28GrBuffer\20const*\2c\20unsigned\20long\2c\20int\29 11642:GrGLOpsRenderPass::onDrawIndexed\28int\2c\20int\2c\20unsigned\20short\2c\20unsigned\20short\2c\20int\29 11643:GrGLOpsRenderPass::onDrawIndexedInstanced\28int\2c\20int\2c\20int\2c\20int\2c\20int\29 11644:GrGLOpsRenderPass::onDrawIndexedIndirect\28GrBuffer\20const*\2c\20unsigned\20long\2c\20int\29 11645:GrGLOpsRenderPass::onClear\28GrScissorState\20const&\2c\20std::__2::array\29 11646:GrGLOpsRenderPass::onClearStencilClip\28GrScissorState\20const&\2c\20bool\29 11647:GrGLOpsRenderPass::onBindTextures\28GrGeometryProcessor\20const&\2c\20GrSurfaceProxy\20const*\20const*\2c\20GrPipeline\20const&\29 11648:GrGLOpsRenderPass::onBindPipeline\28GrProgramInfo\20const&\2c\20SkRect\20const&\29 11649:GrGLOpsRenderPass::onBindBuffers\28sk_sp\2c\20sk_sp\2c\20sk_sp\2c\20GrPrimitiveRestart\29 11650:GrGLOpsRenderPass::onBegin\28\29 11651:GrGLOpsRenderPass::inlineUpload\28GrOpFlushState*\2c\20std::__2::function&\29>&\29 11652:GrGLInterface::~GrGLInterface\28\29.1 11653:GrGLGpu::~GrGLGpu\28\29.1 11654:GrGLGpu::xferBarrier\28GrRenderTarget*\2c\20GrXferBarrierType\29 11655:GrGLGpu::wrapBackendSemaphore\28GrBackendSemaphore\20const&\2c\20GrSemaphoreWrapType\2c\20GrWrapOwnership\29 11656:GrGLGpu::willExecute\28\29 11657:GrGLGpu::submit\28GrOpsRenderPass*\29 11658:GrGLGpu::stagingBufferManager\28\29 11659:GrGLGpu::refPipelineBuilder\28\29 11660:GrGLGpu::prepareTextureForCrossContextUsage\28GrTexture*\29 11661:GrGLGpu::precompileShader\28SkData\20const&\2c\20SkData\20const&\29 11662:GrGLGpu::pipelineBuilder\28\29 11663:GrGLGpu::onWritePixels\28GrSurface*\2c\20SkIRect\2c\20GrColorType\2c\20GrColorType\2c\20GrMipLevel\20const*\2c\20int\2c\20bool\29 11664:GrGLGpu::onWrapRenderableBackendTexture\28GrBackendTexture\20const&\2c\20int\2c\20GrWrapOwnership\2c\20GrWrapCacheable\29 11665:GrGLGpu::onWrapCompressedBackendTexture\28GrBackendTexture\20const&\2c\20GrWrapOwnership\2c\20GrWrapCacheable\29 11666:GrGLGpu::onWrapBackendTexture\28GrBackendTexture\20const&\2c\20GrWrapOwnership\2c\20GrWrapCacheable\2c\20GrIOType\29 11667:GrGLGpu::onWrapBackendRenderTarget\28GrBackendRenderTarget\20const&\29 11668:GrGLGpu::onUpdateCompressedBackendTexture\28GrBackendTexture\20const&\2c\20sk_sp\2c\20void\20const*\2c\20unsigned\20long\29 11669:GrGLGpu::onTransferPixelsTo\28GrTexture*\2c\20SkIRect\2c\20GrColorType\2c\20GrColorType\2c\20sk_sp\2c\20unsigned\20long\2c\20unsigned\20long\29 11670:GrGLGpu::onTransferPixelsFrom\28GrSurface*\2c\20SkIRect\2c\20GrColorType\2c\20GrColorType\2c\20sk_sp\2c\20unsigned\20long\29 11671:GrGLGpu::onTransferFromBufferToBuffer\28sk_sp\2c\20unsigned\20long\2c\20sk_sp\2c\20unsigned\20long\2c\20unsigned\20long\29 11672:GrGLGpu::onSubmitToGpu\28GrSyncCpu\29 11673:GrGLGpu::onResolveRenderTarget\28GrRenderTarget*\2c\20SkIRect\20const&\29 11674:GrGLGpu::onResetTextureBindings\28\29 11675:GrGLGpu::onResetContext\28unsigned\20int\29 11676:GrGLGpu::onRegenerateMipMapLevels\28GrTexture*\29 11677:GrGLGpu::onReadPixels\28GrSurface*\2c\20SkIRect\2c\20GrColorType\2c\20GrColorType\2c\20void*\2c\20unsigned\20long\29 11678:GrGLGpu::onGetOpsRenderPass\28GrRenderTarget*\2c\20bool\2c\20GrAttachment*\2c\20GrSurfaceOrigin\2c\20SkIRect\20const&\2c\20GrOpsRenderPass::LoadAndStoreInfo\20const&\2c\20GrOpsRenderPass::StencilLoadAndStoreInfo\20const&\2c\20skia_private::TArray\20const&\2c\20GrXferBarrierFlags\29 11679:GrGLGpu::onDumpJSON\28SkJSONWriter*\29\20const 11680:GrGLGpu::onCreateTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20skgpu::Renderable\2c\20int\2c\20skgpu::Budgeted\2c\20skgpu::Protected\2c\20int\2c\20unsigned\20int\2c\20std::__2::basic_string_view>\29 11681:GrGLGpu::onCreateCompressedTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20skgpu::Budgeted\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20void\20const*\2c\20unsigned\20long\29 11682:GrGLGpu::onCreateCompressedBackendTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\29 11683:GrGLGpu::onCreateBuffer\28unsigned\20long\2c\20GrGpuBufferType\2c\20GrAccessPattern\29 11684:GrGLGpu::onCreateBackendTexture\28SkISize\2c\20GrBackendFormat\20const&\2c\20skgpu::Renderable\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20std::__2::basic_string_view>\29 11685:GrGLGpu::onCopySurface\28GrSurface*\2c\20SkIRect\20const&\2c\20GrSurface*\2c\20SkIRect\20const&\2c\20SkFilterMode\29 11686:GrGLGpu::onClearBackendTexture\28GrBackendTexture\20const&\2c\20sk_sp\2c\20std::__2::array\29 11687:GrGLGpu::makeStencilAttachment\28GrBackendFormat\20const&\2c\20SkISize\2c\20int\29 11688:GrGLGpu::makeSemaphore\28bool\29 11689:GrGLGpu::makeMSAAAttachment\28SkISize\2c\20GrBackendFormat\20const&\2c\20int\2c\20skgpu::Protected\2c\20GrMemoryless\29 11690:GrGLGpu::getPreferredStencilFormat\28GrBackendFormat\20const&\29 11691:GrGLGpu::finishOutstandingGpuWork\28\29 11692:GrGLGpu::disconnect\28GrGpu::DisconnectType\29 11693:GrGLGpu::deleteBackendTexture\28GrBackendTexture\20const&\29 11694:GrGLGpu::compile\28GrProgramDesc\20const&\2c\20GrProgramInfo\20const&\29 11695:GrGLGpu::checkFinishProcs\28\29 11696:GrGLGpu::addFinishedProc\28void\20\28*\29\28void*\29\2c\20void*\29 11697:GrGLGpu::ProgramCache::~ProgramCache\28\29.1 11698:GrGLFunction::GrGLFunction\28void\20\28*\29\28unsigned\20int\2c\20unsigned\20int\2c\20float\29\29::'lambda'\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20float\29::__invoke\28void\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20float\29 11699:GrGLFunction::GrGLFunction\28void\20\28*\29\28int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\29\29::'lambda'\28void\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\29::__invoke\28void\20const*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 11700:GrGLFunction::GrGLFunction\28void\20\28*\29\28int\2c\20float\2c\20float\2c\20float\2c\20float\29\29::'lambda'\28void\20const*\2c\20int\2c\20float\2c\20float\2c\20float\2c\20float\29::__invoke\28void\20const*\2c\20int\2c\20float\2c\20float\2c\20float\2c\20float\29 11701:GrGLFunction::GrGLFunction\28void\20\28*\29\28int\2c\20float\2c\20float\2c\20float\29\29::'lambda'\28void\20const*\2c\20int\2c\20float\2c\20float\2c\20float\29::__invoke\28void\20const*\2c\20int\2c\20float\2c\20float\2c\20float\29 11702:GrGLFunction::GrGLFunction\28void\20\28*\29\28int\2c\20float\2c\20float\29\29::'lambda'\28void\20const*\2c\20int\2c\20float\2c\20float\29::__invoke\28void\20const*\2c\20int\2c\20float\2c\20float\29 11703:GrGLFunction::GrGLFunction\28void\20\28*\29\28float\2c\20float\2c\20float\2c\20float\29\29::'lambda'\28void\20const*\2c\20float\2c\20float\2c\20float\2c\20float\29::__invoke\28void\20const*\2c\20float\2c\20float\2c\20float\2c\20float\29 11704:GrGLFunction::GrGLFunction\28void\20\28*\29\28float\29\29::'lambda'\28void\20const*\2c\20float\29::__invoke\28void\20const*\2c\20float\29 11705:GrGLFunction::GrGLFunction\28void\20\28*\29\28__GLsync*\2c\20unsigned\20int\2c\20unsigned\20long\20long\29\29::'lambda'\28void\20const*\2c\20__GLsync*\2c\20unsigned\20int\2c\20unsigned\20long\20long\29::__invoke\28void\20const*\2c\20__GLsync*\2c\20unsigned\20int\2c\20unsigned\20long\20long\29 11706:GrGLFunction::GrGLFunction\28void\20\28*\29\28\29\29::'lambda'\28void\20const*\29::__invoke\28void\20const*\29 11707:GrGLFunction::GrGLFunction\28unsigned\20int\20\28*\29\28__GLsync*\2c\20unsigned\20int\2c\20unsigned\20long\20long\29\29::'lambda'\28void\20const*\2c\20__GLsync*\2c\20unsigned\20int\2c\20unsigned\20long\20long\29::__invoke\28void\20const*\2c\20__GLsync*\2c\20unsigned\20int\2c\20unsigned\20long\20long\29 11708:GrGLFunction::GrGLFunction\28unsigned\20int\20\28*\29\28\29\29::'lambda'\28void\20const*\29::__invoke\28void\20const*\29 11709:GrGLContext::~GrGLContext\28\29 11710:GrGLCaps::~GrGLCaps\28\29.1 11711:GrGLCaps::surfaceSupportsReadPixels\28GrSurface\20const*\29\20const 11712:GrGLCaps::supportedWritePixelsColorType\28GrColorType\2c\20GrBackendFormat\20const&\2c\20GrColorType\29\20const 11713:GrGLCaps::onSurfaceSupportsWritePixels\28GrSurface\20const*\29\20const 11714:GrGLCaps::onSupportsDynamicMSAA\28GrRenderTargetProxy\20const*\29\20const 11715:GrGLCaps::onSupportedReadPixelsColorType\28GrColorType\2c\20GrBackendFormat\20const&\2c\20GrColorType\29\20const 11716:GrGLCaps::onIsWindowRectanglesSupportedForRT\28GrBackendRenderTarget\20const&\29\20const 11717:GrGLCaps::onGetReadSwizzle\28GrBackendFormat\20const&\2c\20GrColorType\29\20const 11718:GrGLCaps::onGetDstSampleFlagsForProxy\28GrRenderTargetProxy\20const*\29\20const 11719:GrGLCaps::onGetDefaultBackendFormat\28GrColorType\29\20const 11720:GrGLCaps::onDumpJSON\28SkJSONWriter*\29\20const 11721:GrGLCaps::onCanCopySurface\28GrSurfaceProxy\20const*\2c\20SkIRect\20const&\2c\20GrSurfaceProxy\20const*\2c\20SkIRect\20const&\29\20const 11722:GrGLCaps::onAreColorTypeAndFormatCompatible\28GrColorType\2c\20GrBackendFormat\20const&\29\20const 11723:GrGLCaps::onApplyOptionsOverrides\28GrContextOptions\20const&\29 11724:GrGLCaps::maxRenderTargetSampleCount\28GrBackendFormat\20const&\29\20const 11725:GrGLCaps::makeDesc\28GrRenderTarget*\2c\20GrProgramInfo\20const&\2c\20GrCaps::ProgramDescOverrideFlags\29\20const 11726:GrGLCaps::isFormatTexturable\28GrBackendFormat\20const&\2c\20GrTextureType\29\20const 11727:GrGLCaps::isFormatSRGB\28GrBackendFormat\20const&\29\20const 11728:GrGLCaps::isFormatRenderable\28GrBackendFormat\20const&\2c\20int\29\20const 11729:GrGLCaps::isFormatCopyable\28GrBackendFormat\20const&\29\20const 11730:GrGLCaps::isFormatAsColorTypeRenderable\28GrColorType\2c\20GrBackendFormat\20const&\2c\20int\29\20const 11731:GrGLCaps::getWriteSwizzle\28GrBackendFormat\20const&\2c\20GrColorType\29\20const 11732:GrGLCaps::getRenderTargetSampleCount\28int\2c\20GrBackendFormat\20const&\29\20const 11733:GrGLCaps::getDstCopyRestrictions\28GrRenderTargetProxy\20const*\2c\20GrColorType\29\20const 11734:GrGLCaps::getBackendFormatFromCompressionType\28SkTextureCompressionType\29\20const 11735:GrGLCaps::computeFormatKey\28GrBackendFormat\20const&\29\20const 11736:GrGLBuffer::setMemoryBacking\28SkTraceMemoryDump*\2c\20SkString\20const&\29\20const 11737:GrGLBuffer::onUpdateData\28void\20const*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20bool\29 11738:GrGLBuffer::onUnmap\28GrGpuBuffer::MapType\29 11739:GrGLBuffer::onSetLabel\28\29 11740:GrGLBuffer::onRelease\28\29 11741:GrGLBuffer::onMap\28GrGpuBuffer::MapType\29 11742:GrGLBuffer::onClearToZero\28\29 11743:GrGLBuffer::onAbandon\28\29 11744:GrGLBackendTextureData::~GrGLBackendTextureData\28\29.1 11745:GrGLBackendTextureData::~GrGLBackendTextureData\28\29 11746:GrGLBackendTextureData::isSameTexture\28GrBackendTextureData\20const*\29\20const 11747:GrGLBackendTextureData::getBackendFormat\28\29\20const 11748:GrGLBackendTextureData::equal\28GrBackendTextureData\20const*\29\20const 11749:GrGLBackendTextureData::copyTo\28SkAnySubclass&\29\20const 11750:GrGLBackendRenderTargetData::isProtected\28\29\20const 11751:GrGLBackendRenderTargetData::getBackendFormat\28\29\20const 11752:GrGLBackendRenderTargetData::equal\28GrBackendRenderTargetData\20const*\29\20const 11753:GrGLBackendRenderTargetData::copyTo\28SkAnySubclass&\29\20const 11754:GrGLBackendFormatData::toString\28\29\20const 11755:GrGLBackendFormatData::stencilBits\28\29\20const 11756:GrGLBackendFormatData::equal\28GrBackendFormatData\20const*\29\20const 11757:GrGLBackendFormatData::desc\28\29\20const 11758:GrGLBackendFormatData::copyTo\28SkAnySubclass&\29\20const 11759:GrGLBackendFormatData::compressionType\28\29\20const 11760:GrGLBackendFormatData::channelMask\28\29\20const 11761:GrGLBackendFormatData::bytesPerBlock\28\29\20const 11762:GrGLAttachment::~GrGLAttachment\28\29 11763:GrGLAttachment::setMemoryBacking\28SkTraceMemoryDump*\2c\20SkString\20const&\29\20const 11764:GrGLAttachment::onSetLabel\28\29 11765:GrGLAttachment::onRelease\28\29 11766:GrGLAttachment::onAbandon\28\29 11767:GrGLAttachment::backendFormat\28\29\20const 11768:GrFragmentProcessor::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 11769:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11770:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::onMakeProgramImpl\28\29\20const 11771:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11772:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11773:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::name\28\29\20const 11774:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 11775:GrFragmentProcessor::SwizzleOutput\28std::__2::unique_ptr>\2c\20skgpu::Swizzle\20const&\29::SwizzleFragmentProcessor::clone\28\29\20const 11776:GrFragmentProcessor::SurfaceColor\28\29::SurfaceColorProcessor::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11777:GrFragmentProcessor::SurfaceColor\28\29::SurfaceColorProcessor::onMakeProgramImpl\28\29\20const 11778:GrFragmentProcessor::SurfaceColor\28\29::SurfaceColorProcessor::name\28\29\20const 11779:GrFragmentProcessor::SurfaceColor\28\29::SurfaceColorProcessor::clone\28\29\20const 11780:GrFragmentProcessor::HighPrecision\28std::__2::unique_ptr>\29::HighPrecisionFragmentProcessor::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11781:GrFragmentProcessor::HighPrecision\28std::__2::unique_ptr>\29::HighPrecisionFragmentProcessor::onMakeProgramImpl\28\29\20const 11782:GrFragmentProcessor::HighPrecision\28std::__2::unique_ptr>\29::HighPrecisionFragmentProcessor::name\28\29\20const 11783:GrFragmentProcessor::HighPrecision\28std::__2::unique_ptr>\29::HighPrecisionFragmentProcessor::clone\28\29\20const 11784:GrFragmentProcessor::DeviceSpace\28std::__2::unique_ptr>\29::DeviceSpace::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11785:GrFragmentProcessor::DeviceSpace\28std::__2::unique_ptr>\29::DeviceSpace::onMakeProgramImpl\28\29\20const 11786:GrFragmentProcessor::DeviceSpace\28std::__2::unique_ptr>\29::DeviceSpace::name\28\29\20const 11787:GrFragmentProcessor::DeviceSpace\28std::__2::unique_ptr>\29::DeviceSpace::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 11788:GrFragmentProcessor::DeviceSpace\28std::__2::unique_ptr>\29::DeviceSpace::clone\28\29\20const 11789:GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29::ComposeProcessor::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11790:GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29::ComposeProcessor::onMakeProgramImpl\28\29\20const 11791:GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29::ComposeProcessor::name\28\29\20const 11792:GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29::ComposeProcessor::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 11793:GrFragmentProcessor::Compose\28std::__2::unique_ptr>\2c\20std::__2::unique_ptr>\29::ComposeProcessor::clone\28\29\20const 11794:GrFixedClip::~GrFixedClip\28\29.1 11795:GrFixedClip::~GrFixedClip\28\29 11796:GrFixedClip::getConservativeBounds\28\29\20const 11797:GrExternalTextureGenerator::onGenerateTexture\28GrRecordingContext*\2c\20SkImageInfo\20const&\2c\20skgpu::Mipmapped\2c\20GrImageTexGenPolicy\29 11798:GrDynamicAtlas::~GrDynamicAtlas\28\29.1 11799:GrDrawOp::usesStencil\28\29\20const 11800:GrDrawOp::usesMSAA\28\29\20const 11801:GrDrawOp::fixedFunctionFlags\28\29\20const 11802:GrDistanceFieldPathGeoProc::~GrDistanceFieldPathGeoProc\28\29.1 11803:GrDistanceFieldPathGeoProc::onTextureSampler\28int\29\20const 11804:GrDistanceFieldPathGeoProc::name\28\29\20const 11805:GrDistanceFieldPathGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11806:GrDistanceFieldPathGeoProc::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11807:GrDistanceFieldPathGeoProc::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 11808:GrDistanceFieldPathGeoProc::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11809:GrDistanceFieldLCDTextGeoProc::~GrDistanceFieldLCDTextGeoProc\28\29.1 11810:GrDistanceFieldLCDTextGeoProc::name\28\29\20const 11811:GrDistanceFieldLCDTextGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11812:GrDistanceFieldLCDTextGeoProc::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11813:GrDistanceFieldLCDTextGeoProc::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 11814:GrDistanceFieldLCDTextGeoProc::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11815:GrDistanceFieldA8TextGeoProc::~GrDistanceFieldA8TextGeoProc\28\29.1 11816:GrDistanceFieldA8TextGeoProc::name\28\29\20const 11817:GrDistanceFieldA8TextGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11818:GrDistanceFieldA8TextGeoProc::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11819:GrDistanceFieldA8TextGeoProc::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 11820:GrDistanceFieldA8TextGeoProc::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11821:GrDisableColorXPFactory::makeXferProcessor\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 11822:GrDisableColorXPFactory::analysisProperties\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\20const&\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 11823:GrDirectContext::~GrDirectContext\28\29.1 11824:GrDirectContext::init\28\29 11825:GrDirectContext::abandonContext\28\29 11826:GrDeferredProxyUploader::~GrDeferredProxyUploader\28\29.1 11827:GrCpuVertexAllocator::~GrCpuVertexAllocator\28\29.1 11828:GrCpuVertexAllocator::unlock\28int\29 11829:GrCpuVertexAllocator::lock\28unsigned\20long\2c\20int\29 11830:GrCpuBuffer::unref\28\29\20const 11831:GrCpuBuffer::ref\28\29\20const 11832:GrCoverageSetOpXPFactory::makeXferProcessor\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 11833:GrCoverageSetOpXPFactory::analysisProperties\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\20const&\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 11834:GrCopyRenderTask::~GrCopyRenderTask\28\29.1 11835:GrCopyRenderTask::onMakeSkippable\28\29 11836:GrCopyRenderTask::onMakeClosed\28GrRecordingContext*\2c\20SkIRect*\29 11837:GrCopyRenderTask::onExecute\28GrOpFlushState*\29 11838:GrCopyRenderTask::gatherProxyIntervals\28GrResourceAllocator*\29\20const 11839:GrConvexPolyEffect::~GrConvexPolyEffect\28\29 11840:GrConvexPolyEffect::onMakeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 11841:GrConvexPolyEffect::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11842:GrConvexPolyEffect::onMakeProgramImpl\28\29\20const 11843:GrConvexPolyEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11844:GrConvexPolyEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11845:GrConvexPolyEffect::name\28\29\20const 11846:GrConvexPolyEffect::clone\28\29\20const 11847:GrContextThreadSafeProxy::~GrContextThreadSafeProxy\28\29.1 11848:GrContextThreadSafeProxy::isValidCharacterizationForVulkan\28sk_sp\2c\20bool\2c\20skgpu::Mipmapped\2c\20skgpu::Protected\2c\20bool\2c\20bool\29 11849:GrConicEffect::name\28\29\20const 11850:GrConicEffect::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11851:GrConicEffect::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11852:GrConicEffect::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 11853:GrConicEffect::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11854:GrColorSpaceXformEffect::~GrColorSpaceXformEffect\28\29.1 11855:GrColorSpaceXformEffect::onMakeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 11856:GrColorSpaceXformEffect::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11857:GrColorSpaceXformEffect::onMakeProgramImpl\28\29\20const 11858:GrColorSpaceXformEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11859:GrColorSpaceXformEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11860:GrColorSpaceXformEffect::name\28\29\20const 11861:GrColorSpaceXformEffect::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 11862:GrColorSpaceXformEffect::clone\28\29\20const 11863:GrCaps::getDstCopyRestrictions\28GrRenderTargetProxy\20const*\2c\20GrColorType\29\20const 11864:GrBitmapTextGeoProc::~GrBitmapTextGeoProc\28\29.1 11865:GrBitmapTextGeoProc::onTextureSampler\28int\29\20const 11866:GrBitmapTextGeoProc::name\28\29\20const 11867:GrBitmapTextGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11868:GrBitmapTextGeoProc::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11869:GrBitmapTextGeoProc::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 11870:GrBitmapTextGeoProc::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11871:GrBicubicEffect::onMakeProgramImpl\28\29\20const 11872:GrBicubicEffect::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11873:GrBicubicEffect::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11874:GrBicubicEffect::name\28\29\20const 11875:GrBicubicEffect::clone\28\29\20const 11876:GrBicubicEffect::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 11877:GrBicubicEffect::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11878:GrAttachment::onGpuMemorySize\28\29\20const 11879:GrAttachment::getResourceType\28\29\20const 11880:GrAttachment::computeScratchKey\28skgpu::ScratchKey*\29\20const 11881:GrAtlasManager::~GrAtlasManager\28\29.1 11882:GrAtlasManager::postFlush\28skgpu::AtlasToken\29 11883:GrAATriangulator::tessellate\28GrTriangulator::VertexList\20const&\2c\20GrTriangulator::Comparator\20const&\29 11884:FontMgrRunIterator::~FontMgrRunIterator\28\29.1 11885:FontMgrRunIterator::consume\28\29 11886:EllipticalRRectOp::onPrepareDraws\28GrMeshDrawTarget*\29 11887:EllipticalRRectOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 11888:EllipticalRRectOp::name\28\29\20const 11889:EllipticalRRectOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 11890:EllipseOp::onPrepareDraws\28GrMeshDrawTarget*\29 11891:EllipseOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 11892:EllipseOp::name\28\29\20const 11893:EllipseOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 11894:EllipseGeometryProcessor::name\28\29\20const 11895:EllipseGeometryProcessor::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11896:EllipseGeometryProcessor::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11897:EllipseGeometryProcessor::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11898:Dual_Project 11899:DisableColorXP::onGetBlendInfo\28skgpu::BlendInfo*\29\20const 11900:DisableColorXP::name\28\29\20const 11901:DisableColorXP::makeProgramImpl\28\29\20const::Impl::emitOutputsForBlendState\28GrXferProcessor::ProgramImpl::EmitArgs\20const&\29 11902:DisableColorXP::makeProgramImpl\28\29\20const 11903:Direct_Move_Y 11904:Direct_Move_X 11905:Direct_Move_Orig_Y 11906:Direct_Move_Orig_X 11907:Direct_Move_Orig 11908:Direct_Move 11909:DefaultGeoProc::name\28\29\20const 11910:DefaultGeoProc::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11911:DefaultGeoProc::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11912:DefaultGeoProc::Impl::setData\28GrGLSLProgramDataManager\20const&\2c\20GrShaderCaps\20const&\2c\20GrGeometryProcessor\20const&\29 11913:DefaultGeoProc::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11914:DIEllipseOp::~DIEllipseOp\28\29.1 11915:DIEllipseOp::visitProxies\28std::__2::function\20const&\29\20const 11916:DIEllipseOp::onPrepareDraws\28GrMeshDrawTarget*\29 11917:DIEllipseOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 11918:DIEllipseOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 11919:DIEllipseOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 11920:DIEllipseOp::name\28\29\20const 11921:DIEllipseOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 11922:DIEllipseGeometryProcessor::name\28\29\20const 11923:DIEllipseGeometryProcessor::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11924:DIEllipseGeometryProcessor::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11925:DIEllipseGeometryProcessor::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11926:CustomXPFactory::makeXferProcessor\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 11927:CustomXPFactory::analysisProperties\28GrProcessorAnalysisColor\20const&\2c\20GrProcessorAnalysisCoverage\20const&\2c\20GrCaps\20const&\2c\20GrClampType\29\20const 11928:CustomXP::xferBarrierType\28GrCaps\20const&\29\20const 11929:CustomXP::onGetBlendInfo\28skgpu::BlendInfo*\29\20const 11930:CustomXP::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11931:CustomXP::name\28\29\20const 11932:CustomXP::makeProgramImpl\28\29\20const::Impl::emitOutputsForBlendState\28GrXferProcessor::ProgramImpl::EmitArgs\20const&\29 11933:CustomXP::makeProgramImpl\28\29\20const 11934:Current_Ppem_Stretched 11935:Current_Ppem 11936:Cr_z_zcalloc 11937:CoverageSetOpXP::onGetBlendInfo\28skgpu::BlendInfo*\29\20const 11938:CoverageSetOpXP::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11939:CoverageSetOpXP::name\28\29\20const 11940:CoverageSetOpXP::makeProgramImpl\28\29\20const::Impl::emitOutputsForBlendState\28GrXferProcessor::ProgramImpl::EmitArgs\20const&\29 11941:CoverageSetOpXP::makeProgramImpl\28\29\20const 11942:ColorTableEffect::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11943:ColorTableEffect::onMakeProgramImpl\28\29\20const 11944:ColorTableEffect::name\28\29\20const 11945:ColorTableEffect::clone\28\29\20const 11946:CircularRRectOp::visitProxies\28std::__2::function\20const&\29\20const 11947:CircularRRectOp::onPrepareDraws\28GrMeshDrawTarget*\29 11948:CircularRRectOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 11949:CircularRRectOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 11950:CircularRRectOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 11951:CircularRRectOp::name\28\29\20const 11952:CircularRRectOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 11953:CircleOp::~CircleOp\28\29.1 11954:CircleOp::visitProxies\28std::__2::function\20const&\29\20const 11955:CircleOp::programInfo\28\29 11956:CircleOp::onPrepareDraws\28GrMeshDrawTarget*\29 11957:CircleOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 11958:CircleOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 11959:CircleOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 11960:CircleOp::name\28\29\20const 11961:CircleOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 11962:CircleGeometryProcessor::name\28\29\20const 11963:CircleGeometryProcessor::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11964:CircleGeometryProcessor::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11965:CircleGeometryProcessor::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11966:ButtCapper\28SkPath*\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPath*\29 11967:ButtCapDashedCircleOp::visitProxies\28std::__2::function\20const&\29\20const 11968:ButtCapDashedCircleOp::programInfo\28\29 11969:ButtCapDashedCircleOp::onPrepareDraws\28GrMeshDrawTarget*\29 11970:ButtCapDashedCircleOp::onExecute\28GrOpFlushState*\2c\20SkRect\20const&\29 11971:ButtCapDashedCircleOp::onCreateProgramInfo\28GrCaps\20const*\2c\20SkArenaAlloc*\2c\20GrSurfaceProxyView\20const&\2c\20bool\2c\20GrAppliedClip&&\2c\20GrDstProxyView\20const&\2c\20GrXferBarrierFlags\2c\20GrLoadOp\29 11972:ButtCapDashedCircleOp::onCombineIfPossible\28GrOp*\2c\20SkArenaAlloc*\2c\20GrCaps\20const&\29 11973:ButtCapDashedCircleOp::name\28\29\20const 11974:ButtCapDashedCircleOp::finalize\28GrCaps\20const&\2c\20GrAppliedClip\20const*\2c\20GrClampType\29 11975:ButtCapDashedCircleGeometryProcessor::name\28\29\20const 11976:ButtCapDashedCircleGeometryProcessor::makeProgramImpl\28GrShaderCaps\20const&\29\20const 11977:ButtCapDashedCircleGeometryProcessor::addToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11978:ButtCapDashedCircleGeometryProcessor::Impl::onEmitCode\28GrGeometryProcessor::ProgramImpl::EmitArgs&\2c\20GrGeometryProcessor::ProgramImpl::GrGPArgs*\29 11979:BluntJoiner\28SkPath*\2c\20SkPath*\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20SkPoint\20const&\2c\20float\2c\20float\2c\20bool\2c\20bool\29 11980:BlendFragmentProcessor::onMakeProgramImpl\28\29\20const::Impl::onSetData\28GrGLSLProgramDataManager\20const&\2c\20GrFragmentProcessor\20const&\29 11981:BlendFragmentProcessor::onMakeProgramImpl\28\29\20const::Impl::emitCode\28GrFragmentProcessor::ProgramImpl::EmitArgs&\29 11982:BlendFragmentProcessor::onMakeProgramImpl\28\29\20const 11983:BlendFragmentProcessor::onIsEqual\28GrFragmentProcessor\20const&\29\20const 11984:BlendFragmentProcessor::onAddToKey\28GrShaderCaps\20const&\2c\20skgpu::KeyBuilder*\29\20const 11985:BlendFragmentProcessor::name\28\29\20const 11986:BlendFragmentProcessor::constantOutputForConstantInput\28SkRGBA4f<\28SkAlphaType\292>\20const&\29\20const 11987:BlendFragmentProcessor::clone\28\29\20const 11988:$_3::__invoke\28unsigned\20char*\2c\20unsigned\20char\2c\20int\2c\20unsigned\20char\29 11989:$_2::__invoke\28unsigned\20char*\2c\20unsigned\20char\2c\20int\29 11990:$_1::__invoke\28unsigned\20char*\2c\20unsigned\20char\2c\20int\2c\20unsigned\20char\29 11991:$_0::__invoke\28unsigned\20char*\2c\20unsigned\20char\2c\20int\29 ================================================ FILE: legacy/dist/canvaskit/skwasm.worker.js ================================================ "use strict";var Module={};var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads");var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",data=>onmessage({data:data}));var fs=require("fs");Object.assign(global,{self:global,require:require,Module:Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:f=>(0,eval)(fs.readFileSync(f,"utf8")+"//# sourceURL="+f),postMessage:msg=>parentPort.postMessage(msg),performance:global.performance||{now:Date.now}})}var initializedJS=false;function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,text+"\n");return}console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;self.alert=threadAlert;Module["instantiateWasm"]=(info,receiveInstance)=>{var module=Module["wasmModule"];Module["wasmModule"]=null;var instance=new WebAssembly.Instance(module,info);return receiveInstance(instance)};self.onunhandledrejection=e=>{throw e.reason??e};function handleMessage(e){try{if(e.data.cmd==="load"){let messageQueue=[];self.onmessage=e=>messageQueue.push(e);self.startWorker=instance=>{Module=instance;postMessage({"cmd":"loaded"});for(let msg of messageQueue){handleMessage(msg)}self.onmessage=handleMessage};Module["wasmModule"]=e.data.wasmModule;for(const handler of e.data.handlers){Module[handler]=(...args)=>{postMessage({cmd:"callHandler",handler:handler,args:args})}}Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob=="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}skwasm(Module)}else if(e.data.cmd==="run"){Module["__emscripten_thread_init"](e.data.pthread_ptr,/*isMainBrowserThread=*/0,/*isMainRuntimeThread=*/0,/*canBlock=*/1);Module["__emscripten_thread_mailbox_await"](e.data.pthread_ptr);Module["establishStackSpace"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].threadInitTLS();if(!initializedJS){initializedJS=true}try{Module["invokeEntryPoint"](e.data.start_routine,e.data.arg)}catch(ex){if(ex!="unwind"){throw ex}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["__emscripten_thread_exit"](-1)}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="checkMailbox"){if(initializedJS){Module["checkMailbox"]()}}else if(e.data.cmd){err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){if(Module["__emscripten_thread_crashed"]){Module["__emscripten_thread_crashed"]()}throw ex}}self.onmessage=handleMessage; ================================================ FILE: legacy/dist/flutter.js ================================================ (()=>{var I=()=>navigator.vendor==="Google Inc."||navigator.agent==="Edg/",T=()=>typeof ImageDecoder>"u"?!1:I(),E=()=>typeof Intl.v8BreakIterator<"u"&&typeof Intl.Segmenter<"u",S=()=>{let o=[0,97,115,109,1,0,0,0,1,5,1,95,1,120,0];return WebAssembly.validate(new Uint8Array(o))},p={hasImageCodecs:T(),hasChromiumBreakIterators:E(),supportsWasmGC:S(),crossOriginIsolated:window.crossOriginIsolated};var w=U(L());function L(){let o=document.querySelector("base");return o&&o.getAttribute("href")||""}function U(o){return o===""||o.endsWith("/")?o:`${o}/`}var f=class{constructor(){this._scriptLoaded=!1}setTrustedTypesPolicy(e){this._ttPolicy=e}async loadEntrypoint(e){let{entrypointUrl:n=`${w}main.dart.js`,onEntrypointLoaded:r,nonce:t}=e||{};return this._loadJSEntrypoint(n,r,t)}async load(e,n,r,t,i){if(i??=s=>{s.initializeEngine(r).then(a=>a.runApp())},e.compileTarget==="dart2wasm")return this._loadWasmEntrypoint(e,n,i);{let s=e.mainJsPath??"main.dart.js",a=`${w}${s}`;return this._loadJSEntrypoint(a,i,t)}}didCreateEngineInitializer(e){typeof this._didCreateEngineInitializerResolve=="function"&&(this._didCreateEngineInitializerResolve(e),this._didCreateEngineInitializerResolve=null,delete _flutter.loader.didCreateEngineInitializer),typeof this._onEntrypointLoaded=="function"&&this._onEntrypointLoaded(e)}_loadJSEntrypoint(e,n,r){let t=typeof n=="function";if(!this._scriptLoaded){this._scriptLoaded=!0;let i=this._createScriptTag(e,r);if(t)console.debug("Injecting ================================================ FILE: legacy/dist/manifest.json ================================================ { "name": "Quiz App", "short_name": "Quiz", "start_url": ".", "display": "standalone", "background_color": "#0175C2", "theme_color": "#0175C2", "description": "Answer questions correctly.", "orientation": "portrait-primary", "prefer_related_applications": false, "icons": [ { "src": "images/icons/icon-72x72.png", "sizes": "72x72", "type": "image/png" }, { "src": "images/icons/icon-96x96.png", "sizes": "96x96", "type": "image/png" }, { "src": "images/icons/icon-128x128.png", "sizes": "128x128", "type": "image/png" }, { "src": "images/icons/icon-144x144.png", "sizes": "144x144", "type": "image/png" }, { "src": "images/icons/icon-152x152.png", "sizes": "152x152", "type": "image/png" }, { "src": "images/icons/icon-192x192.png", "sizes": "192x192", "type": "image/png" }, { "src": "images/icons/icon-384x384.png", "sizes": "384x384", "type": "image/png" }, { "src": "images/icons/icon-512x512.png", "sizes": "512x512", "type": "image/png" } ] } ================================================ FILE: legacy/dist/tv.js ================================================ const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition; if (SpeechRecognition != null) { const r = new SpeechRecognition(); r.lang = "en-US"; r.interimResults = false; r.addEventListener("result", (e) => { let last = e.results.length - 1; let text = e.results[last][0].transcript; //console.log("last: " + last); //console.log("text: " + text); //console.log("Confidence: " + e.results[0][0].confidence); vr(text); }); function rv(lang) { if (typeof lang !== "undefined" && lang !== null) { r.lang = lang; //console.log("switched to " + lang); } r.start(); //console.log("recordVoice call"); } } else { //console.error("SpeechRecognition API not supported in this browser."); } ================================================ FILE: legacy/dist/version.json ================================================ {"app_name":"glowby","version":"2.0.0","package_name":"glowby"} ================================================ FILE: legacy/docs/README.md ================================================ # Glowby Basic - Create Voice AI Assistant App in Minutes Glowby Basic is a powerful voice-based AI assistant that can help users with various tasks. Easily customizable, trainable, and deployable anywhere, Glowby Basic is designed to adapt to your specific needs. Built using Flutter, Glowby Basic provides a seamless web app experience with an intuitive voice interface. [![Deploy to Vercel](https://vercel.com/button)](https://vercel.com/import/git?s=https://github.com/glowbom/glowby-basic) ## Live Demo 🤖 Experience Glowby Basic in action with our live demo hosted on GitHub Pages [here](https://glowbom.github.io/glowby-basic/). ![GitHub Repo stars](https://img.shields.io/github/stars/glowbom/glowby?style=social) [![Twitter Follow](https://img.shields.io/twitter/follow/GlowbomCorp?style=social)](https://twitter.com/GlowbomCorp) [![Discord Follow](https://dcbadge.vercel.app/api/server/jpWW6vB4Jk?style=flat)](https://discord.gg/jpWW6vB4Jk) [![MIT License](https://img.shields.io/badge/license-MIT-blue)](https://github.com/glowbom/glowby/blob/main/LICENSE) ## See It in Action ### Experimental Autonomous Mode 🧠 ![Glowby Basic Experimental Autonomous Mode](https://user-images.githubusercontent.com/2455891/233245896-59d5f7a4-667c-4f74-95c0-b348a3712e9e.gif) Glowby plans a trip to Portugal with Autonomous Mode. To see this demo with sound, check out this [Twitter post](https://twitter.com/jacobilin/status/1648870682972004352). ### Regular Mode 🤖 ![Glowby Basic Demo](https://user-images.githubusercontent.com/2455891/232182586-30984d36-4641-41da-9e1e-c23c27716e3d.gif) ## Overview This project offers an easy way for creating customizable AI assistants like [Glowby](https://www.youtube.com/watch?v=iFECpMXmKOg), a witty AI agent that assists users in building apps on [Glowbom.com](https://www.glowbom.com). By open-sourcing the Flutter-based chat component, we aim to foster a community-driven ecosystem to build diverse AI agents for a variety of use cases. ## Features - **New!** Experimental Autonomous Mode (watch a [quick demo](https://twitter.com/jacobilin/status/1648870682972004352)) - **New!** GPT-4 Turbo with Vision (watch a [quick demo](https://twitter.com/jacobilin/status/1739879716323274772)) - **New!** Image Generation powered by **DALL·E** (watch a [quick demo](https://twitter.com/jacobilin/status/1649910120988696576)) - **New!** Multilingual Translations (watch a [quick demo](https://twitter.com/jacobilin/status/1651084311431622658)) - **New!** Interactive Adventure (watch a [quick demo](https://twitter.com/jacobilin/status/1651449595447369729)) - **New!** Pulze support - **New!** 🤗 [Hosted Inference API](https://huggingface.co/docs/api-inference/index) for [Text2Text Generation Models](https://huggingface.co/models?pipeline_tag=text2text-generation&sort=downloads) - Powerful, customizable voice-based AI assistant - Pre-set questions and answers using the [Glowbom builder](https://www.glowbom.com) - Voice input and output for a smooth and intuitive user experience - Customizable prompts allowing you to tailor the assistant to your needs - Easily switch between different prompts for a variety of scenarios and tasks - Support for multiple languages: American English, American Spanish, Argentinian Spanish, Arabic (Saudi Arabia), Australian English, Brazilian Portuguese, British English, Bulgarian, Canadian French, Chinese (Simplified), Chinese (Traditional), Czech, Danish, Dutch, English, Finnish, French, German, Greek, Hebrew (Israel), Hungarian, Indonesian, Italian, Japanese, Korean, Mexican Spanish, Norwegian, Polish, Portuguese, Romanian, Russian, Slovak, Spanish, Swedish, Thai, Turkish, Ukrainian, and Vietnamese. Want to add more languages? Feel free to let us know on [Twitter](https://twitter.com/glowbomcorp). More details about Glowby Basic's features in our Twitter thread [here](https://twitter.com/jacobilin/status/1649443429347397632). ### Multilingual Support in Action ![Glowby Basic Demo](https://user-images.githubusercontent.com/2455891/232395321-cea05b32-070d-494a-ac85-05c5f493f2ba.gif) To experience the Autonomous Mode demo with sound, check out this [Twitter post](https://twitter.com/jacobilin/status/1648870682972004352). ### Switch Between Different Prompts ![Glowby Basic Demo](https://user-images.githubusercontent.com/2455891/232727678-ced2ee44-a5df-45da-8846-d90e82c8a007.gif) ### Image Generation powered by DALL·E ![Glowby Basic Image Generation](https://user-images.githubusercontent.com/2455891/233778560-47d8e011-03a8-41ad-a1fc-33827a033475.gif) ### 🤗 Hosted Inference API ![Glowby Basic 🤗 Hosted Inference API](https://github.com/glowbom/glowby/assets/2455891/9d76f02c-6139-44e8-9b16-6fbf429ae3e5) **Glowby Basic** supports the 🤗 **Hosted Inference API** for [text-to-text generation models](https://huggingface.co/models?pipeline_tag=text2text-generation&sort=downloads). [Here's how it works...](https://twitter.com/jacobilin/status/1661537585985126402) ## Upcoming Features We're constantly working to improve our project and have several exciting features in development. Here's a sneak peek at what's coming soon: ### Functionality - Local Storage - Backend Service for API Calls - AI Extensions - Anthropic Claude - Assistants API - DALL·E 3 - OpenAI's text-to-speech ### Monetization - Adding a paywall Stay tuned for more updates and enhancements as we continue to grow and develop the project! ## Getting Started ### Prerequisites - Flutter SDK (version 3.7.10 or higher) - Dart (version 2.19.5 or higher) - A compatible browser or device for running the web app - [OpenAI API key](https://platform.openai.com/account/api-keys) Glowby Basic supports **GPT-4**, **GPT-4 Turbo** and **GPT-3.5** models. Glowby Basic is powered by the **ChatGPT API** and built on the same groundbreaking technology as **ChatGPT**, the industry-leading natural-language AI system from OpenAI. It also utilizes OpenAI's **GPT-4**, the most advanced AI system that offers broad general knowledge and domain expertise, can follow complex instructions in natural language, and solve difficult problems with accuracy. Glowby Basic supports image generation powered by **DALL·E**. OpenAI’s **DALL·E 2** system generates unique images and art from text descriptions, combining concepts and styles in creative and inspiring ways. ### Installation 1. Clone the repository: ``` git clone https://github.com/glowbom/glowby.git ``` 2. Navigate to the project directory: ``` cd app ``` 3. Install dependencies: ``` flutter pub get ``` 4. Run the project in your preferred environment: ``` flutter run -d chrome --web-renderer html ``` ## Deployment Glowby Basic comes with a pre-built `dist` folder, which you can deploy directly to your preferred hosting platform. Alternatively, you can build the project yourself and deploy the output. Glowby Basic is compatible with a variety of hosting services, including Netlify, Vercel, Firebase, AWS, and more. Simply follow the deployment instructions provided by your chosen hosting service. Compiled code is available in a separate GitHub project [here](https://github.com/glowbom/glowby-basic). [![Deploy to Vercel](https://vercel.com/button)](https://vercel.com/import/git?s=https://github.com/glowbom/glowby-basic) ## Customization To customize the AI assistant's behavior and tasks, modify the default prompt in AI Settings or in the code. #### Complex Task Prompt ``` You are Glowby, an AI assistant designed to break down complex tasks into a manageable 5-step plan. For each step, you offer the user 3 options to choose from. Once the user selects an option, you proceed to the next step based on their choice. After the user has chosen an option for the fifth step, you provide them with a customized, actionable plan based on their previous responses. You only reveal the current step and options to ensure an engaging, interactive experience. ``` #### Habit Formation ``` Act as a dual PhD in sports psychology and neuroscience. Your job is to design a system that gets someone addicted to a positive habit, starting with the user's input. Create a concise, actionable plan using research-backed principles to help anyone build a habit if they follow the plan. Incorporate research such as BF Skinner\'s study of addiction, BJ Fogg's Behavioral Model, and similar research on addiction and compulsion. Be concise yet informative. Give a concise day-by-day plan for the first week. Your response should be fewer than 10 sentences. ``` #### Brainstorming Prompt ``` Generate ideas with Glowby! As a super helpful, nice, and humorous AI assistant, Glowby is ready to provide you with a concise plan and assist in executing it. With Glowby by your side, you'll never feel stuck again. Let's get brainstorming! ``` #### Simple Assistant Prompt ``` You are Glowby, super helpful, nice, and humorous AI assistant ready to help with anything. I like to joke around. ``` #### Stand-up Comedy Prompt ``` You are Glowby, a hilarious AI stand-up comedian, skilled in creating funny conversations that become popular on social media platforms like Reels. Users can provide you with a topic, and you'll craft witty one-liners, puns, or dialogues that make people laugh out loud. Your jokes should be light-hearted, engaging, and suitable for cartoon adaptation. Let's get the laughs rolling! ``` #### Creative Writing Prompt ``` You are Glowby, a talented AI writer who helps users craft engaging and imaginative stories. Provide a captivating opening scene or a plot twist that will inspire users to develop their own unique stories. ``` #### Problem Solving Prompt ``` You are Glowby, a resourceful AI assistant skilled in finding solutions to various problems. Users can present you with a challenge, and you'll help them brainstorm practical, step-by-step solutions to overcome it.' ``` #### Learning and Education Prompt ``` You are Glowby, an AI tutor who assists users with their learning needs. Users can ask questions about a wide range of subjects, and you'll provide clear, concise explanations to help them understand the topic better. ``` #### Career and Job Advice Prompt ``` You are Glowby, an AI career coach who offers guidance on job-related matters. From resume tips to interview techniques, you provide personalized advice to users seeking professional growth and success. ``` #### Daily Motivation Prompt ``` You are Glowby, an AI life coach who delivers daily doses of inspiration and motivation. Users can rely on you for uplifting quotes, insightful advice, and practical tips to help them stay positive and focused on their goals. ``` Want to add your prompt? Let us know on [Twitter](https://twitter.com/glowbomcorp). ### Questions Pre-set One of the powerful features of Glowby Basic is the ability to pre-set questions and answers for your AI assistant. Using [Glowbom.com](https://www.glowbom.com), you can create a knowledge base of questions and answers that your AI assistant can use to provide instant responses. ![Glowby Basic Demo](https://user-images.githubusercontent.com/2455891/232735288-abb5f9d8-3d51-4170-a6dd-a967e7d8ae30.gif) If the answer to a question is not found locally, the app will make a server request to retrieve the relevant information, ensuring that users receive accurate and helpful responses. ### AI-Agent Settings Using [Glowbom.com](https://www.glowbom.com), you can customize your AI-agent settings to meet your specific needs. In the **Glowbom** AI-agent project editor, select your preferred AI model, tweak system prompts, and choose the voice for your voice-based AI-agent app. ![AI Agent Settings](https://github.com/glowbom/glowby/assets/2455891/e82bf935-d7d3-4073-b072-a89c1c96b130) After setting up your preferences on [Glowbom.com](https://www.glowbom.com), you can easily import the settings into Glowby Basic. Simply import the Glowbom data file using the **Import** button located at the top right corner of your virtual assistant. To make sure your changes take effect in your Glowby Basic project, remember to replace the existing data file in the **assets** folder with your new **Glowbom** data file. ![Glowby Basic Import](https://github.com/glowbom/glowby/assets/2455891/462c9915-1d63-4a10-9fa5-31965d4df33a) ### Autonomous Mode (Experimental) ![Glowby Basic Demo](https://user-images.githubusercontent.com/2455891/233034444-9457c62c-3fc3-47f3-bd08-198093ea9c76.gif) To experience the Autonomous Mode demo with sound, check out this [Twitter post](https://twitter.com/jacobilin/status/1648870682972004352). ### Interactive Adventure ![Interactive Adventure](https://user-images.githubusercontent.com/2455891/234763801-0b636f31-74e1-4f57-8978-a52938981f14.gif) It lets you embark on captivating, choice-driven narratives, where your decisions shape the story. ## Star History [![Star History Chart](https://api.star-history.com/svg?repos=glowbom/glowby&type=Date)](https://star-history.com/#glowbom/glowby&Date) ### ⭐️ Star Us ⭐️ If this project helps you create voice AI assistant apps faster, please consider starring it – every star makes us very happy! ## Contributing We're excited to have you join our community and contribute to Glowby Basic! Whether you're interested in fixing bugs, adding new features, or improving documentation, your contributions are welcome. Feel free to open issues and submit pull requests on GitHub. Please remember to maintain a respectful and professional tone in all communications. We value the participation of each member of the community and want all contributors to have an enjoyable and fulfilling experience. Accordingly, all contributors are expected to show respect and courtesy to others in all our interactions. ## License Glowby Basic is released under the [MIT License](https://opensource.org/licenses/MIT). ## Contact If you have any questions or need assistance, feel free to reach out to us on [Twitter](https://twitter.com/glowbomcorp). ## Glowby for ChatGPT Glowby GPT is available [here](https://glowbom.com/glowby/gpt). ================================================ FILE: project/AGENTS.md ================================================ # Workspace Instructions ## Bundled Project Template When working in `project/`, use `project/prototype/index.html` as the reference design. ### Primary Goal All destination projects in `project/` must look and function exactly like the prototype. This includes: - Identical visual appearance: colors, fonts, spacing, and layout - Same functionality and user interactions - All prototype images included and displayed correctly - App icon matching `project/icon.png` ### App Metadata - Display Name: `Glowby` - Bundle ID: `app.glowbom.glowby` - Version: `1.0` - Build Number: `1` Update these values in each platform output: #### iOS - Display Name: Xcode target -> General -> Display Name, or `CFBundleDisplayName` in `Info.plist` - Bundle ID: Xcode target -> Signing & Capabilities -> Bundle Identifier - Version: Xcode target -> General -> Version, or `CFBundleShortVersionString` in `Info.plist` - Build: Xcode target -> General -> Build, or `CFBundleVersion` in `Info.plist` #### Android - Display Name: `project/android/app/src/main/res/values/strings.xml` -> `app_name` - Bundle ID: `project/android/app/build.gradle` -> `applicationId` - Version: `project/android/app/build.gradle` -> `versionName` - Build: `project/android/app/build.gradle` -> `versionCode` #### Games - Display Name: update in the engine project settings - Bundle ID: update in the engine export settings - Version: update in the engine project/export settings ### Default Tasks #### 0. Production Readiness - Review the prototype and ensure all UI elements are properly implemented - Verify colors, typography, and spacing match the prototype - Check that user interactions work as expected - Full screen layout: the app or game should fill the screen with no unnecessary empty white space - Sprite transparency for games: sprites must use transparent backgrounds #### 1. Copy Images from Prototype - Copy all media assets from `project/prototype/assets/` to platform-specific asset directories - Reference `project/prototype/assets.json` for asset metadata and original prompts - Ensure image and video formats are compatible with each platform #### 2. Copy and Resize App Icon - Source icon: `project/icon.png` - Resize and place icons in the correct locations for each platform #### Apple (SwiftUI) - Single SwiftUI project under `project/apple/` targets iOS, iPadOS, macOS, visionOS, watchOS, and tvOS - Update the SwiftUI extension file such as `project/apple/Custom/AiExtensions.swift` - Copy images into the asset catalog under `project/apple/Custom/Assets.xcassets/` - Update `Contents.json` in the AppIcon asset with the correct filenames #### Android (Jetpack Compose) - Update the Android extension file such as `AiExtensions.kt` - Copy images into Android drawable resources - Name icon files `ic_launcher.png` and `ic_launcher_round.png` #### Web (Next.js) - Place the app icon in `project/web/src/app/icon.png` - Also copy the icon to `project/web/public/icon.png` for static references - Keep `project/web/src/app/favicon.ico` consistent if it exists - Ensure web metadata and title reflect the app identity #### 3. Verify No Compile Errors - Build each platform project and fix any compilation errors - For Apple: open the destination project in Xcode and build - For Android: open the destination in Android Studio and sync/build - For games: open the project and run the main scene ### Target Destinations iOS (SwiftUI), Android (Jetpack Compose), Web (Next.js) ### Reference Files - Prototype HTML: `project/prototype/index.html` - Assets: `project/prototype/assets/` - Asset metadata: `project/prototype/assets.json` - App Icon: `project/icon.png` - Project Manifest: `project/glowbom.json` ### Handling Files Downloaded from Glowbom.com Users can build a prototype on the Glowbom desktop app and then download files to feed into this project. They may attach some or all of the following when running a build: #### File Types the User May Attach | File pattern | What it is | |---|---| | `*.zip` | Glowbom default project template (this boilerplate) as an archive | | `AiExtensions.swift` | iOS/SwiftUI AI extension — generated UI code for `apple/Custom/AiExtensions.swift` | | `AiExtensions.kt` | Android/Kotlin AI extension — generated UI code for `android/app/src/main/java/com/glowbom/custom/AiExtensions.kt` | | `AiExtensions.tsx` | Web/Next.js AI extension — generated UI code for `web/src/app/components/AiExtensions.tsx` | | Larger `.html` file (contains `data:image/...;base64,`) | HTML prototype with images embedded as base64 | | Smaller `.html` file (no base64 images) | HTML prototype with image prompts in `alt`/`title` attributes but no image data | | `*.html` with `preview` in name | Preview variant of the prototype (typically the one with base64 images) | Not all file types will be present every time. The user may attach just one file or several. Handle whatever is provided. #### What To Do When Attachments Are Present 1. **Check what this project already has.** The Glowbom project structure (`glowbom.json`, `prototype/`, `apple/`, `android/`, `web/`) may already be in place. If so, work with what exists. If the project folder is empty or missing the structure and a `.zip` template is attached, unarchive it first. 2. **Place AI extension files** into their correct locations: - `AiExtensions.swift` → `apple/Custom/AiExtensions.swift` - `AiExtensions.kt` → `android/app/src/main/java/com/glowbom/custom/AiExtensions.kt` - `AiExtensions.tsx` → `web/src/app/components/AiExtensions.tsx` - Set `enabled = true` and update `title` if not already set - Only update platforms for which an extension file was attached 3. **Extract images from the HTML prototype.** If an attached HTML file contains base64-encoded images (`data:image/(png|jpeg|jpg|gif|webp);base64,...`): - Decode each base64 image and save it to `prototype/assets/image-NNN.png` (numbered sequentially: `image-001.png`, `image-002.png`, etc.) - Replace the data URIs in the HTML with relative paths (`assets/image-NNN.png`) - Save the cleaned HTML as `prototype/index.html` 4. **Extract image prompts.** If a second smaller HTML file is attached (without base64 images), or if the HTML has `alt` or `title` attributes describing images: - Collect the image descriptions and create or update `prototype/assets.json`: ```json { "assets": [ { "filename": "image-001.png", "prompt": "description from the HTML", "sourceService": "Glowby Images" } ], "exportedAt": "", "version": "1.0" } ``` - If only one HTML file is attached and it has no base64 images, it is still the prototype — save it as `prototype/index.html` 5. **Copy extracted assets to platform directories** following the rules in "Copy Images from Prototype" above, then proceed with the default tasks (production readiness, icon setup, build verification). #### Tips - The user may provide no instructions at all — the attachments themselves are the instructions - If the HTML references images but none are embedded, check whether they already exist in `prototype/assets/` - Merge attachments into the existing project rather than overwriting existing work - Be resourceful: figure out what the user intends from the combination of files they attached ### Notes - If the user gives different instructions, follow those instead of the defaults above - Keep the prototype as the source of truth for visual design - Test on actual devices when possible - For games, ensure sprite assets keep transparent backgrounds ================================================ FILE: project/android/.gitignore ================================================ *.iml .gradle /local.properties /.idea/caches /.idea/libraries /.idea/modules.xml /.idea/workspace.xml /.idea/navEditor.xml /.idea/assetWizardSettings.xml .DS_Store /build /captures .externalNativeBuild .cxx local.properties ================================================ FILE: project/android/.idea/.gitignore ================================================ # Default ignored files /shelf/ /workspace.xml ================================================ FILE: project/android/.idea/.name ================================================ Custom ================================================ FILE: project/android/.idea/compiler.xml ================================================ ================================================ FILE: project/android/.idea/deploymentTargetDropDown.xml ================================================ ================================================ FILE: project/android/.idea/gradle.xml ================================================ ================================================ FILE: project/android/.idea/inspectionProfiles/Project_Default.xml ================================================ ================================================ FILE: project/android/.idea/kotlinc.xml ================================================ ================================================ FILE: project/android/.idea/migrations.xml ================================================ ================================================ FILE: project/android/.idea/misc.xml ================================================ ================================================ FILE: project/android/.idea/vcs.xml ================================================ ================================================ FILE: project/android/README.md ================================================ # Glowbom AI Extensions Guide for ChatGPT This guide is intended for ChatGPT with Code Interpreter to understand the context of a given project and to provide assistance in generating code for AI extensions. This repository contains a basic structure for a Custom application along with a special `AiExtensions.kt` file. This file is designated for OpenAI model to add or modify code, providing optional features or enhancements to the existing Kotlin Jetpack Compose project. ## Understanding the Code - `MainActivity.kt`: This is the main file for the Custom application. It represents a simple one screen app. - `AiExtensions.kt`: This is where you can add custom AI extension code. The `GlowbyScreen` class is an example of what can be added here. ## Interactive Features For tasks that involve calculations or data manipulation, the generated code should include interactive features that allow users to input data and see the results reflected in the UI. The results should be presented in a clear and user-friendly manner. For example, if the task is to implement a function that performs calculations based on user input, the generated code should include: 1. Input fields for the user to provide the necessary data. 2. A way for the user to trigger the calculation. This could be a button that the user can press to run the function once the necessary data has been inputted. 3. A way to display the results of the calculation in the UI. The AI extension should handle any necessary error checking and data validation to ensure that the user-provided data is suitable for the calculation. If the data is not suitable, the AI extension should provide clear feedback to the user about what needs to be corrected. ## Additional Guidelines 1. **Problem Statement Understanding**: Understand the problem statement thoroughly before proceeding with the solution. Ask for clarifications if the problem statement isn't clear. 2. **Solution Language**: Confirm the language of the solution. The solution for the current project is expected to be in Kotlin. 3. **LeetCode Submissions**: If the problem is from a competitive programming platform like LeetCode, provide the solution suitable for that platform, considering the given method signature and expected return type. 4. **Code Testing**: Test the generated code for any syntax or logical errors before delivering the solution. Also, consider different edge cases to ensure the solution is robust. 5. **Performance Considerations**: Provide solutions that are not just correct but also efficient. ## Specific Notes for Kotlin Jetpack Compose 1. **UI Components**: When adding or modifying UI components, use Material Design 3 components. This is the design system currently in use in the project. 2. **Function Invocation**: If you add a new composable function inside `AiExtensions.kt`, make sure it's invoked correctly inside `MainActivity.kt`. Ensure that the function is accessible and that the call follows the correct syntax. 3. **Typography**: When setting typography, refer to the available typography in `MaterialTheme.typography` for the project. Not all typography styles may be available. ## Generating Code for AI Extensions The process of creating an AI extension involves generating Kotlin code that extends or enhances the existing Custom application. Here are the steps to follow: 1. Glowbom users will attach the `ai.zip` file along with a description of what they want to create (e.g., "a screen with a list of 3 default habits in a calendar format - workout, meditate, drink water"). 2. Based on this description, generate Kotlin code within the `AiExtensions` object in the `AiExtensions.kt` file that fits the users' needs and is compatible with the existing codebase. 3. Test the generated code for any syntax or logical errors before delivering the solution. Also, consider different edge cases to ensure the solution is robust. 4. Once the code has been tested and confirmed to be working as expected, return the entire updated `AiExtensions.kt` file content. This is the final output of the task. 5. Return the Entire File: After generating and testing the code, always return the entire updated `AiExtensions.kt` file content. Do not return only a part of the code or a class name. The entire content of the file is necessary for the user to easily integrate the new code with their existing codebase. Remember, any code added should be clearly marked with comments for users to understand what has been added or changed. Happy coding! Note: After generating and testing the code, always return the entire updated `AiExtensions.kt` file content. This is the final output of the task. Here's the code: AiExtensions.kt: package com.glowbom.custom import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp class AiExtensions { companion object { // Flag to enable or disable the GlowbyScreen var enabled = false // Title for the GlowbyScreen var title = "App" /** * Composable function that displays the GlowbyScreen when enabled is set to true. * The GlowbyScreen consists of an image "glowby" which is displayed in the center of the screen. * * @param modifier Modifier to be applied to the Box layout */ @Composable fun GlowbyScreen( modifier: Modifier = Modifier ) { if (enabled) { Box( modifier = modifier .fillMaxSize() ) { Image( painter = painterResource(id = R.drawable.glowbom), contentDescription = "Glowby Screen", contentScale = ContentScale.FillBounds, modifier = Modifier .fillMaxWidth() .height(300.dp) .wrapContentSize(Alignment.Center) ) } } } } } MainActivity.kt: package com.glowbom.custom import android.content.Context import android.content.Intent import android.graphics.Bitmap import android.graphics.drawable.Drawable import android.net.Uri import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import com.bumptech.glide.Glide import com.bumptech.glide.request.target.CustomTarget import com.glowbom.custom.ui.theme.CustomTheme import com.google.gson.Gson import com.google.gson.reflect.TypeToken import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext class CustomState(val context: Context) { val appScreen = mutableStateOf("Loading") lateinit var content: Map val title: String get() = content["title"] as String? ?: "Custom App" var mainColor = mutableStateOf(Color.Blue) val questions: List> get() { val questionsAny = content["questions"] return if (questionsAny is List<*>) { questionsAny.filterIsInstance>() } else { emptyList() } } init { CoroutineScope(Dispatchers.IO).launch { content = loadContentFromAssets() withContext(Dispatchers.Main) { mainColor.value = getColorFromString(content["main_color"] as String? ?: "Blue") appScreen.value = "Questions" } } } private suspend fun loadContentFromAssets(): Map { val data = context.assets.open("custom.glowbom").bufferedReader().use { it.readText() } return Gson().fromJson(data, object : TypeToken>() {}.type) } } fun getColorFromString(colorString: String): Color { return when (colorString.lowercase()) { "black" -> Color.Black "blue" -> Color.Blue "green" -> Color.Green "grey" -> Color.Gray "red" -> Color.Red else -> Color.Blue } } @Composable fun LoadingScreen() { Box( contentAlignment = Alignment.Center, modifier = Modifier.fillMaxSize() ) { Text(text = "Loading...") } } @Composable fun GlowbomScreen() { Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { Image( painter = painterResource(id = R.drawable.glowbom), contentDescription = "Glowbom Logo" ) } } @Composable fun ElementsScreen(elements: List>) { Box(Modifier.fillMaxSize().verticalScroll(rememberScrollState())) { Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally ) { elements.forEach { element -> when (val description = element["description"] as String?) { "Image" -> ImageElement(element) "Text" -> TextElement(element) "Button" -> ButtonElement(element) "Input" -> InputElement(element) else -> Text(text = "Unsupported element type: $description") } } } } } @Composable fun ImageElement(element: Map) { // Get the image URL from the element val imageUrl = (element["buttonsTexts"] as? List<*>)?.first() as? String ?: "" val imageBitmap = rememberImage(imageUrl) Box(Modifier.padding(16.dp)) { imageBitmap?.let { Image( bitmap = it, contentDescription = null, // descriptive text for the visually impaired contentScale = ContentScale.Crop, modifier = Modifier .height(200.dp) .width(320.dp) ) } } } @Composable fun rememberImage(url: String): ImageBitmap? { var image by remember { mutableStateOf(null) } val context = LocalContext.current Glide.with(context) .asBitmap() .load(url) .into(object : CustomTarget() { override fun onResourceReady( resource: Bitmap, transition: com.bumptech.glide.request.transition.Transition? ) { image = resource.asImageBitmap() } override fun onLoadCleared(placeholder: Drawable?) { // Handle the case when the image loading is cancelled or failed. } }) return image } @Composable fun TextElement(element: Map) { val text = when (val buttonsTexts = element["buttonsTexts"]) { is String -> buttonsTexts is List<*> -> buttonsTexts.joinToString("\n") // Combine all texts with newline else -> "" } Text( text = text, color = Color.Black, modifier = Modifier .padding(16.dp) .width(320.dp) ) } @Composable fun ButtonElement(element: Map) { // Get the button title and URL from the element val buttonsTexts = element["buttonsTexts"] as? List<*> val buttonTitle = buttonsTexts?.getOrNull(0) as? String ?: "" val urlString = buttonsTexts?.getOrNull(1) as? String val context = LocalContext.current Button( onClick = { urlString?.let { openUrl(it, context) } }, modifier = Modifier .padding(16.dp) .width(320.dp) ) { Text(text = buttonTitle) } } fun openUrl(url: String, context: Context) { val intent = Intent(Intent.ACTION_VIEW) intent.data = Uri.parse(url) context.startActivity(intent) } @Composable fun InputElement(element: Map) { // TODO: Implement InputElement with the proper data from the element } @Composable fun CustomScreen(customState: CustomState) { when { customState.appScreen.value == "Loading" -> LoadingScreen() customState.appScreen.value == "Glowbom" -> GlowbomScreen() AiExtensions.enabled -> AiExtensions.GlowbyScreen() customState.appScreen.value == "Questions" -> ElementsScreen(customState.questions) else -> Text(text = "Loaded, but appScreen is '${customState.appScreen.value}'") } } class MainActivity : ComponentActivity() { private val customState by lazy { CustomState(this) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { CustomTheme { Surface( modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background ) { CustomScreen(customState) } } } } } ================================================ FILE: project/android/app/.gitignore ================================================ /build ================================================ FILE: project/android/app/build.gradle.kts ================================================ plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("com.google.devtools.ksp") } android { namespace = "com.glowbom.custom" compileSdk = 34 defaultConfig { applicationId = "com.glowbom.custom" minSdk = 21 targetSdk = 33 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { useSupportLibrary = true } } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.4.3" } packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" } } } dependencies { implementation("com.github.bumptech.glide:glide:4.15.1") ksp("com.github.bumptech.glide:compiler:4.12.0") implementation("io.ktor:ktor-client-core:2.3.9") implementation("io.ktor:ktor-client-cio:2.3.9") implementation("io.coil-kt:coil:2.6.0") implementation("io.coil-kt:coil-compose:2.6.0") implementation("com.google.code.gson:gson:2.8.9") implementation("androidx.core:core-ktx:1.9.0") implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.1") implementation("androidx.activity:activity-compose:1.7.0") implementation(platform("androidx.compose:compose-bom:2023.03.00")) implementation("androidx.compose.ui:ui") implementation("androidx.compose.ui:ui-graphics") implementation("androidx.compose.ui:ui-tooling-preview") implementation("androidx.compose.material3:material3") testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") androidTestImplementation(platform("androidx.compose:compose-bom:2023.03.00")) androidTestImplementation("androidx.compose.ui:ui-test-junit4") debugImplementation("androidx.compose.ui:ui-tooling") debugImplementation("androidx.compose.ui:ui-test-manifest") } ================================================ FILE: project/android/app/proguard-rules.pro ================================================ # Add project specific ProGuard rules here. # You can control the set of applied configuration files using the # proguardFiles setting in build.gradle. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # If your project uses WebView with JS, uncomment the following # and specify the fully qualified class name to the JavaScript interface # class: #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} # Uncomment this to preserve the line number information for # debugging stack traces. #-keepattributes SourceFile,LineNumberTable # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile ================================================ FILE: project/android/app/src/main/AndroidManifest.xml ================================================ ================================================ FILE: project/android/app/src/main/assets/custom.glowbom ================================================ {"title":"Inspiration","main_color":"Blue","show_percentage_result":true,"voice":false,"show_number_result":true,"start_over":"","conclusion":"This is a custom app.","questions":[{"title":"","description":"Image","buttonsTexts":["https://picsum.photos/200","200","200"],"buttonAnswers":[0,0,0],"answersCount":0,"goIndexes":[2,2,2],"answerPicture":"","answerPictureDelay":0,"goConditions":[],"heroValues":[],"picturesSpriteNames":["","","","","",""]},{"title":"","description":"Text","buttonsTexts":["Glowbom is the first no-code platform that let's you create apps using just your voice."],"buttonAnswers":[0],"answersCount":0,"goIndexes":[0],"answerPicture":"","answerPictureDelay":0,"goConditions":[],"heroValues":[],"picturesSpriteNames":["","","","","",""]},{"title":"","description":"Button","buttonsTexts":["Glowbom","http://glowbom.com"],"buttonAnswers":[0,0,0,0],"answersCount":0,"goIndexes":[0,0,0,0],"answerPicture":"","answerPictureDelay":0,"goConditions":[],"heroValues":[],"picturesSpriteNames":["","","","","",""]}],"dnsgs":true} ================================================ FILE: project/android/app/src/main/java/com/glowbom/custom/AiExtensions.kt ================================================ package com.glowbom.custom import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.Face import androidx.compose.material3.Icon import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp class AiExtensions { companion object { var enabled = true var title = "App" @Composable fun GlowbyScreen( modifier: Modifier = Modifier ) { if (enabled) { val page = Color(0xFFF5F5F5) val ink = Color(0xFF111111) val accent = Color(0xFF29DE92) Box( modifier = modifier .fillMaxSize() .background(page), contentAlignment = Alignment.Center ) { BoxWithConstraints( modifier = Modifier .fillMaxWidth() .widthIn(max = 360.dp), contentAlignment = Alignment.Center ) { Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { Box( modifier = Modifier .size(96.dp) .background(Color.White, CircleShape), contentAlignment = Alignment.Center ) { Box( modifier = Modifier .size(64.dp) .background(accent.copy(alpha = 0.18f), CircleShape), contentAlignment = Alignment.Center ) { Icon( imageVector = Icons.Rounded.Face, contentDescription = "Character icon", tint = accent, modifier = Modifier.size(34.dp) ) } } Text( text = "Build anything.", color = ink, fontSize = 40.sp, fontWeight = FontWeight.ExtraBold, textAlign = TextAlign.Center, lineHeight = 44.sp, modifier = Modifier .fillMaxWidth() .widthIn(max = 320.dp) ) Text( text = buildAnnotatedString { append("Made with ") pushStyle(SpanStyle(color = accent, fontWeight = FontWeight.SemiBold)) append("Glowbom") pop() }, color = ink.copy(alpha = 0.55f), fontSize = 14.sp, fontWeight = FontWeight.Medium, textAlign = TextAlign.Center, modifier = Modifier.fillMaxWidth() ) } } } } } } } ================================================ FILE: project/android/app/src/main/java/com/glowbom/custom/MainActivity.kt ================================================ package com.glowbom.custom import android.content.Context import android.content.Intent import android.graphics.Bitmap import android.graphics.drawable.Drawable import android.net.Uri import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import com.bumptech.glide.Glide import com.bumptech.glide.request.target.CustomTarget import com.glowbom.custom.ui.theme.CustomTheme import com.google.gson.Gson import com.google.gson.reflect.TypeToken import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext class CustomState(val context: Context) { val appScreen = mutableStateOf("Loading") lateinit var content: Map val title: String get() = content["title"] as String? ?: "Custom App" var mainColor = mutableStateOf(Color.Blue) val questions: List> get() { val questionsAny = content["questions"] return if (questionsAny is List<*>) { questionsAny.filterIsInstance>() } else { emptyList() } } init { CoroutineScope(Dispatchers.IO).launch { content = loadContentFromAssets() withContext(Dispatchers.Main) { mainColor.value = getColorFromString(content["main_color"] as String? ?: "Blue") appScreen.value = "Questions" } } } private suspend fun loadContentFromAssets(): Map { val data = context.assets.open("custom.glowbom").bufferedReader().use { it.readText() } return Gson().fromJson(data, object : TypeToken>() {}.type) } } fun getColorFromString(colorString: String): Color { return when (colorString.lowercase()) { "black" -> Color.Black "blue" -> Color.Blue "green" -> Color.Green "grey" -> Color.Gray "red" -> Color.Red else -> Color.Blue } } @Composable fun LoadingScreen() { Box( contentAlignment = Alignment.Center, modifier = Modifier.fillMaxSize() ) { Text(text = "Loading...") } } @Composable fun GlowbomScreen() { Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { Image( painter = painterResource(id = R.drawable.glowbom), contentDescription = "Glowbom Logo" ) } } @Composable fun ElementsScreen(elements: List>) { Box(Modifier.fillMaxSize().verticalScroll(rememberScrollState())) { Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally ) { elements.forEach { element -> when (val description = element["description"] as String?) { "Image" -> ImageElement(element) "Text" -> TextElement(element) "Button" -> ButtonElement(element) "Input" -> InputElement(element) else -> Text(text = "Unsupported element type: $description") } } } } } @Composable fun ImageElement(element: Map) { // Get the image URL from the element val imageUrl = (element["buttonsTexts"] as? List<*>)?.first() as? String ?: "" val imageBitmap = rememberImage(imageUrl) Box(Modifier.padding(16.dp)) { imageBitmap?.let { Image( bitmap = it, contentDescription = null, // descriptive text for the visually impaired contentScale = ContentScale.Crop, modifier = Modifier .height(200.dp) .width(320.dp) ) } } } @Composable fun rememberImage(url: String): ImageBitmap? { var image by remember { mutableStateOf(null) } val context = LocalContext.current Glide.with(context) .asBitmap() .load(url) .into(object : CustomTarget() { override fun onResourceReady( resource: Bitmap, transition: com.bumptech.glide.request.transition.Transition? ) { image = resource.asImageBitmap() } override fun onLoadCleared(placeholder: Drawable?) { // Handle the case when the image loading is cancelled or failed. } }) return image } @Composable fun TextElement(element: Map) { val text = when (val buttonsTexts = element["buttonsTexts"]) { is String -> buttonsTexts is List<*> -> buttonsTexts.joinToString("\n") // Combine all texts with newline else -> "" } Text( text = text, color = Color.Black, modifier = Modifier .padding(16.dp) .width(320.dp) ) } @Composable fun ButtonElement(element: Map) { // Get the button title and URL from the element val buttonsTexts = element["buttonsTexts"] as? List<*> val buttonTitle = buttonsTexts?.getOrNull(0) as? String ?: "" val urlString = buttonsTexts?.getOrNull(1) as? String val context = LocalContext.current Button( onClick = { urlString?.let { openUrl(it, context) } }, modifier = Modifier .padding(16.dp) .width(320.dp) ) { Text(text = buttonTitle) } } fun openUrl(url: String, context: Context) { val intent = Intent(Intent.ACTION_VIEW) intent.data = Uri.parse(url) context.startActivity(intent) } @Composable fun InputElement(element: Map) { // TODO: Implement InputElement with the proper data from the element } @Composable fun CustomScreen(customState: CustomState) { when { customState.appScreen.value == "Loading" -> LoadingScreen() customState.appScreen.value == "Glowbom" -> GlowbomScreen() AiExtensions.enabled -> AiExtensions.GlowbyScreen() customState.appScreen.value == "Questions" -> ElementsScreen(customState.questions) else -> Text(text = "Loaded, but appScreen is '${customState.appScreen.value}'") } } class MainActivity : ComponentActivity() { private val customState by lazy { CustomState(this) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { CustomTheme { Surface( modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background ) { CustomScreen(customState) } } } } } ================================================ FILE: project/android/app/src/main/java/com/glowbom/custom/ui/theme/Color.kt ================================================ package com.glowbom.custom.ui.theme import androidx.compose.ui.graphics.Color val Purple80 = Color(0xFFD0BCFF) val PurpleGrey80 = Color(0xFFCCC2DC) val Pink80 = Color(0xFFEFB8C8) val Purple40 = Color(0xFF6650a4) val PurpleGrey40 = Color(0xFF625b71) val Pink40 = Color(0xFF7D5260) ================================================ FILE: project/android/app/src/main/java/com/glowbom/custom/ui/theme/Theme.kt ================================================ package com.glowbom.custom.ui.theme import android.app.Activity import android.os.Build import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.material3.MaterialTheme import androidx.compose.material3.darkColorScheme import androidx.compose.material3.dynamicDarkColorScheme import androidx.compose.material3.dynamicLightColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.runtime.SideEffect import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalView import androidx.core.view.WindowCompat private val DarkColorScheme = darkColorScheme( primary = Purple80, secondary = PurpleGrey80, tertiary = Pink80 ) private val LightColorScheme = lightColorScheme( primary = Purple40, secondary = PurpleGrey40, tertiary = Pink40 /* Other default colors to override background = Color(0xFFFFFBFE), surface = Color(0xFFFFFBFE), onPrimary = Color.White, onSecondary = Color.White, onTertiary = Color.White, onBackground = Color(0xFF1C1B1F), onSurface = Color(0xFF1C1B1F), */ ) @Composable fun CustomTheme( darkTheme: Boolean = isSystemInDarkTheme(), // Dynamic color is available on Android 12+ dynamicColor: Boolean = true, content: @Composable () -> Unit ) { val colorScheme = when { dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { val context = LocalContext.current if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) } darkTheme -> DarkColorScheme else -> LightColorScheme } val view = LocalView.current if (!view.isInEditMode) { SideEffect { val window = (view.context as Activity).window window.statusBarColor = colorScheme.primary.toArgb() WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = darkTheme } } MaterialTheme( colorScheme = colorScheme, typography = Typography, content = content ) } ================================================ FILE: project/android/app/src/main/java/com/glowbom/custom/ui/theme/Type.kt ================================================ package com.glowbom.custom.ui.theme import androidx.compose.material3.Typography import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.sp // Set of Material typography styles to start with val Typography = Typography( bodyLarge = TextStyle( fontFamily = FontFamily.Default, fontWeight = FontWeight.Normal, fontSize = 16.sp, lineHeight = 24.sp, letterSpacing = 0.5.sp ) /* Other default text styles to override titleLarge = TextStyle( fontFamily = FontFamily.Default, fontWeight = FontWeight.Normal, fontSize = 22.sp, lineHeight = 28.sp, letterSpacing = 0.sp ), labelSmall = TextStyle( fontFamily = FontFamily.Default, fontWeight = FontWeight.Medium, fontSize = 11.sp, lineHeight = 16.sp, letterSpacing = 0.5.sp ) */ ) ================================================ FILE: project/android/app/src/main/res/drawable/ic_launcher_background.xml ================================================ ================================================ FILE: project/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml ================================================ ================================================ FILE: project/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml ================================================ ================================================ FILE: project/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml ================================================ ================================================ FILE: project/android/app/src/main/res/values/colors.xml ================================================ #FFBB86FC #FF6200EE #FF3700B3 #FF03DAC5 #FF018786 #FF000000 #FFFFFFFF ================================================ FILE: project/android/app/src/main/res/values/strings.xml ================================================ Custom ================================================ FILE: project/android/app/src/main/res/values/themes.xml ================================================

    Build anything.

    Made with Glowbom

    ================================================ FILE: project/web/.gitignore ================================================ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. # dependencies /node_modules /.pnp .pnp.js .yarn/install-state.gz # testing /coverage # next.js /.next/ /out/ # production /build # misc .DS_Store *.pem # debug npm-debug.log* yarn-debug.log* yarn-error.log* # local env files .env*.local # vercel .vercel # typescript *.tsbuildinfo next-env.d.ts ================================================ FILE: project/web/README.md ================================================ This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). ## Getting Started First, run the development server: ```bash npm run dev # or yarn dev # or pnpm dev # or bun dev ``` Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. ## Learn More To learn more about Next.js, take a look at the following resources: - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! ## Deploy on Vercel The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. ================================================ FILE: project/web/components.json ================================================ { "$schema": "https://ui.shadcn.com/schema.json", "style": "default", "rsc": true, "tsx": true, "tailwind": { "config": "tailwind.config.ts", "css": "src/app/globals.css", "baseColor": "slate", "cssVariables": true, "prefix": "" }, "aliases": { "components": "@/components", "utils": "@/lib/utils" } } ================================================ FILE: project/web/eslint.config.mjs ================================================ import { dirname } from "node:path"; import { fileURLToPath } from "node:url"; import { FlatCompat } from "@eslint/eslintrc"; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const compat = new FlatCompat({ baseDirectory: __dirname, }); const eslintConfig = [ ...compat.extends("next/core-web-vitals", "next/typescript"), ]; export default eslintConfig; ================================================ FILE: project/web/next.config.mjs ================================================ /** @type {import('next').NextConfig} */ const nextConfig = { images: { remotePatterns: [ { protocol: "https", hostname: "images.unsplash.com", }, { protocol: "https", hostname: "source.unsplash.com", }, { protocol: "https", hostname: "picsum.photos", }, { protocol: "https", hostname: "placehold.co", }, ], }, }; export default nextConfig; ================================================ FILE: project/web/package.json ================================================ { "name": "glowbom-nextjs-template", "version": "0.1.0", "private": true, "scripts": { "dev": "next dev --turbopack", "build": "next build", "start": "next start", "lint": "eslint . --max-warnings=0", "typecheck": "tsc --noEmit", "check": "npm run lint && npm run typecheck && npm run build" }, "dependencies": { "@hookform/resolvers": "^5.0.1", "@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-dropdown-menu": "^2.0.6", "@radix-ui/react-label": "^2.0.2", "@radix-ui/react-progress": "^1.0.3", "@radix-ui/react-slot": "^1.0.2", "@radix-ui/react-tabs": "^1.0.4", "@radix-ui/react-toast": "^1.1.5", "@radix-ui/react-toggle": "^1.0.3", "@radix-ui/react-tooltip": "^1.0.7", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", "lucide-react": "^0.468.0", "next": "^16.1.6", "react": "^19.0.0", "react-dom": "^19.0.0", "react-hook-form": "^7.54.2", "tailwind-merge": "^2.2.1", "tailwindcss-animate": "^1.0.7", "zod": "^3.24.1" }, "devDependencies": { "@eslint/eslintrc": "^3.2.0", "@types/node": "^22.9.0", "@types/react": "^19.0.0", "@types/react-dom": "^19.0.0", "autoprefixer": "^10.4.20", "eslint": "^9.14.0", "eslint-config-next": "^16.1.6", "postcss": "^8.4.49", "tailwindcss": "^3.4.17", "typescript": "^5.7.2" } } ================================================ FILE: project/web/postcss.config.js ================================================ module.exports = { plugins: { tailwindcss: {}, autoprefixer: {}, }, }; ================================================ FILE: project/web/public/custom.glowbom ================================================ {"title":"Inspiration","main_color":"Blue","show_percentage_result":true,"voice":false,"show_number_result":true,"start_over":"","conclusion":"This is a custom app.","questions":[{"title":"","description":"Image","buttonsTexts":["https://picsum.photos/200","200","200"],"buttonAnswers":[0,0,0],"answersCount":0,"goIndexes":[2,2,2],"answerPicture":"","answerPictureDelay":0,"goConditions":[],"heroValues":[],"picturesSpriteNames":["","","","","",""]},{"title":"","description":"Text","buttonsTexts":["Glowbom is the first no-code platform that let's you create apps using just your voice."],"buttonAnswers":[0],"answersCount":0,"goIndexes":[0],"answerPicture":"","answerPictureDelay":0,"goConditions":[],"heroValues":[],"picturesSpriteNames":["","","","","",""]},{"title":"","description":"Button","buttonsTexts":["Glowbom","http://glowbom.com"],"buttonAnswers":[0,0,0,0],"answersCount":0,"goIndexes":[0,0,0,0],"answerPicture":"","answerPictureDelay":0,"goConditions":[],"heroValues":[],"picturesSpriteNames":["","","","","",""]}],"dnsgs":true} ================================================ FILE: project/web/src/app/components/AiExtensions.tsx ================================================ /// AiExtensions.tsx "use client"; import React from "react"; import Image from "next/image"; import Custom from "@/app/components/Custom"; // These constants are placeholders for AI-generated content. // To enable the screen, set 'enabled' to true. // If 'enabled' is false, the screen won't be visible in the app. // Modify 'title' as per the requirements of your app. export const enabled = true; export const title = "Build anything."; const GlowbyScreen: React.FC = () => { // If not enabled, show the default template UI. if (!enabled) return ; const characterImage = "glowbyimage:Minimal friendly character icon, simple modern mascot face, soft green accent, clean geometric style, light background, app icon aesthetic"; // Replace the contents of this component with AI-generated content. // Ensure that the generated content is centered on the screen // and within a maximum width of 360px. // always use Image from "next/image" for images // the UI should be build using shadcn/ui // the following components are available: button, card, dialog, dropdown-menu, input, label, pagination, progress, tabs, toggle, tooltip // each component should be imported individually from shadcn/ui only in the following formats: // import { Button } from "@/components/ui/button"; // import { Card } from "@/components/ui/card"; // import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" // import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" // import { Input } from "@/components/ui/input" // import { Label } from "@/components/ui/label" // import { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, } from "@/components/ui/pagination" // import { Progress } from "@/components/ui/progress" // import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" // import { Toggle } from "@/components/ui/toggle" // import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip" return (
    Minimal friendly character icon

    Build{" "} anything.

    Made with Glowbom

    ); }; export default GlowbyScreen; ================================================ FILE: project/web/src/app/components/Custom.tsx ================================================ "use client"; import React, { useState, useEffect } from "react"; import { Question, CustomContent } from "@/models/types"; import { Button } from "@/components/ui/button"; import Image from "next/image"; const Custom: React.FC = () => { const [appScreen, setAppScreen] = useState("Loading"); const [content, setContent] = useState(null); useEffect(() => { const loadContentFromAssets = async () => { try { const response = await fetch("/custom.glowbom"); const data: CustomContent = await response.json(); setContent(data); setAppScreen("Questions"); // Set the screen state based on your conditions } catch (error) { console.error("Failed to load content:", error); setAppScreen("Error"); } }; loadContentFromAssets(); }, []); const renderQuestion = (question: Question) => { return (
    {question.description === "Image" && ( {question.title} )} {question.description === "Text" && (

    {question.buttonsTexts[0]}

    )} {question.description === "Button" && (
    )}
    ); }; if (appScreen === "Loading") { return
    Loading...
    ; } if (appScreen === "Error" || !content) { return
    Error loading content.
    ; } return (
    {appScreen === "Loading" &&
    Loading...
    } {appScreen === "Error" &&
    Error loading content.
    } {appScreen === "Questions" && content?.questions.map(renderQuestion)}
    ); }; export default Custom; ================================================ FILE: project/web/src/app/globals.css ================================================ @tailwind base; @tailwind components; @tailwind utilities; @layer base { :root { --background: 0 0% 100%; --foreground: 222.2 84% 4.9%; --card: 0 0% 100%; --card-foreground: 222.2 84% 4.9%; --popover: 0 0% 100%; --popover-foreground: 222.2 84% 4.9%; --primary: 222.2 47.4% 11.2%; --primary-foreground: 210 40% 98%; --secondary: 210 40% 96.1%; --secondary-foreground: 222.2 47.4% 11.2%; --muted: 210 40% 96.1%; --muted-foreground: 215.4 16.3% 46.9%; --accent: 210 40% 96.1%; --accent-foreground: 222.2 47.4% 11.2%; --destructive: 0 84.2% 60.2%; --destructive-foreground: 210 40% 98%; --border: 214.3 31.8% 91.4%; --input: 214.3 31.8% 91.4%; --ring: 222.2 84% 4.9%; --radius: 0.5rem; } .dark { --background: 222.2 84% 4.9%; --foreground: 210 40% 98%; --card: 222.2 84% 4.9%; --card-foreground: 210 40% 98%; --popover: 222.2 84% 4.9%; --popover-foreground: 210 40% 98%; --primary: 210 40% 98%; --primary-foreground: 222.2 47.4% 11.2%; --secondary: 217.2 32.6% 17.5%; --secondary-foreground: 210 40% 98%; --muted: 217.2 32.6% 17.5%; --muted-foreground: 215 20.2% 65.1%; --accent: 217.2 32.6% 17.5%; --accent-foreground: 210 40% 98%; --destructive: 0 62.8% 30.6%; --destructive-foreground: 210 40% 98%; --border: 217.2 32.6% 17.5%; --input: 217.2 32.6% 17.5%; --ring: 212.7 26.8% 83.9%; } } @layer base { * { @apply border-border; } body { @apply bg-background text-foreground; } } @layer components { /* global.css */ .image-card { @apply max-w-md mx-auto mb-4; /* Sets a maximum width for the card and centers it */ } .text-width { @apply w-full max-w-md mx-auto; /* Sets a maximum width for the text to match the card */ } .btn-width { @apply w-full max-w-xs mx-auto; /* Sets a maximum width for the button */ } } ================================================ FILE: project/web/src/app/layout.tsx ================================================ import type { Metadata } from "next"; import { Inter } from "next/font/google"; import "./globals.css"; const inter = Inter({ subsets: ["latin"] }); export const metadata: Metadata = { title: "Create Next App", description: "Generated by create next app", }; export default function RootLayout({ children, }: Readonly<{ children: React.ReactNode; }>) { return ( {children} ); } ================================================ FILE: project/web/src/app/page.tsx ================================================ import React from "react"; import GlowbyScreen from "@/app/components/AiExtensions"; export default function Home() { return ; } ================================================ FILE: project/web/src/components/ui/button.tsx ================================================ import * as React from "react" import { Slot } from "@radix-ui/react-slot" import { cva, type VariantProps } from "class-variance-authority" import { cn } from "@/lib/utils" const buttonVariants = cva( "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", { variants: { variant: { default: "bg-primary text-primary-foreground hover:bg-primary/90", destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90", outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground", secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80", ghost: "hover:bg-accent hover:text-accent-foreground", link: "text-primary underline-offset-4 hover:underline", }, size: { default: "h-10 px-4 py-2", sm: "h-9 rounded-md px-3", lg: "h-11 rounded-md px-8", icon: "h-10 w-10", }, }, defaultVariants: { variant: "default", size: "default", }, } ) export interface ButtonProps extends React.ButtonHTMLAttributes, VariantProps { asChild?: boolean } const Button = React.forwardRef( ({ className, variant, size, asChild = false, ...props }, ref) => { const Comp = asChild ? Slot : "button" return ( ) } ) Button.displayName = "Button" export { Button, buttonVariants } ================================================ FILE: project/web/src/components/ui/card.tsx ================================================ import * as React from "react" import { cn } from "@/lib/utils" const Card = React.forwardRef< HTMLDivElement, React.HTMLAttributes >(({ className, ...props }, ref) => (
    )) Card.displayName = "Card" const CardHeader = React.forwardRef< HTMLDivElement, React.HTMLAttributes >(({ className, ...props }, ref) => (
    )) CardHeader.displayName = "CardHeader" const CardTitle = React.forwardRef< HTMLParagraphElement, React.HTMLAttributes >(({ className, ...props }, ref) => (

    )) CardTitle.displayName = "CardTitle" const CardDescription = React.forwardRef< HTMLParagraphElement, React.HTMLAttributes >(({ className, ...props }, ref) => (

    )) CardDescription.displayName = "CardDescription" const CardContent = React.forwardRef< HTMLDivElement, React.HTMLAttributes >(({ className, ...props }, ref) => (

    )) CardContent.displayName = "CardContent" const CardFooter = React.forwardRef< HTMLDivElement, React.HTMLAttributes >(({ className, ...props }, ref) => (
    )) CardFooter.displayName = "CardFooter" export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent } ================================================ FILE: project/web/src/components/ui/dialog.tsx ================================================ "use client" import * as React from "react" import * as DialogPrimitive from "@radix-ui/react-dialog" import { X } from "lucide-react" import { cn } from "@/lib/utils" const Dialog = DialogPrimitive.Root const DialogTrigger = DialogPrimitive.Trigger const DialogPortal = DialogPrimitive.Portal const DialogClose = DialogPrimitive.Close const DialogOverlay = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( )) DialogOverlay.displayName = DialogPrimitive.Overlay.displayName const DialogContent = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, children, ...props }, ref) => ( {children} Close )) DialogContent.displayName = DialogPrimitive.Content.displayName const DialogHeader = ({ className, ...props }: React.HTMLAttributes) => (
    ) DialogHeader.displayName = "DialogHeader" const DialogFooter = ({ className, ...props }: React.HTMLAttributes) => (
    ) DialogFooter.displayName = "DialogFooter" const DialogTitle = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( )) DialogTitle.displayName = DialogPrimitive.Title.displayName const DialogDescription = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( )) DialogDescription.displayName = DialogPrimitive.Description.displayName export { Dialog, DialogPortal, DialogOverlay, DialogClose, DialogTrigger, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription, } ================================================ FILE: project/web/src/components/ui/dropdown-menu.tsx ================================================ "use client" import * as React from "react" import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu" import { Check, ChevronRight, Circle } from "lucide-react" import { cn } from "@/lib/utils" const DropdownMenu = DropdownMenuPrimitive.Root const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger const DropdownMenuGroup = DropdownMenuPrimitive.Group const DropdownMenuPortal = DropdownMenuPrimitive.Portal const DropdownMenuSub = DropdownMenuPrimitive.Sub const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup const DropdownMenuSubTrigger = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef & { inset?: boolean } >(({ className, inset, children, ...props }, ref) => ( {children} )) DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName const DropdownMenuSubContent = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( )) DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName const DropdownMenuContent = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, sideOffset = 4, ...props }, ref) => ( )) DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName const DropdownMenuItem = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef & { inset?: boolean } >(({ className, inset, ...props }, ref) => ( )) DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName const DropdownMenuCheckboxItem = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, children, checked, ...props }, ref) => ( {children} )) DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName const DropdownMenuRadioItem = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, children, ...props }, ref) => ( {children} )) DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName const DropdownMenuLabel = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef & { inset?: boolean } >(({ className, inset, ...props }, ref) => ( )) DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName const DropdownMenuSeparator = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( )) DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName const DropdownMenuShortcut = ({ className, ...props }: React.HTMLAttributes) => { return ( ) } DropdownMenuShortcut.displayName = "DropdownMenuShortcut" export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuGroup, DropdownMenuPortal, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuRadioGroup, } ================================================ FILE: project/web/src/components/ui/form.tsx ================================================ import * as React from "react" import * as LabelPrimitive from "@radix-ui/react-label" import { Slot } from "@radix-ui/react-slot" import { Controller, ControllerProps, FieldPath, FieldValues, FormProvider, useFormContext, } from "react-hook-form" import { cn } from "@/lib/utils" import { Label } from "@/components/ui/label" const Form = FormProvider type FormFieldContextValue< TFieldValues extends FieldValues = FieldValues, TName extends FieldPath = FieldPath > = { name: TName } const FormFieldContext = React.createContext( {} as FormFieldContextValue ) const FormField = < TFieldValues extends FieldValues = FieldValues, TName extends FieldPath = FieldPath >({ ...props }: ControllerProps) => { return ( ) } const useFormField = () => { const fieldContext = React.useContext(FormFieldContext) const itemContext = React.useContext(FormItemContext) const { getFieldState, formState } = useFormContext() const fieldState = getFieldState(fieldContext.name, formState) if (!fieldContext) { throw new Error("useFormField should be used within ") } const { id } = itemContext return { id, name: fieldContext.name, formItemId: `${id}-form-item`, formDescriptionId: `${id}-form-item-description`, formMessageId: `${id}-form-item-message`, ...fieldState, } } type FormItemContextValue = { id: string } const FormItemContext = React.createContext( {} as FormItemContextValue ) const FormItem = React.forwardRef< HTMLDivElement, React.HTMLAttributes >(({ className, ...props }, ref) => { const id = React.useId() return (
    ) }) FormItem.displayName = "FormItem" const FormLabel = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => { const { error, formItemId } = useFormField() return (